clone

a browser grid puzzle game where you push words around to rewrite the rules of each level

main
miau-is-true / openspec / changes / archive / 2026-09-24-add-world-index-navigation / proposal.md
proposal.md 4.2K rendered
1## Why23The accepted D20 design makes each registered pack a walkable world, but the4current INDEX model still treats bundled packs as one `core` sheet and has no5world identity or world-to-world navigation contract. That leaves registration6order, chapter progress, boundary movement, and imported pack metadata to7incidental catalog behavior.89The short-term goal is a stable world model and navigation seam that the10renderer can consume. It keeps the accepted world card and header treatment11explicit while leaving their final visual implementation to a follow-up design12review.1314## What Changes1516- Give every registered pack one world identity and an ordered chapter range of17 INDEX sheets. A world with more than fifteen proofs continues onto additional18 sheets belonging to that same world; worlds never share a sheet.19- Preserve deterministic registration order: core first, then bundled packs in20 registration order, then imported packs in install order. Remove the current21 special case that groups bundled packs under `core`.22- Define world-aware INDEX navigation: `Q`/`E` (gamepad LB/RB and the touch23 equivalent) switch worlds, and walking off a world's terminal path enters the24 adjacent world's opener. Boundary movement is clamped at the first and last25 world.26- Define per-world progress and active-world identity so completion counts and27 unlock sequencing do not leak between chapters.28- Validate optional `manifest.world` metadata (`glyph`, `tagline`, and the29 allowed property-color `accent`) as a nonblocking W11 authoring note. An30 invalid identity falls back to the first palette glyph, no tagline, and the31 default foreground path while gameplay-field validation remains atomic.32 Expose normalized metadata to INDEX, Workshop, and future world cards.33- Record the accepted world header and first-entry card contract as a34 presentation seam: header data includes world number, name, per-world35 completion, and world strip state; first entry and Workshop PLAY can request36 a world card. Pixel layout, animation timing, and final copy fitting remain37 follow-up presentation work.38- Clarify that the D20 Worlds section supersedes the earlier INDEX paragraph39 that says built-ins share sheet 1. The rule is now one sheet range per pack,40 including built-in packs.4142## Capabilities4344### New Capabilities4546- `world-index-navigation`: world identity, pack-owned INDEX sheet ranges,47 deterministic world order, chapter navigation, progress scoping, and the48 presentation data seam for D20.4950### Modified Capabilities5152- `level-packs`: validated world identity and registration order become part of53 the pack handoff contract.54- `game-presentation`: INDEX consumes a world-aware layout and exposes world55 switching and first-entry card requests without changing simulation state.5657## Dependencies5859- `add-world-authoring-workflow` supplies the reviewed bundled-pack handoff,60 stable pack IDs, registration order, and solver evidence.61- `fix-rule-precedence-and-reading` remains an engine/content prerequisite for62 world packs, but this change does not alter rule evaluation.63- The existing catalog and progress stores remain the persistence boundary;64 this change adds world/chapter keys without changing solved proof IDs.6566## Impact6768- Affected data model: catalog pack records, normalized manifests, INDEX layout,69 navigator state, and world-scoped progress queries.70- Gameplay fields continue to use the existing atomic pack validation path;71 optional world presentation metadata does not weaken those checks.72- Affected input paths: keyboard, gamepad, touch, and path-edge traversal.73- Affected presentation contract: world header/card request data and world strip74 state. The follow-up implementation must preserve fixed integer board75 geometry and existing hit targets.76- No new rule vocabulary, movement semantics, solver behavior, or CommonJS77 execution API is introduced.7879## Deliberately Deferred8081- The exact canvas composition, font fitting, iris timing, and copy for the82 world card/header are left for a separate designer-reviewed implementation83 change. This proposal defines the data and transition seam they consume.84- World-specific custom map layouts remain an authoring extension after the85 default auto layout is correct.