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 / proposal.md
proposal.md 1.9K source

Why

Crate Works needs pressure plates and gates as a real Sokoban stressor for the engine. The mechanic must make a crate on a plate readable, support words and multiple YOU objects as pressers, and preserve rule-driven transformations of the gate and plate nouns. It also needs to survive the same boundaries as every future mechanic: contacts, Undo, restore, sharing, and solver replay.

What Changes

  • Add channel metadata to authored objects and validate it against the host channel palette.
  • Treat current-noun PLATE and GATE entities as channel-linked circuit members while retaining the authored channel on their stable entity IDs.
  • Make plate pressure occupancy-based and recompute gate openness at the end of each turn after contacts.
  • Make a closed gate an unconditional movement blocker using the prior settled state; never add a synthetic GATE IS STOP rule.
  • Define jammed gates, transformed-away gates, channel isolation, and settled gateChanged/plateChanged events.
  • Preserve channel metadata through reset, Undo, restore, CommonJS export, pack installation, data-only sharing, and solver parity.

The change does not implement switches with edge-triggered toggles, crushing, custom gate predicates, or visual styling beyond the neutral shape marker contract. It assumes the declarative mechanic state foundation in 9e91d42; this change adds gate behavior on that foundation.

Capabilities

New Capabilities

  • channel-linked-gates: occupancy plates, channel linking, unconditional closed-gate blocking, memoryless jam behavior, and mechanic events.

Modified Capabilities

None.

Impact

The engine movement/contact phases, object and mod schemas, normalized pack and sharing paths, settled events, solver fixtures, and board presentation data will change. Existing levels without channel metadata remain unchanged. Gate and plate visuals are consumed by the design-owned renderer after the engine contract is accepted.