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-channel-linked-gates / tasks.md
tasks.md 2.4K source

1. Metadata and data boundaries

  • [ ] 1.1 Add validated channel metadata to normalized object records and the host fixed channel palette.
  • [ ] 1.2 Preserve channels through object() helpers, reset, restore, noun transforms, catalog views, CommonJS export/import, and data-only sharing.
  • [ ] 1.3 Validate duplicate IDs, malformed channels, and channel metadata on unsupported object kinds; add actionable diagnostics for unmatched circuits.
  • [ ] 1.4 Add neutral channel shape mapping as presentation data without property-color coupling.

2. Gate movement and settled projection

  • [ ] 2.1 Add prior-settled gate blocker checks to the shared movement/push planner; closed gates block like STOP regardless of rules.
  • [ ] 2.2 Define current-noun participation and retain authored channel through transforms while clearing inactive gate/plate projections.
  • [ ] 2.3 Recompute plate pressure and gate openness after movement, transforms, automata, and SINK/DEFEAT contacts.
  • [ ] 2.4 Implement memoryless jam openness from final gate-cell occupancy and ensure a gate never crushes or destroys its occupant.
  • [ ] 2.5 Keep plate pressing excluded from the plate entity itself while accepting words, YOU objects, pushed objects, and automata as pressers.

3. Events and state boundaries

  • [ ] 3.1 Emit cloned gateChanged: [{ id, open, jammed }] records for settled projection changes.
  • [ ] 3.2 Emit cloned plateChanged: [{ id, pressed }] records for settled pressure changes, including SINK/DEFEAT release.
  • [ ] 3.3 Add reset, Undo, restore, rejected-turn, and noun-transform fixtures for gate and plate projections.
  • [ ] 3.4 Verify transformed-away and transformed-back gates lose remembered state and recompute from the final board.

4. Solver and world acceptance

  • [ ] 4.1 Register the gate projection with the declarative mechanic codec and reject hidden mutable gate fields.
  • [ ] 4.2 Prove public and fast transition parity for D1 door stop, D2 hand-off, D3 jam, SINK-released plates, and two isolated channels.
  • [ ] 4.3 Prove compact solver identities and shortest routes do not merge distinct object/rule states with different gate projections.
  • [ ] 4.4 Add the accepted Crate Works gate proofs only after the world team's solver gate and design visual review pass.
  • [ ] 4.5 Run the full Node suite, production build, browser regression, and strict OpenSpec validation.