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-consolidate-level-schema-boundary / tasks.md
tasks.md 2.6K rendered
1## 1. Canonical boundary23- [x] 1.1 Inventory current direct engine, CommonJS, share, catalog, and solver4 level fields and write the canonical normalization API and context profiles.5- [x] 1.2 Add a pure level schema module with cloned canonical output, stable6 issue codes/paths, explicit object kinds, uppercase tokens, and explicit7 automaton actions.8- [x] 1.3 Preserve and test the documented legacy shorthand as input-only;9 ensure export and shared encoding emit canonical action objects.10- [x] 1.4 Keep pack-only identity, count, and size limits as explicit profile11 adapters around the shared structural validator.1213## 2. Integrations1415- [x] 2.1 Route `createGame()` through the canonical boundary while preserving16 its current level-labeled error types and standalone fixtures.17- [x] 2.2 Route CommonJS validation/normalization through the boundary while18 preserving `ModValidationError`, source context, and atomic registration.19- [x] 2.3 Route CommonJS export and data-only share encode/decode through the20 canonical boundary and preserve current schema/revision behavior.2122## 3. Verification2324- [x] 3.1 Add parity fixtures for valid data, legacy shorthand, malformed25 coordinates/tokens/actions, duplicate IDs, and source immutability.26- [x] 3.2 Add CommonJS and shared round-trip assertions for canonical gameplay27 data, automata metadata, and first-transition parity.28- [x] 3.3 Run focused engine/mod/share tests, full Node tests, production build,29 world solver, and browser import/share flows.30- [x] 3.4 Run strict OpenSpec validation, document any deferred metadata fields,31 and archive this change only after all adapter and round-trip evidence is32 complete.3334## Verification evidence (2026-09-24)3536- `npm test`: 388 passed, 0 failed after the canonical boundary and conflicting-field follow-up.37- `npm run build`: Vite production build passed, 73 transformed modules.38- `npm run check:worlds`: 30/30 Core, Crossword, Crate Works, Tidewater, and Clockwork proofs solved with no issues or warnings.39- Local browser `tests/browser/world-index.mjs`: desktop/mobile, Workshop PLAY, Q/E, and reduced-motion checks passed without page errors.40- Local browser `tests/browser/share-flow.mjs`: Gift, Workshop, CommonJS import/export, data-only sharing, proof/Win, and mobile checks passed without console errors.41- `openspec validate consolidate-level-schema-boundary --strict --no-interactive`: valid.42- Independent read-only release review found no remaining P0/P1 regression. Unknown future `mechanics`, `channel`, and `leaves` fields intentionally fail as `unsupported-field` until their concrete host contracts land.