- commit
- 18854fdcfb6aaa4e7c7d3f060e80120ea6e29512
- parent
- 6f8cc4b30da0ebf6ea2cb49540e3dfad1d6fffa1
- author
- Dami <dami.etoile@gmail.com>
| M | docs/ | 6 | ++++++ |
| M | docs/ | 23 | +++++++++++++++++++++++ |
@@ -87,6 +87,12 @@ Remaining work is specific rather than a reason to keep expanding this refactor:
8787 8888 The worlds team's inbox supplied concrete next gates. **W8 was independently reproduced and fixed** in `c3537ca`: SINK could remove the `STOP` word while settled rules still reported `ROCK IS STOP`, blocking the next move. The rule refresh change now reparses after contact removals and passed the exact reproduction, reset/Undo/restore fixtures, all seven Tidewater solver paths, and browser regression flows. Tidewater remains with the world team for an independent recheck before bundling. W11 unknown-predicate validation is next in the agreed content order, followed by W6 precedence and AND parsing and W3 solver throughput. Those require separate specs and differential fixtures. The `createGame()` API and snapshot shape remain compatible so the changes can land one at a time.8989 90+### W6 scalability follow-up91+92+W11 proof-local diagnostics and feature validation are implemented locally, with Gift and Workshop presentation awaiting designer review before the next public revision. W6 now has a strict OpenSpec contract for stacked-cell reading and contact/transform precedence. The parser enumerates every valid one-token-per-cell sentence path in spatial order. It has explicit path and span budgets and an indexed maximal-span pass; an over-budget board fails with a typed error instead of silently dropping rules. The CommonJS loader rejects an over-budget initial board with a structured proof error. During play, rule parsing is part of the turn transaction: an over-budget arrangement rejects the move and restores board, history, move count, indexes, and automata phase. Restore also preserves the prior settled game when a supplied snapshot exceeds the budget.93+94+This closes a new combinatorial risk introduced by stacked alternatives. It does not replace W3's solver state codec: the current breadth-first solver still stores full snapshots and hit the 300,000-state check limit on two Crossword drafts after W6. The worlds team is rechecking those proofs and the Word Lab lesson whose old STOP puzzle now has a direct PUSH route.95+9096 ## Review boundary9197 9298 The concurrent designer controls `docs/design.md` and `docs/design.html`; the world team controls `docs/worlds/`, `mods/worlds/`, and its OpenSpec change. This review does not rewrite those files. Design or level-authoring consequences should be sent through the existing inbox files. The current architecture work retains the public nzip URL and existing mod format.@@ -135,6 +135,29 @@ Automata properties are declared per proof. The same token cannot also be an
135135 object noun in that proof. A custom property declared only in another proof136136 has no behavior here, and its word tile receives a note.137137 138+## Rule precedence and stacked words139+140+These rules make a proof deterministic when several properties, transforms, or141+word tiles meet in one turn. Authors can use them when checking a level by142+hand, and solvers should use the same order.143+144+| Situation | Resolution |145+| --- | --- |146+| One entity has both `PUSH` and `STOP` | `PUSH` takes precedence for that entity. |147+| A cell contains `DEFEAT` and `WIN` contact | Resolve `DEFEAT` first, including a singleton `YOU` entity that also has `DEFEAT`; it is removed before it can win. |148+| A noun has both `X IS X` and `X IS Y` | The identity transform suppresses the other transform for `X`. |149+| Several spatial noun transforms compete | Select the first valid transform by source position, scanning top-to-bottom and then left-to-right. At one source cell, horizontal reads before vertical. |150+| A turn could apply multiple noun transforms to one object | Apply at most one noun-transform link to that object in that turn. |151+| A sentence path crosses a stacked word cell | Select one word from that cell for the path, while retaining every valid alternative sentence. A sentence may begin from a stacked cell. |152+153+The last rule applies independently to each sentence path. Stacking therefore154+does not silently discard a valid reading, but a single path cannot consume two155+words from the same cell.156+157+The engine rejects a proof whose initial stacks exceed its rule-reading158+complexity budget. If movement creates such a stack later, that turn is blocked159+without changing the board or advancing automata.160+138161 ## Bundled teaching packs139162 140163 The repository includes two authored packs in addition to the three core