Symptom
During a multi-step task, the agent starts background workers and leaves checklist items pending or in progress, then ends the turn with a status-only reply promising to continue. Further requests to proceed can produce another acknowledgement rather than execution. The working checklist remains visible, but the root task makes no progress without additional user input.
Expected
A progress update should not silently end execution of an actionable task. Continue independent local work, then collect worker results with a blocking wait when needed. Ask only for information that actually blocks the next step; one blocked branch should not suspend unrelated work.
A genuine status question may receive a concise answer, but must not falsely imply that root execution will continue after the turn has ended.
Suspected cause
src/goal_state.zig implements a completion gate called from the attempt_completion handling in src/agent_tools.zig. Plain final replies appear able to end a turn without equivalent pending-work reconciliation. The exact runtime path still needs confirmation.
Proposed fix / regression coverage
Reconcile actionable checklist work and outstanding workers before accepting a terminal status-only response. Preserve explicit user pause/cancel and genuine blocked states; avoid unconditional retry loops.
Add a scripted behavior regression: start a worker with independent root work still pending, emit a status-only final response, and verify execution continues or clearly reports a real blocker rather than repeatedly promising future work.
Symptom
During a multi-step task, the agent starts background workers and leaves checklist items pending or in progress, then ends the turn with a status-only reply promising to continue. Further requests to proceed can produce another acknowledgement rather than execution. The working checklist remains visible, but the root task makes no progress without additional user input.
Expected
A progress update should not silently end execution of an actionable task. Continue independent local work, then collect worker results with a blocking wait when needed. Ask only for information that actually blocks the next step; one blocked branch should not suspend unrelated work.
A genuine status question may receive a concise answer, but must not falsely imply that root execution will continue after the turn has ended.
Suspected cause
src/goal_state.zigimplements a completion gate called from theattempt_completionhandling insrc/agent_tools.zig. Plain final replies appear able to end a turn without equivalent pending-work reconciliation. The exact runtime path still needs confirmation.Proposed fix / regression coverage
Reconcile actionable checklist work and outstanding workers before accepting a terminal status-only response. Preserve explicit user pause/cancel and genuine blocked states; avoid unconditional retry loops.
Add a scripted behavior regression: start a worker with independent root work still pending, emit a status-only final response, and verify execution continues or clearly reports a real blocker rather than repeatedly promising future work.