Why
A crash after persisting a reporting checkpoint's replan verdict but before persisting WorkflowPaused leaves the workflow marked running. Recovery currently schedules past this unresolved veto and can skip the remaining graph to completed. DAG-A04 reproduced the durable crash-window state. Closed #322 and #330 fixed live gating; #345 restored recovered text, but this durable disposition gap remains.
Scope
Durable checkpoint disposition and common live/recovery gating. Preserve explicit parent replan/resume behavior and avoid repeatedly pausing for historical verdicts that have already been handled.
Approach
Assign a GPT-5.6-Sol issue after the execution and atomic transition foundation is integrated. Represent or derive an unambiguous persisted acknowledgement boundary, reconstruct unresolved vetoes before dispatch or completion, and share the gate decision between live and recovery paths.
This issue is one independently verifiable repair in the seven-finding DAG audit delivery. The authorized route is SpecGit delivery to dev, a separately tracked promotion to main, then the official release workflow. The integrator reviews each issue patch and records exact-head local and CI evidence before acceptance. Unrelated workspace modifications and deferred database maintenance #531 remain outside this delivery.
Acceptance
Recovering a persisted unhandled replan verdict pauses the workflow with downstream nodes still pending and notifies the parent. Object and JSON-string verdicts behave consistently. A verdict already handled by the parent's valid control transition does not pause again after a later restart. Continue/pass paths and explicit stepping mode remain correct.
The audit baseline is cf5fd26; the DAG runtime tree is identical on dev at 711e7b5. Regression tests must assert corrected public behavior using real DAG state and deterministic boundary stubs.
Why
A crash after persisting a reporting checkpoint's replan verdict but before persisting WorkflowPaused leaves the workflow marked running. Recovery currently schedules past this unresolved veto and can skip the remaining graph to completed. DAG-A04 reproduced the durable crash-window state. Closed #322 and #330 fixed live gating; #345 restored recovered text, but this durable disposition gap remains.
Scope
Durable checkpoint disposition and common live/recovery gating. Preserve explicit parent replan/resume behavior and avoid repeatedly pausing for historical verdicts that have already been handled.
Approach
Assign a GPT-5.6-Sol issue after the execution and atomic transition foundation is integrated. Represent or derive an unambiguous persisted acknowledgement boundary, reconstruct unresolved vetoes before dispatch or completion, and share the gate decision between live and recovery paths.
This issue is one independently verifiable repair in the seven-finding DAG audit delivery. The authorized route is SpecGit delivery to dev, a separately tracked promotion to main, then the official release workflow. The integrator reviews each issue patch and records exact-head local and CI evidence before acceptance. Unrelated workspace modifications and deferred database maintenance #531 remain outside this delivery.
Acceptance
Recovering a persisted unhandled replan verdict pauses the workflow with downstream nodes still pending and notifies the parent. Object and JSON-string verdicts behave consistently. A verdict already handled by the parent's valid control transition does not pause again after a later restart. Continue/pass paths and explicit stepping mode remain correct.
The audit baseline is cf5fd26; the DAG runtime tree is identical on dev at 711e7b5. Regression tests must assert corrected public behavior using real DAG state and deterministic boundary stubs.