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.