diff --git a/docs/explore-notes/worker-task-pipeline.md b/docs/explore-notes/worker-task-pipeline.md index a6241b0c..3e49c709 100644 --- a/docs/explore-notes/worker-task-pipeline.md +++ b/docs/explore-notes/worker-task-pipeline.md @@ -1,6 +1,6 @@ > **Explore-note — verify before trusting.** Distilled map of a subsystem, not authoritative. -> Last verified against commit `896d4b5` (2026-07-23). -> Drift check: `git log --oneline 896d4b5..HEAD -- src/ClaudeDo.Worker` +> Last verified against commit `58741c2` (2026-08-06). +> Drift check: `git log --oneline 58741c2..HEAD -- src/ClaudeDo.Worker` > Stable structure only (no line numbers). See docs/explore-notes/README.md. # Worker: Task Execution Pipeline @@ -108,7 +108,11 @@ read-only "## Reference files" section. - `TaskStateService` — all task status transitions; guards preconditions; signals queue/hub. **Lifecycle/** (startup recovery) -- `StaleTaskRecovery` — tasks stuck Running after a crash/restart → Failed. +- `StaleTaskRecovery` — tasks stuck Running after a crash/restart → Failed. The underlying + `TaskStateService.RecoverStaleRunningAsync` bulk-flips Running→Failed, then re-runs the same + chain/parent-advance side effects as a normal `FailAsync` (per recovered id, best-effort) so a + crash mid-chain-child or mid-improvement-child doesn't leave a successor blocked forever or a + `WaitingForChildren` parent wedged. - `OrphanRecovery` — dequeues children whose parent is no longer planning (stays attached). - `AttachmentOrphanRecovery` — cleans orphaned attachment files. - `TaskResetService` — manual reset to Idle.