§1 — Why

Conservative cleanup never garbage-collects, and no reckon crew command owns removal. Measured on this workstation: 27 leftover worktrees totalling 12 GB under ~/Code/.reckon-worktrees/ (including a nested reckon-worktrees/reckon-worktrees directory of unknown origin), and 270 run-stream directories (129 MB) under the config home (fleet review §8). The ledgers also record one worktree deleted out from under a live run by a coordinator cleanup — the inverse failure, cleanup without a liveness consult.

§2 — Deliverables ✓ landed 2026-08-17

Shipped reckon crew gc, dry-run by default, with disjoint integrated/dirty/unintegrated/live-referenced classification, a live-pointer refusal on every removal path including the vendored cleanup-session, a root nesting guard, and a one-line vendored-script dispatch error (commit 039dfaa, 113 tests green). Dry-run itemized 35 worktrees / 109.007 GiB — the §1 baseline of 27 / 12 GB had drifted — then the reviewed apply reclaimed 5 integrated unclaimed trees (2.563 GiB) and the nested root, leaving 0 integrated candidates. The 17 unintegrated nova trees (~94 GiB) are peer work gc correctly refuses. Full record: §2 landed.

§ Followups

Build crew gc and clear the backlog

All four §2 deliverables. The backlog clearance runs only after the GC's dry-run report has been reviewed — several worktrees may hold unintegrated work, and live runs from other sessions must never be touched.

/reckon-ship crew-workspace-hygiene

done - no followup. All four §2 deliverables demonstrated: crew gc dry-run-first with disjoint classification, live-pointer refusal on every removal path (gc and cleanup-session), root nesting guard plus removal of the nested root, and a one-line vendored-script dispatch error (commit 039dfaa, 113 tests green). Backlog reviewed then cleared: 5 trees / 2.563 GiB reclaimed with 0 integrated candidates remaining; the 17 unintegrated nova trees (~94 GiB) are peer-owned work gc correctly refuses, and run-directory retention finds 0 candidates because the fleet is younger than the 30-day window. Evidence: docs/evidence/archive/crew-workspace-hygiene-landed.html.

cwh-gc-impl landed - commit 039dfaa; gate passed; measure: 113 passed / 0 failed on the named suites, 4 tests added; crew gc dry-run-first with live-pointer refusal on every removal path, root nesting guard, vendored-script dispatch check; wall 430 s; evidence: crew-workspace-hygiene-landed#gc-impl. Backlog dry-run and clearance nodes remain.
cwh-gc-dryrun landed - no commit (operational); gate passed; measure: itemized 35 worktrees / 109.007 GiB (baseline 27 / 12 GB; mass is 17 unintegrated nova trees at ~7 GiB each, refused), 9 integrated eligible, 9 live-referenced, 0 dirty, 337 run dirs with 0 retention candidates at 30 days, 0 trees touched; wall 1042 s; evidence: crew-workspace-hygiene-landed#gc-dryrun. Clearance node remains, scoped after coordinator review.
cwh-gc-clear landed - no commit (operational); gate passed; measure: 5 integrated unclaimed trees removed, 2.563 GiB reclaimed, nested root removed, post-apply integrated candidates 0 in both families, ambix/codex untouched (no apply invoked); 17 unintegrated nova trees (~94 GiB) correctly refused; wall 500 s; evidence: crew-workspace-hygiene-landed#gc-clear. Negative finding recorded: a literal identical-inventory gate is unmeasurable on a shared workstation and was re-grounded on absence-of-invocation evidence.