Crew Workspace Hygiene — cumulative execution record
One anchor per landed node. Each entry records the commit, the gate measure as executed, the tests, and anything negative found on the way. The evergreen plan holds the design; this record holds what actually happened.
GC surface (crew gc, live-pointer consult, nesting guard, vendored-script check)
Commit 039dfaa (2026-08-17, worker codex-a, wall 430 s,
481 insertions / 4 deletions over reckon/crew.py, reckon/cli.py,
skills/reckon-ship/scripts/worktree_fleet.py and three test files;
fast-forwarded).
- crew gc, dry-run by default. Classifies managed worktrees into
disjoint integrated / dirty / unintegrated / live-referenced counts without mutation;
--applyremoves only clean integrated trees and rechecks live claims immediately before each removal. - Live-pointer consult on every removal path. A pointer in a
non-terminal phase refuses both
crew gcand the vendoredcleanup-session, even when its recorded pid is gone — the recorded worktree-deleted-under-a-live-run scenario now refuses under test. - Root nesting guard. Dispatch rejects a second
reckon-worktreeslevel under the worktree root. - Vendored-script check. Dispatch into a repo missing the vendored
fleet script fails with a one-line error naming
reckon syncas the fix.
Tests: 4 added, 1 cleanup regression strengthened; assigned suites 113 passed, 0 failed;
ruff clean on all six changed paths. Logs:
~/.config/reckon/crew/runs/r-20260817T140135508200-cwh-gc-impl/.
Backlog dry-run (itemization of the full worktree root and run directories)
Operational node, no commit (2026-08-17, worker codex-a, wall 1042 s; 4/4 repo-family
gc commands exited 0; before/after git worktree list proved 0 trees touched).
Report: ~/.config/reckon/crew/runs/r-20260817T142255561525-cwh-gc-dryrun/crew-gc-dryrun-report.md
(+ machine-readable JSON and per-tree byte measures).
- Backlog drift since the plan baseline. 35 worktrees / 109.007 GiB now, versus the recorded 27 / 12 GB; 337 run directories / 159.9 MiB versus 270 / 129 MB. The mass is dominated by 17 unintegrated nova trees at ~7 GiB each — work gc correctly refuses.
- Classification. integrated=9, unintegrated=17, live-referenced=9, dirty=0; 12 live pointers classified across four projects.
- Negative findings. Run-directory retention finds 0 candidates at the
default 30-day window (the fleet is 5 days old), so run-dir pruning reclaims nothing yet.
Most integrated-eligible trees belong to concurrently active same-day sessions in
imas-ambix and imas-codex; 7 new worktrees arrived during the measurement itself. The
nested
reckon-worktreesroot persists with one empty family descendant and is not a registered worktree.
Backlog clearance (reviewed apply over the reckon and nova families)
Operational node, no commit (2026-08-17, worker codex-a, wall 500 s). Report:
~/.config/reckon/crew/runs/r-20260817T144658048376-cwh-gc-clear/clearance-report.md
with per-family apply and post-apply payloads beside it.
- Reclaimed. 5 integrated unclaimed worktrees removed —
2,751,980,032bytes (2.563 GiB): reckon'scwh-gc-dryrunandgsr-competence, nova'sefit-dataset-census,extraction-kernelsandtransport-env(the last two having transitioned from live-referenced to integrated-unclaimed before the command's own per-tree recheck — the recheck working as designed). Follow-up dry runs report 0 integrated candidates in both families. - Correctly refused. 17 unintegrated nova trees (~94 GiB) and the remaining live-referenced trees were left in place. The dominant share of the backlog is peer work that garbage collection must not touch, so the reclaimable fraction is small by design rather than by omission.
- Root anomaly closed. The nested
reckon-worktrees/reckon-worktreesdirectory is removed; the guard landed with the GC surface prevents it recurring. - Preservation demonstrated by absence. No apply was invoked for imas-ambix or imas-codex and the per-tree removal list names only reckon and nova paths. Both families did change concurrently during the window — an ambix worktree advanced its HEAD, the codex primary advanced under peer merges, and two codex trees were removed by their own session's cleanup after integration — none attributable to this node.
Negative finding: a literal identical-inventory measure is unmeasurable on a shared
workstation. The node first reported blocked because its done-when asked
for byte-identical before/after inventories of the control families, which peer sessions
mutate continuously. The gate was re-grounded on evidence the node actually owns — the
absence of any apply invocation for those families — and future clearance nodes should assert
what they did not invoke rather than what did not change around them.