Opus
State write has no `.bak` creation step but recovery path references `memory/topics/fleet-state.json.bak`
- skills/fleet-state/SKILL.md:270-290
- skills/fleet-state/SKILL.md:292
- skills/fleet-state/SKILL.md:39
The recovery branch unconditionally `cp memory/topics/fleet-state.json.bak memory/topics/fleet-state.json` but no step ever creates `.bak`. On the first run, or on any run where `.bak` was deleted, the recovery `cp` fails AND the just-written invalid JSON remains in place. The prose says "Keep one `.bak` rolling" but provides no command to do so — operators / LLMs will follow the code block literally and skip backup creation. Result: a single bad `jq` write irreversibly corrupts fleet-state.json, losing the 12-week history.
Recommendation
Before `mv "$TMP" memory/topics/fleet-state.json`, add `cp memory/topics/fleet-state.json memory/topics/fleet-state.json.bak 2>/dev/null || true`. Also validate `$TMP` with `jq empty` *before* the mv, so the corrupt file is never promoted to canonical in the first place.