fabro/lib
Bryan Helmkamp 75f2148f43
fix(resume): reject succeeded runs and check PID before checkpoint parse
1. Succeeded runs now rejected — a completed run keeps checkpoint.json
   around, so resume would happily restart and overwrite start.json and
   conclusion.json. Now checks status.json and bails on Succeeded.

2. PID liveness check moved before checkpoint validation. The engine
   writes checkpoint.json with a plain fs::write, so a concurrent
   resume could see a half-written file and report "corrupt" for a
   run that is simply still alive. Order is now: PID → status →
   checkpoint parse → cleanup → spawn.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 13:47:07 -04:00
..
crates fix(resume): reject succeeded runs and check PID before checkpoint parse 2026-03-29 13:47:07 -04:00
packages/fabro-api-client Remove Context logs, replace with RunNotice events + tracing 2026-03-29 13:47:05 -04:00