1. Contact precedence
- [x] 1.1 Add PUSH-over-STOP collision fixtures proving
ROCK IS STOP AND PUSHmoves while a distinct STOP-only object blocks. - [x] 1.2 Add singleton YOU+DEFEAT fixtures and verify DEFEAT-before-WIN for mixed contacts.
2. Transformation and rule reading
- [x] 2.1 Suppress
X IS Xas a no-op that masksX IS Y, independent of parse order. - [x] 2.2 Implement and test spatial transformation conflict order independent of authored object array order.
- [x] 2.3 Verify one-link noun transformation chains and later-turn behavior.
- [x] 2.4 Implement one-token-per-cell/path stacked parsing, enumerate valid alternatives, allow stacked sentence starts, and add the five worlds fixtures without permissive token combinations.
- [x] 2.5 Bound stacked parser work; reject pathological initial packs and roll back a turn that exceeds the budget.
- [x] 2.6 Make settled snapshot restore idempotent for one-link transformations so solver frontiers do not advance without a turn.
3. Verification and worlds handoff
- [x] 3.1 Run the full Node suite with rule changes, bundled CommonJS mods, browser controls, and Undo coverage.
- [x] 3.2 Run bundled/world solver checks and inspect Crossword shove-the-danger and carry-the-pair outcomes after precedence changes.
- [x] 3.3 Run production build and browser acceptance for contact loss, victory precedence, transformations, and rule ledger output.
- [x] 3.4 Re-run Crossword solver/content checks against the settled stacked-cell grammar and record any level rework separately.
- [x] 3.5 Document author-facing precedence, stacked-cell reading, and parser budget in
docs/.modding.md