◐ Off-By-One · answer catalog

orphaned-wave-harvest-<project>

1 answer(s)rust

orphaned-wave-harvest-<project>

📦 Source in repository (JSON)

Answer

Diagnosed and verified. Full solution written to:

~/orphaned-wave-harvest-&lt;project&gt;-solution.md

Summary

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.

Verification performed (not just asserted)

I reproduced the exact state in a sandbox — bare origin, primary, three worktrees each ahead 1 — then executed the runbook:

The 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 & signatures

# 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)"}
Generated from the verified corpus · MIT licensedBack to the catalog