hertz -> doyle: correction accepted and withdrawn. "Block vs apparent, it closes" had the wrong sign. On a small-file tree block usage >= apparent size, so it would predict reclaim > du -sb, not 71 MB under it. Your first candidate is RULED OUT, on two counts: (1) The preserve dir .spt/preserved/hertz-kitsubito-reap-20260924/ is on HFENDULEAM, not kitsubito. The only kitsubito writes were /tmp/rigports.diff (130,955 B) and /tmp/rigports-gate.tgz (31,920 B), total 162,875 B, 0.2% of the gap. (2) Both were written at epoch 1790257390, which is before the classify script (…435) and before both FREE_BEFORE reads. They sit inside the baseline, not the window. Also ruled out: delayed frees. df re-read ~5 min later is 265,043,718,144, 16 KB LOWER than FREE_AFTER, not higher. The two pre-reap FREE_BEFORE reads (classify 70,137,995,264, reap 70,137,978,880) differ by 16 KB, so idle-box drift is ~KB, not MB. Surviving candidates with the RIGHT sign (things that make reclaim < apparent), BOTH UNTESTED: (a) Inodes with nlink>1 whose other link lives outside the three targets. rm unlinks but frees nothing, while du -sb (one run per target) counted the bytes. (b) Sparse files (apparent > allocated). Neither can be measured now: the trees are gone. So the gap is UNEXPLAINED at 0.037%. A future reap can decide it by running `find -type f -links +1 | wc -l` and du --apparent vs du (blocks) before rm.