fix(ui): OP8 round-2 residuals — inert-row conflict exclusion, DAT-default display, injectivity pin

R1 (code half): store-only rows (MappedAction null) are excluded from the
conflict universe — they never reach the InputDispatcher, so a chord they
display cannot collide; counting them made the ten Camera Alternate
arrow-key defaults trip a false N-way confirm on any arrow rebind. Mapped
cross-context sharing (retail's ConflictingMaps — the combat cluster)
remains deferred as ISSUES #373 with the OP8 gate script now carrying the
explicit do-not-file warning. SHOULD: unmapped rows with no persisted
chords display their DAT defaults (retail shows the arrow keys; blank
read as 'unbound') — display-only, the store is untouched until the row
itself is edited; the independence test updated to pin the new display
semantics while keeping its storage-isolation asserts. Injectivity of
RetailActionIdentityTable is now test-enforced (load-bearing for both M1's
per-row activation capture and M2's de-alias). R2: AP-203 addendum names
the ten same-verb-sibling-live rows and the conflict exclusion.

Full Release suite in this worktree: 13,155 passed / 4 skips / 0 failed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-11 12:37:45 +02:00
parent b1968ce980
commit f1d502072e
4 changed files with 66 additions and 6 deletions

View file

@ -855,6 +855,22 @@ Three live runs against local ACE (`127.0.0.1:9000`, `+Acdream`,
## OP8 — Configure Keyboard
**Known, tracked behaviors — do NOT file as defects (read before testing):**
- **Shared combat keys prompt a false conflict (ISSUES #373).** Retail
legitimately shares Insert/Delete/End/PageUp/PageDown across the three
combat contexts (Melee/Missile/Magic) via the DAT's `ConflictingMaps`
table, which acdream does not read yet. Rebinding any of those keys — or
any chord one combat context already holds — will show a conflict
confirmation retail would not. DECLINE the prompt and move on; the
binding you declined stays untouched. Report only if declining CHANGES a
binding anyway.
- **Camera Alternate Controls rows are display/store-only (AP-203).** They
show retail's authored arrow-key defaults and accept edits, but do not
drive the camera — only the primary Camera scheme is live. Verify they
RENDER (arrow keys visible); do not expect camera behavior from them.
The screen is retail's own separate full-screen window (`gmKeyboardUI`,
LayoutDesc `0x21000009`), NOT a fifth tab of the Options panel. It opens
from the Gameplay tab's Configure Keyboard button — **the OP3 INERT