The save system now uses serde_json for serialization, replacing the ~1100-line hand-rolled line-based text encoder/decoder. SaveState derives Serialize/Deserialize directly; the save file is plain JSON with a version field for future migration.
Defense: Player contract saves are the player property — plain, local, never held hostage. The hand-rolled line-based format was a maintenance bottleneck every feature fought; serde+JSON is plain, local, human-readable, and eliminates ~1100 lines of encode/parse code. Legacy save migration deferred per Cameron instruction.