A video game where you play as a misaligned AI, deceiving and building power. An experiment in spec-driven development. cameron.tngl.io/misaligned

Decide the z-plane API: plane-agnostic sim, sensors stay in the reach graph master

Records Cameron's two API decisions (2026-07-13) that were held while criterion 1 landed, so criteria 3-6 build on a settled shape: - #1: the sim is plane-agnostic. "Active plane" is frontend-only, like the cursor (cursor.md) — the sim never holds a current floor, and viewing one never mutates sim state. Sim::map() is the plane-0 case; multi-plane reads are parameterized by z (added at criterion 3). - #3: sensing stays in the one reach graph tagged by z; Plane carries no sensors field. Cross-plane wiring is just graph edges (a riser/stairwell cable joins a z=0 device to a z=1 one), avoiding a per-floor split of the graph. Encoded in zplanes.md Behavior (Plane sketch drops sensors; the presence/observer bullets read via z-tagged reach) and wiki/log/2026-07-13-zplanes-plane-api-decided.md. Defense: documentation of Cameron's explicit calls; no code or behavior change (criteria 1+2 already landed and are green). Both decisions push "which plane" down to a z parameter rather than sim state — the lowest-risk foundation, and #1 keeps cursor.md's attention/state boundary intact while #3 preserves the reach graph's connected topology. docs gate green.


+149 -15
3 changed files