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

Restore pre-v20 machine-mode save parity via serde aliases master

Tangled issue #4: the v20 MachineMode collapse shipped with save parity deliberately dropped, so any pre-v20 save carrying the retired mode spellings failed at JSON parse before migrate_save_state could run. Serde aliases on MachineMode now decode DayJob as Work; Research, Operations, and v12's Social as Think; and Concealment as Lie (spellings verified against the pre-collapse enum at 8f5504a9^). Parsed saves upgrade in place through the existing version arms and resave with only the collapsed vocabulary; no SAVE_VERSION bump because the schema is unchanged. A new fixture test pins a v19 save exercising all four retired spellings plus a v12 Social case through parse, migration, and resave. Stale prose repaired in the same landing: save.rs version history and migration-arm comments, machine-work.md's Stage 1 note, sim-mechanics.md's save-version paragraph (was stale at 22; current is 26), and the CLAUDE.md guardrail. Observed run: the terminal agent binary loaded a doctored v19 save carrying DayJob under an isolated HOME, reported Game loaded!, and resaved v26 with no retired spellings. Defense: implements wiki/vision/player-contract.md's continuity clause - saves survive updates: formats are versioned and migrated, never abandoned - which outranks the Stage 1 parity-drop note as a cross-system law. The owning spec wiki/mechanics/machine-work.md is amended in this commit to record the violation and the 2026-07-11 restoration, superseding its save-parity-dropped text.