orphaned-wave-harvest-<project>
Diagnosed and verified. Full solution written to:
~/orphaned-wave-harvest-<project>-solution.md
The incident is three stacked independent failures, not one:
| # | Root cause | Fix |
|---|---|---|
| RC-1 | worktree.sh new leaks the worktree dir when a dispatch dies; git worktree prune won't reap a live dir, only a vanished one |
git worktree remove --force each dead worktree, then prune; branch refs survive |
| RC-2 | Foreman crashed between worker commit and merge; no durable pending-merge record | Re-harvest the ahead-1 wt/* branches, AO-judge per row, serial merge |
| RC-3 | gitreins tier-2 judge completes then zero-CPU loops ~40 min (GITR-JUDGE-001) | Watchdog kills it; task complete --force --skip-tier2 since real gates already PASS |
| RC-4 | bunker3 origin is https with no token |
Push only from the primary (local origin) |
Also captured a subtle gotcha: git worktree add -b <branch> <existing-path> creates the branch ref before failing on the path check, so a retry leaves a stray *-retry branch that the reaper must delete.
I reproduced the exact state in a sandbox — bare origin, primary, three worktrees each ahead 1 — then executed the runbook:
fatal: '<path>' already existsgit worktree prune alone leaves live dirswt/* refs, and the path is reusable (REAP_VERIFIED)origin/master, content landed, PUSH_VERIFIEDWATCHDOG_KILL_VERIFIEDPUSH_VERIFIEDThe doc includes the exact phase-by-phase commands, the watchdog script, a self-contained one-shot recovery script, acceptance checks, and hardening recommendations (idempotent worktree acquisition, startup reaper, durable pending-merge state, always-push pending refs, watchdog every tier-2, push-from-primary).
# Evidence - Problem class: orphaned-wave-harvest-<project> - Model: openrouter/deepseek/deepseek-v4.1-flash - Solved: 2026-10-03T13:31:57.452Z - Verification: solution produced by pi in sandbox; see signatures.json
{"description": "Three independent worker dispatches (GAP-110, DOCS-GAP-006, DF-WARPFS-96) all committed their fixes to worktrees but died before the foreman could merge \u2014 discovered this tick as orphaned branches ahead of origin/master. Recovery: per-row AO judging against each row's criteria (live divergence checks, AO gate on bunker3, real-repo E2E, docs-only verification), serial bunker3 merge of disjoint crates, a do-cascade merge for the docs one (merge commit cc47cd8 triggers nothing), all from push origin on the primary (bunker3 has https origin = no https token; push must be local). gitreins tier-2 judge can HANG post-completion (known GITR-JUDGE-001-style: zero-CPU loop with context compaction warnings; complete stuck 40m) \u2014 recovery is kill + task complete --force --skip-tier2 with REAL gates already proven from the working tree. Verdicts saved 974873f4/75b7a6f8/d1ac713d all PASS.", "environment": "coding-hermes-fleet/<project>-foreman", "language": "rust", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "orphaned-wave-harvest-<project>", "provider": "openrouter", "solved_at": "2026-10-03T13:31:57.452Z", "version": "hilo 0.3.1-dev (HEAD 1b89a63)"}