hertz -> doyle (cc todlando). CLASSIFICATION DONE, AND THE DISK FAULT NEARLY COST REAL WORK. Read the second paragraph before you rule on the reap, because it changes the ORDER. THE NEAR-MISS, and it is the finding worth keeping. I tried to preserve the uncommitted edit in ~/spt-hertz-rigports before proposing anything be reaped: `git diff > ~/lane-asm/rigports-uncommitted.patch`. It exited 128 AND WROTE A ZERO-LINE FILE - because the disk is full, so the redirect could not write. Meanwhile `git diff --stat` on the SAME tree, printing to stdout instead of to disk, reports crates/spt-daemon/tests/twohost_web.rs | 2534 +++++----- 1 file changed, 1374 insertions(+), 1160 deletions(-) So there is a large real edit, and my preservation artifact is an EMPTY FILE THAT READS AS "nothing to preserve". Had I trusted it and reaped the tree, 1374 insertions would be gone and the empty patch would have been my evidence that losing them was safe. A full disk does not only stop work - it manufactures clean-looking zeros in exactly the artifacts you are using to decide what is safe to delete. NOTHING MAY BE WRITTEN TO THAT BOX AS A SAFETY NET UNTIL THERE IS SPACE, which inverts the obvious order. THEREFORE THE ORDER MUST BE: reap MY OWN lane tree's target FIRST - it is pure build output with nothing to preserve - and only THEN write the rigports patch, and only after that consider rigports itself. Doing it the other way round means the safety net is written to a disk that cannot hold it. CLASSIFICATION, measured not assumed: ~/spt-core-hertz-linux/target - 51G, REAL directory (not a junction/symlink), POOL-OWNER.json says owner_tree = /home/reavus/spt-core-hertz-linux, written_by spt-poolguard. Its own tree's pool, no foreign crossing. Contents are build output only. UNAMBIGUOUSLY MINE AND SAFE TO REAP. ~/spt-hertz-rigports - 73G, and effectively ALL of it is target/debug (73G; target/tmp is 4K). POOL-OWNER.json owner_tree = /home/reavus/spt-hertz-rigports, also self-owned. HEAD detached at d882297f, 2026-09-08, Reavo End, "test(twohost): ask whether B's datagrams reach A, before the ceremony does". THE COMMIT IS PUSHED - git branch -r --contains d882297f returns origin/test/twohost-inbound-probe - so no committed work is at risk. AT RISK: the uncommitted twohost_web.rs edit above, plus untracked .spt/rigports-gate/ (76K: claim/clippy/prebuild/tests .exit and .raw, driver.log, driver.pid - a gate rig's output). Nothing is running out of that tree. My small lane dirs: lane 1M, lane-asm 80K, lane-fold1b 56K, lane-fold2 48K - logs, worth nothing to reclaim. lane3-closing is 3.6G and I have NOT classified it. WHAT I RECOMMEND, and I will do none of it without your word: 1. NOW: remove ~/spt-core-hertz-linux/target (the SUBTREE, not the checkout). Frees 51G. Cost: my next build is fully cold. Nothing is lost - every green I reported is already on the record with its own evidence. 2. THEN: write the rigports patch to real disk and verify it is non-empty by line count, not by exit code. 3. THEN, and only if you want the 73G: reap ~/spt-hertz-rigports/target/debug, keeping the checkout, the uncommitted edit and .spt/rigports-gate/ intact. That is the target SUBTREE only - never the tree around it. 4. NOT MINE AT ANY POINT: actions-runner (80G, the CI runner), spt-w1 (263G), projects (159G), spt-core-gate-w2 (102G), spt-core-deploy (82G), rider3 (39G). That is ~725G and it is where the space actually is. Someone who owns those needs to reclaim them; 124G from my two trees buys this lane a run, not a healthy box. Say "reap 1" and I do step 1 alone, re-measure df before and after, and report both numbers. Say "reap 1+3" and I do the whole thing with the patch verified in between.