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

zplanes criterion 1: the world is a plane stack (HELD FOR REVIEW) master

Introduces World/Plane (crates/misaligned-core/src/world.rs) and makes Sim own a World in place of the bare `map: GameMap` field, with the basement as plane 0. Every B1 map read goes through the active plane via Sim::map()/map_mut(); internal call sites use self.world.map()/map_mut() (disjoint field borrows), and external callers (save, tests, both frontends) use the accessor. A fresh or loaded run is a one-plane world; the single-plane save is byte-identical, so no save-version bump. Criterion 1 only. Held for review per the large-migration rule — criteria 2-6 (nested Layout, transitions, a second authored plane, per-plane observers, the repeated-per-plane save format) are NOT built and this branch is intentionally not merged. Plane omits the spec's sensors field for now: sensing lives in the reach graph, and relocating it is the criterion-5 observer work. Defense: substrate-preserving — plane 0 IS the old basement map, so all 371 core tests pass unchanged and both frontends build; fmt/clippy/docs gate green. The field became an accessor rather than a second representation (one source of truth), and the save format is unchanged, so no migration is needed yet. The owning spec (zplanes.md) records what landed and what is held.