| … | … | @@ -9873,6 +10045,48 @@ const makeOrchestrator = Effect.fn("orchestrationV2.Orchestrator.layer")(functio | |
| 10063 | + | ) | |
| 10064 | + | return; | |
| 10065 | + | const progress = delegatedTaskProgress(childControls); | |
| 10066 | + | if (progress.state !== "result_available" || progress.resultRun === undefined) return; | |
🟠 High orchestration-v2/Orchestrator.ts:10066
A completed follow-up task is left unfinalized when another follow-up run is active, so its result transfer and completion notification are delayed until that run ends. handleTerminalRun starts the queued run before calling this function, and delegatedTaskProgress reports working while any unheld run is nonterminal; evaluate each task’s runs independently instead of returning based on the child thread’s aggregate progress.
🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
| 1 | In file @apps/server/src/orchestration-v2/Orchestrator.ts around line 10066: |
| 2 | |
| 3 | A completed follow-up task is left unfinalized when another follow-up run is active, so its result transfer and completion notification are delayed until that run ends. `handleTerminalRun` starts the queued run before calling this function, and `delegatedTaskProgress` reports `working` while any unheld run is nonterminal; evaluate each task’s runs independently instead of returning based on the child thread’s aggregate progress. |
Note
Generated by GPT 6.1 Sol
Fixed by finalizing each requested follow-up from its own runs. The original task still waits for aggregate child work. Recovery and task_status use the same task boundary, including restart continuation checks. Regression coverage verifies that the earlier task notifies its parent while another follow-up remains queued or running; both SQLite and memory recovery paths pass.