- commit
- be2b6dbb88baff29c49162b48337378e65e02312
- parent
- 18854fdcfb6aaa4e7c7d3f060e80120ea6e29512
- author
- Dami <dami.etoile@gmail.com>
| M | openspec/ | 11 | +++++++++++ |
| M | openspec/ | 18 | ++++++++++-------- |
@@ -69,3 +69,14 @@ For each candidate sentence path, the parser SHALL select one word from each sta
6969 #### Scenario: A stacked AND path starts from each valid subject7070 - **WHEN** the path is `ROCK AND [FLAG+IS] IS WIN`7171 - **THEN** the parser includes `ROCK IS WIN` and `FLAG IS WIN` from the valid alternatives and excludes malformed combinations72+73+### Requirement: Stacked rule parsing SHALL have a deterministic complexity limit74+The parser SHALL either return every valid rule and physical sentence span or fail with a typed complexity error before exposing partial results. A pack whose initial board exceeds the limit SHALL report an authored-level validation error. If a played turn would exceed the limit, the engine SHALL reject that turn atomically without advancing moves, history, or automata.75+76+#### Scenario: An authored board exceeds the parser budget77+- **WHEN** a dense stack of words generates more sentence paths or spans than the supported budget78+- **THEN** parsing fails with a typed rule-complexity error and no partial rule set is returned79+80+#### Scenario: A push would exceed the parser budget81+- **WHEN** an accepted push would create a word arrangement above the supported parsing budget82+- **THEN** the turn reports a `rule-complexity` block and restores the exact pre-turn board, move count, undo history, and automata phase@@ -1,18 +1,20 @@
11 ## 1. Contact precedence22 3-- [ ] 1.1 Add PUSH-over-STOP collision fixtures proving `ROCK IS STOP AND PUSH` moves while a distinct STOP-only object blocks.4-- [ ] 1.2 Add singleton YOU+DEFEAT fixtures and verify DEFEAT-before-WIN for mixed contacts.3+- [x] 1.1 Add PUSH-over-STOP collision fixtures proving `ROCK IS STOP AND PUSH` moves while a distinct STOP-only object blocks.4+- [x] 1.2 Add singleton YOU+DEFEAT fixtures and verify DEFEAT-before-WIN for mixed contacts.55 66 ## 2. Transformation and rule reading77 8-- [ ] 2.1 Suppress `X IS X` as a no-op that masks `X IS Y`, independent of parse order.9-- [ ] 2.2 Implement and test spatial transformation conflict order independent of authored object array order.10-- [ ] 2.3 Verify one-link noun transformation chains and later-turn behavior.11-- [ ] 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.8+- [x] 2.1 Suppress `X IS X` as a no-op that masks `X IS Y`, independent of parse order.9+- [x] 2.2 Implement and test spatial transformation conflict order independent of authored object array order.10+- [x] 2.3 Verify one-link noun transformation chains and later-turn behavior.11+- [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.12+- [x] 2.5 Bound stacked parser work; reject pathological initial packs and roll back a turn that exceeds the budget.1213 1314 ## 3. Verification and worlds handoff1415 15-- [ ] 3.1 Run the full Node suite with rule changes, bundled CommonJS mods, browser controls, and Undo coverage.16+- [x] 3.1 Run the full Node suite with rule changes, bundled CommonJS mods, browser controls, and Undo coverage.1617 - [ ] 3.2 Run bundled/world solver checks and inspect Crossword shove-the-danger and carry-the-pair outcomes after precedence changes.17-- [ ] 3.3 Run production build and browser acceptance for contact loss, victory precedence, transformations, and rule ledger output.18+- [x] 3.3 Run production build and browser acceptance for contact loss, victory precedence, transformations, and rule ledger output.1819 - [ ] 3.4 Re-run Crossword solver/content checks against the settled stacked-cell grammar and record any level rework separately.20+- [x] 3.5 Document author-facing precedence, stacked-cell reading, and parser budget in `docs/modding.md`.