Primary finding
State file backup (.bak) is never created before write, making corruption recovery impossible
- skills/fork-release-tracker/SKILL.md:153-170
- skills/fork-release-tracker/SKILL.md:171-172
The persist-state procedure restores `memory/topics/fork-release-state.json.bak` if `jq empty` fails after the write, and the prose claims to 'keep one .bak rolling.' However, no step in the recipe ever creates or rotates that `.bak` file (no `cp memory/topics/fork-release-state.json memory/topics/fork-release-state.json.bak` before the `mv`). On the first corrupt write the `cp` from `.bak` will fail (file doesn't exist), leaving the state file corrupt and unrecoverable — exactly the failure mode this guard claims to handle. The Step 0 bootstrap also never seeds a `.bak`.
Recommendation
Before writing `$TMP`, copy the existing state file to `memory/topics/fork-release-state.json.bak` (e.g., `cp memory/topics/fork-release-state.json memory/topics/fork-release-state.json.bak` immediately before the `jq | mv` sequence). Also seed the `.bak` in Step 0 alongside the initial state file so the first failed write is recoverable.