Sub-agent completion polling fails with "unknown job" during multi-agent task, halting generation mid-task #4696
Replies: 2 comments 1 reply
|
The rc.2 source clarifies one important point:
The UUID in the report is therefore not a canonical rc.2 Job Registry receipt. For partial output, the safe recovery is to freeze exact acknowledgements, reconcile files against the planned deliverable manifest, rerun only missing/invalid units to disjoint paths, and block final assembly until every required input passes. I documented the route table and recovery checklist here: https://sandbaseai.github.io/deepseek-harness-handbook/subagent-unknown-job.html Disclosure: I maintain the SandBase community handbook. |
|
@denial123789's identity analysis is right, and I want to add the half that explains why the run stalled rather than just errored — because your model's reasoning trace is the most important evidence in this report and it has been read as a mistake when it was not. The model did exactly what DSH told it to do. Its trace says: "job_output is for background bash jobs, not for sub-agents. The sub-agent completion will arrive as a runtime notification. I'll end the turn and wait." That is not the model guessing — it is repeating DSH's own tool description back at you.
So after the wrong-identity error, the model recovered correctly, ended the turn, and waited for a promise the tool had made. Then nothing arrived. That second half is the real bug in this report, and it is separate from the And the mechanism does exist, which narrows it usefully. The continuation manager is documented as owning "settlement delivery to the parent", and the delivery lands in the parent's inbox — the file states plainly that "The Agent inbox is the only turn queue." So a settled child should have woken your parent with a new turn, with or without a goal armed. One concrete thing to check, which splits this into two very different bugs. That same file logs a specific warning when delivery fails: Grep your logs for
Either way it is worth adding to the report, because right now the title says "polling fails with unknown job" and the actual stall may have nothing to do with polling. Related, and worth cross-linking: #4715 and #4664 are the same seam from the opposite direction — there, a parent that goes idle with outstanding work gets woken too aggressively (the goal-round driver re-arms on every idle, producing empty rounds). Yours is a parent that goes idle with outstanding work and is never woken. The continuation source even documents the window in between: On your "Expected" section: I would add a third option to your two. Even with delivery fixed, a child that fails or never settles currently produces no user-visible signal — the chat just stops. #4666 is asking for the adjacent piece ( Interest disclosure: I maintain a third-party DSH plugin and ship subagent functionality through it, so I am not a neutral party on this topic — which is why I am pointing only at DSH's own source and your own trace. The native subagent runtime is DSH's; we do not touch it and could not fix any of this. |
Uh oh!
There was an error while loading. Please reload this page.
Environment:
@deepseek-ai/dshversion0.1.1-rc.2(latest)Qwen/Qwen3.8-27B)npx @deepseek-ai/dsh web --no-openSteps to reproduce:
{ "job_id": "7576042c-f6d8-47e9-a158-120eb8a4b245", "wait": true, "timeout_ms": 300000 }build.sh) never runs, and at least one chapter (chapter 2) and one chapter's second half (ch05 part b) are simply missing, with no error surfaced to the user beyond the stalled UI.Expected: either the correct tool/mechanism is used to await sub-agent completion (the model's own reasoning trace shows it recognized the mismatch: "job_output is for background bash jobs, not for sub-agents. The sub-agent completion will arrive as a runtime notification. I'll end the turn and wait." — but then nothing further happened), or a failed/missing sub-agent should be retried or surfaced as a visible error rather than silently stalling the whole task.
Actual: partial output (~21k words of real content) with no indication to the user that anything failed — the chat just stops.
All reactions