1. Canonical boundary
- [x] 1.1 Inventory current direct engine, CommonJS, share, catalog, and solver level fields and write the canonical normalization API and context profiles.
- [x] 1.2 Add a pure level schema module with cloned canonical output, stable issue codes/paths, explicit object kinds, uppercase tokens, and explicit automaton actions.
- [x] 1.3 Preserve and test the documented legacy shorthand as input-only; ensure export and shared encoding emit canonical action objects.
- [x] 1.4 Keep pack-only identity, count, and size limits as explicit profile adapters around the shared structural validator.
2. Integrations
- [x] 2.1 Route
createGame()through the canonical boundary while preserving its current level-labeled error types and standalone fixtures. - [x] 2.2 Route CommonJS validation/normalization through the boundary while
preserving
ModValidationError, source context, and atomic registration. - [x] 2.3 Route CommonJS export and data-only share encode/decode through the canonical boundary and preserve current schema/revision behavior.
3. Verification
- [x] 3.1 Add parity fixtures for valid data, legacy shorthand, malformed coordinates/tokens/actions, duplicate IDs, and source immutability.
- [x] 3.2 Add CommonJS and shared round-trip assertions for canonical gameplay data, automata metadata, and first-transition parity.
- [x] 3.3 Run focused engine/mod/share tests, full Node tests, production build, world solver, and browser import/share flows.
- [x] 3.4 Run strict OpenSpec validation, document any deferred metadata fields, and archive this change only after all adapter and round-trip evidence is complete.
Verification evidence (2026-09-24)
npm test: 388 passed, 0 failed after the canonical boundary and conflicting-field follow-up.npm run build: Vite production build passed, 73 transformed modules.npm run check:worlds: 30/30 Core, Crossword, Crate Works, Tidewater, and Clockwork proofs solved with no issues or warnings.- Local browser
tests/: desktop/mobile, Workshop PLAY, Q/E, and reduced-motion checks passed without page errors.browser/ world-index.mjs - Local browser
tests/: Gift, Workshop, CommonJS import/export, data-only sharing, proof/Win, and mobile checks passed without console errors.browser/ share-flow.mjs openspec validate consolidate-level-schema-boundary --strict --no-interactive: valid.- Independent read-only release review found no remaining P0/P1 regression. Unknown future
mechanics,channel, andleavesfields intentionally fail asunsupported-fielduntil their concrete host contracts land.