Description
bmad-loop resume requests rollback of already-committed work when orchestrator dies after successful dev session
Steps to reproduce
- Run
bmad-loop — let it drive a dev story to completion
- Dev session finishes: commit pushed,
sprint-status.yaml updated to done
- Orchestrator process is killed before it processes the
Stop event (crash, OOM, or
signal)
- Run
bmad-loop resume
- Resume emits rollback instruction and treats the session as a failed attempt
Expected behavior
Resume should check sprint-status.yaml before issuing any rollback. If the story status is
done, treat the session as complete and advance — skip rollback entirely.
Actual behavior
Resume reads only state.json (stale — reflects pre-crash state), ignores
sprint-status.yaml, and instructs git reset --hard <baseline>, which would undo
already-pushed commits.
Screenshots
No response
Which area is this for?
Orchestrator / control loop
bmad-loop Version
0.8.1
Which coding CLI are you using?
Claude (claude)
Operating System
Linux
Relevant log output
Diagnostic dump (bmad-loop diagnose)
No response
Confirm
Description
bmad-loop resume requests rollback of already-committed work when orchestrator dies after successful dev session
Steps to reproduce
bmad-loop— let it drive a dev story to completionsprint-status.yamlupdated todoneStopevent (crash, OOM, orsignal)
bmad-loop resumeExpected behavior
Resume should check
sprint-status.yamlbefore issuing any rollback. If the story status isdone, treat the session as complete and advance — skip rollback entirely.Actual behavior
Resume reads only
state.json(stale — reflects pre-crash state), ignoressprint-status.yaml, and instructsgit reset --hard <baseline>, which would undoalready-pushed commits.
Screenshots
No response
Which area is this for?
Orchestrator / control loop
bmad-loop Version
0.8.1
Which coding CLI are you using?
Claude (claude)
Operating System
Linux
Relevant log output
Diagnostic dump (bmad-loop diagnose)
No response
Confirm