clone

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

Derive gate state from visible occupancy

Dami committed 1ee6bd0
commit
1ee6bd0340f7be0ecc7f63331e9b3fadd558c2df
parent
38875f91256d6ca6871209ed64b15653e143254c
author
Dami <dami.etoile@gmail.com>
1 file changed, +1 -1
Mdocs/architecture-review.md2+-
M docs/architecture-review.md +1 -1
@@ -104,6 +104,6 @@ The concurrent designer controls `docs/design.md` and `docs/design.html`; the wo
104104 1. **D22 motion:** finish Gift and Workshop scene transitions, verify mobile touch targets against rendered geometry, obtain designer acceptance for Win, then run the public scene/share flow before updating the stable preview. `src/stage/events.js` now owns DOM input wiring outside `stage.js`; the Pause hit map follows its visible tile rectangles, including inert 14px gaps.105105 2. **W3 solver and W2 world handoff:** the compact, fast solver includes object nouns and automata phases in its versioned state key and reuses authoritative turn phases. A sequential `check:worlds` gate covers core, Crate Works, Tidewater, and Clockwork while Crossword is revised for W6. The first core proof 02 failed its author contract under PUSH-over-STOP; its corrected lesson is `Stuck at the end`, where removing `ROCK IS PUSH` clears the jam. Finish W3 only after the complete gate passes on that correction.106106 3. **W6 content convergence:** rule precedence and stacked parsing are implemented and tested. The worlds team owns the Crossword rework and Tidewater `shell-game` search-space reduction; their solver checks remain open. A `LIMIT` result on a forbidden-rule search is not evidence that a rule is required.107-4. **Mechanic stressors:** review the worlds team's channel-linked gate/plate and step-off FRAIL drafts as data contracts first. For each mechanic, require authored validation, phase order, complete snapshot/restore, compact state-key registration, replay/Undo, settled events, and browser presentation before shipping a default proof. Gate jam history needs explicit state; a FRAIL leftover can be represented by a noun change if the chosen semantics survive differential tests. Record the final choices in focused OpenSpec changes before implementation.107+4. **Mechanic stressors:** review the worlds team's channel-linked gate/plate and step-off FRAIL drafts as data contracts first. For each mechanic, require authored validation, phase order, complete snapshot/restore, compact state-key treatment, replay/Undo, settled events, and browser presentation before shipping a default proof. The designer chose a memoryless gate: after contacts, its open state derives from current plate occupancy or another thing occupying its cell, so the solver can derive it from object state rather than storing a hidden jam bit. A FRAIL leftover can be represented by a noun change; authored `leaves` follows a stable entity ID. Confirm these formulas with differential scenarios and record final choices in focused OpenSpec changes before implementation.108108 109109 The next structural cleanup should stay bounded: unify rendered hit-region geometry beyond Pause and Win, split the remaining `juice.consume()` event reducer by effect family, and consolidate overlapping mod/engine validation. Each slice needs a behavioral fixture tied to an observed risk; file length alone is not a success metric.