clone

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

Record world and mechanic state integration boundaries

Dami committed 69851e2
commit
69851e2326f7a91642966f727f4ffeb374cba831
parent
463653dbaf7bfc8e1cc4e6d2bf125b85c9bf2f83
author
Dami <dami.etoile@gmail.com>
1 file changed, +8 -0
Mdocs/architecture-review.md8++++++++
M docs/architecture-review.md +8 -0
@@ -118,3 +118,11 @@ The three active OpenSpec changes (`add-declarative-mechanic-state-contract`, `a
118118 4. Implement FRAIL departures and stable-ID `leaves` through the same lifecycle. Its future is carried by entity noun, existence, position, and authored metadata. Check handovers, word/automaton departures, SINK contacts, Undo, share, and solver replay against Tidewater fixtures.119119 120120 Gate and FRAIL presentation and default-world bundling follow differential engine fixtures and designer review. This order keeps mechanic-specific branches out of the turn coordinator and preserves the single authoritative transition path.121+122+### World integration and state boundary update123+124+2026-09-24. The first 23-proof gate and the revised seven-proof Crossword check passed on settled W6/W8 semantics. The authored world packs and bibles are tracked in Git, and `manifest.rules: 2` now distinguishes the current rule semantics from legacy imported packs. D20 changes the runtime catalog shape: each pack owns a world and its own INDEX sheets, with `packId/levelId` progress and registration order as stable identity. The map model now represents these chapters; input, cards, and public bundling remain separate acceptance slices. Clockwork stays outside the default bundle until W12 custom-property presentation is implemented and reviewed.125+126+The mechanic foundation was narrowed after the designer chose memoryless gates and stable-ID FRAIL leftovers. These are **derived** mechanics: gate openness, jams, and pressed plates recompute from settled objects and current nouns; FRAIL existence and noun live in `state.objects`, while `leaves` is static authored metadata. Persisting extra `open`, `jammed`, or `crumbled` bits would duplicate board truth and could diverge across Undo, restore, and solver replay. A host-owned lifecycle adapter still provides phase order, validation, and settled events. Only a future mechanic with real memory needs `state.mechanics` scalars and explicit compact-codec registration. The three active mechanic OpenSpec changes now state this split and require public/fast and restore parity without hidden bits.127+128+The next integration gates are concrete: complete D20 world input/card behavior, validate optional world identity as a nonblocking note with a safe fallback, then bundle core, Crossword, Crate Works, and Tidewater in the approved order. Run the sequential world solver, full Node/build suite, and desktop/mobile Gift→INDEX→Proof→Win browser flow before updating the public alias. The older Garden Basics and Word Lab packs remain importable examples; Word Lab's W6 lesson copy is being corrected so its direct PUSH route matches its hint.