The product record is written once, at exit, so a crash or timeout leaves it exactly as it was.
Exits · 3 terminal states
- DONE: judge passes everything, commit fixed images
- EXHAUSTED: still failing at round 3, or planner says nothing is fixable. Commit what passed, rest gave_up
- FORCE_RELEASED: 45 min deadline passed, commit nothing
Guards
- Max 3 rounds: EDITING → SCORING is one round
- 45 min deadline: reconcile sweep runs every 5 min
- Partial round: one judge pass errored, journal nothing, stay on the same iteration