- commit
- 2c15b1dec0a0e2a1068a25057e283e25aa39534a
- parent
- 1e0b686425f383e89d5ee0a884b73bef8aaeec63
- author
- Dami <dami.etoile@gmail.com>
| M | openspec/ | 18 | ++++++++++++++++++ |
| M | openspec/ | 10 | +++++----- |
@@ -126,3 +126,21 @@ levels continue to receive the same ordered level records. The layout migration
126126 updates callers that assumed built-ins shared a core sheet range. Imported127127 packs without `manifest.world` remain valid and receive normalized default128128 metadata.129+130+## Verification and designer handoff131+132+Physical keyboard Q/E is handled by the stage action router; gamepad LB/RB and133+two-finger gestures enter through the shared input intent path. The local and134+public world-index browser fixtures exercised Q/E, first/last boundary135+feedback, Core → Crossword → Crate Works → Tidewater order, Workshop PLAY,136+mobile touch, and reduced motion without page errors. Focused map/input tests137+cover world and sheet edges, cursor restoration after removal, independent138+opener locks and completion counts, and stable pack/local progress keys.139+140+The designer accepted the header, strip, world cards, and four-world bundle on141+2026-09-24 in `docs/design-inbox.md`. The separate presentation change has142+been archived. The complete 30-proof sequential world gate, 373-test Node143+suite, production build, and local Gift/Workshop/share browser flow passed144+before public revision 13 at `https://fcbc.n.zip/`. The live145+`game-presentation` and `level-packs` specs contain no obsolete built-in146+sheet-1 grouping rule; this change's merged spec now owns per-pack worlds.@@ -36,7 +36,7 @@
3636 - [x] 3.3 Preserve a cursor per world, choose that cursor or the first available3737 node on entry, and keep proof unlocking and completion counts scoped to the3838 active pack ID.39-- [ ] 3.4 Add focused navigator/progress tests for Q/E, edge traversal,39+- [x] 3.4 Add focused navigator/progress tests for Q/E, edge traversal,4040 boundary no-ops, locked openers, solved counts, undo/restart isolation, and4141 removal of the active imported world.4242 @@ -48,19 +48,19 @@
4848 deduplicate repeated requests within a session and preserve the active node.4949 - [x] 4.3 Add accessible text coverage for world number/name, per-world5050 completion, adjacent-world actions, and card ENTER/return state.51-- [ ] 4.4 Leave final card/header geometry, font fitting, iris animation, and51+- [x] 4.4 Leave final card/header geometry, font fitting, iris animation, and5252 copy to a separate designer-reviewed presentation change; post the seam5353 evidence to `docs/design-inbox.md` before implementing that follow-up.5454 5555 ## 5. Verification and handoff5656 5757 - [x] 5.1 Run the focused catalog, map, navigator, and progress tests.58-- [ ] 5.2 Run the complete Node suite, bundled-world solver gate, production58+- [x] 5.2 Run the complete Node suite, bundled-world solver gate, production5959 build, and desktop/mobile browser checks for INDEX, world switching, locked6060 nodes, Workshop PLAY, and share import.61-- [ ] 5.3 Confirm the map implementation no longer relies on the old paragraph61+- [x] 5.3 Confirm the map implementation no longer relies on the old paragraph6262 that grouped built-ins on sheet 1; update the live `game-presentation` and6363 `level-packs` specs only when implementation is complete.64-- [ ] 5.4 Post navigation and metadata screenshots/logs to both team inboxes,64+- [x] 5.4 Post navigation and metadata screenshots/logs to both team inboxes,6565 obtain designer review for the presentation seam, and record the final6666 world order and pack validation result before archiving this change.