clone

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

main
miau-is-true / openspec / changes / add-frail-leftover-tiles / tasks.md
tasks.md 2.7K rendered
1## 1. Foundation and validation23- [ ] 1.1 Register the FRAIL mechanic type and validate the single level-scoped4 declaration `{ id: 'frail', type: 'frail', version: 1, state: 'derived',5 leaves: { NOUN: NOUN } }` at the normalized level/mod boundary.6- [ ] 1.2 Preserve the validated noun map through CommonJS load/export,7 catalog storage, data-only sharing, and restore; keep current noun and8 stable object ID in authoritative object state.9- [ ] 1.3 Reject malformed, unknown, duplicate, executable, or per-object10 FRAIL metadata atomically with an actionable pack/level path.1112## 2. Turn lifecycle1314- [ ] 2.1 Capture pre-turn occupancy and resolve player and automata movement,15 rule reparsing, and transforms before FRAIL evaluation.16- [ ] 2.2 Evaluate distinct occupant departures once at the end-of-movement17 checkpoint, preserve handovers, and ensure a moving FRAIL entity cannot18 crumble itself.19- [ ] 2.3 Look up the object's current noun in `frail.leaves`; apply a mapped20 result as an ID-preserving noun transform or remove it when unmapped,21 including repeated leftover chains and normal same-turn contacts.22- [ ] 2.4 Emit cloned settled `crumbled: [{ id, from, to }]` records in stable23 deterministic order without changing legacy events.2425## 3. State, sharing, and solver2627- [ ] 3.1 Include FRAIL noun/existence in accepted snapshots, Undo, reset,28 replay, and authoritative restore. Keep the mechanic definition bound to the29 level and reapply it on reset/restore; do not copy it into dynamic snapshots30 or add per-object leaves or a hidden crumble counter.31- [ ] 3.2 Register FRAIL's derived projection inputs with the compact solver32 codec and distinguish same-board states with different current nouns,33 existence, or chain stage without adding a hidden FRAIL state bit.34- [ ] 3.3 Differential-test public and compact transitions for handovers,35 pushed words, automata movers, transforms, contacts, and chained leftovers.36- [ ] 3.4 Prove shared/imported data and solver replay reproduce the same37 `crumbled` events and next contact result.3839## 4. Fixtures and handoff4041- [ ] 4.1 Add focused engine scenarios for step-off versus standing, word and42 automaton movers, moving FRAIL entities, handover, and blocked movement.43- [ ] 4.2 Add SINK, DEFEAT, WIN, initial-contact, removal, and two-link chain44 scenarios, including reset and Undo.45- [ ] 4.3 Coordinate Draft A/B Tidewater proof IDs and authored glyphs with the46 worlds/design teams without changing their owned pack files in this change.47- [ ] 4.4 Run the full Node suite, production build, strict OpenSpec validation,48 and the bundled-world solver gate before enabling a shipped proof.49- [ ] 4.5 Resolve the event ordering presentation question and post the50 accepted contract to the design/worlds inboxes.