Metadata
| Status | open ‖ paused |
|---|---|
| Created | 2026-07-26T06:36:46.052749585+00:00 |
| Started | 2026-07-26T07:17:30.941002931+00:00 |
| Completed | 2026-07-26T07:17:53.544327205+00:00 |
| Tags | bug, dispatcher, worktree |
| Tokens | 0 in / 0 out |
Description
Objective
Dead agents (process gone, status dead) still "own" their isolated worktree in the registry for hours, so any new spawn for that task fails with "isolated worktree X is owned by live attempt agent-Y (status Working); no process launched" — which then trips the spawn circuit breaker. Observed: agent-766/769 (fix-decouple-dispatch), agent-758 (fix-evaluation-satellite), agent-728 (repair-missing-agency-reasoning) dead 3-9h yet still blocking. wg agents kill --force just says "already dead — will be reconciled" but the worktree lock is never released.
Work
- The reaper must release worktree ownership promptly when an agent process is dead (well within reaper_grace_seconds), not leave it "live."
- A dead owner must not block a new spawn; spawn should be able to reclaim/recreate the worktree when the owning attempt is dead.
wg agents kill --forceon an already-dead agent should release its worktree lock immediately.
Validation
- Killing an agent frees its worktree within reaper_grace_seconds; a retry/spawn for that task succeeds without "worktree owned by live attempt."
- A dead owner never blocks a new spawn.
-
wg agents kill --forceon a dead agent releases the worktree lock.
Reference
This session: dead agents 766/769/758/728 blocked spawns for hours; required reaper wait + retry + breaker surgery.
Depends on
- (none)
Required by
Log
- 2026-07-26T06:36:46.040981860+00:00 Task paused
- 2026-07-26T06:37:09.021306910+00:00 Task published
- 2026-07-26T07:17:31.011993361+00:00 Spawned by coordinator --executor pi --model zai:glm-5.2 --isolation required-worktree
- 2026-07-26T07:17:53.544332166+00:00 Task pending required evaluation gate (agent reported done; awaiting exact attempt-bound `.flip-*`/`.evaluate-*` verdicts)
- 2026-07-26T07:18:14.610484392+00:00 Pinned historical PendingEval as a required gate at evaluator threshold 0.70
- 2026-07-26T07:18:19.991499804+00:00 Pinned historical PendingEval as a required gate at evaluator threshold 0.70
- 2026-07-26T07:18:39.765689040+00:00 Pinned historical PendingEval as a required gate at evaluator threshold 0.70
- 2026-07-26T07:18:44.712303922+00:00 Pinned historical PendingEval as a required gate at evaluator threshold 0.70
- 2026-07-26T07:19:03.247533270+00:00 Pinned historical PendingEval as a required gate at evaluator threshold 0.70
- 2026-07-26T07:19:08.234105139+00:00 Pinned historical PendingEval as a required gate at evaluator threshold 0.70
- 2026-07-26T07:19:23.899565936+00:00 Pinned historical PendingEval as a required gate at evaluator threshold 0.70
- 2026-07-26T07:28:04.759761848+00:00 Pinned historical PendingEval as a required gate at evaluator threshold 0.70
- 2026-07-26T07:57:06.580084556+00:00 Pinned historical PendingEval as a required gate at evaluator threshold 0.70
- 2026-07-26T08:14:35.860992253+00:00 Task reset for retry from pending-eval/failed-pending-eval (stuck evaluation gate) (attempt #1) — reason: Operator recovery: clear legacy pending-eval hold with the newly sanctioned CLI; keep paused until reliability review.
- 2026-07-26T08:14:35.861002533+00:00 Cleared stuck evaluation gate via `wg retry` — a fresh attempt will be minted; no graph.jsonl edit required.
- 2026-07-26T08:14:35.861024814+00:00 Minted evaluation pipeline evalp-02302bf62cae63092773e54f for source attempt 2 (resume-in-place retry)
- 2026-07-26T08:14:35.913541269+00:00 Task paused