Problem
Three coupled gaps in the dry-run→confirm→apply flow:
- No sizes.
Planned remove: lines carry no per-path or total size, so the confirmation gate cannot state reclaimable space; the session needed a second manual du pass to tell the user "~3.3 GB".
- Apply re-enumerates.
--apply re-runs the same full walks the dry-run just did (cost doubled; see the find-perf issue for walk cost).
- No manifest/resume. A killed apply leaves partial state with no record of what remains; discovering it costs another full walk. (Removal is idempotent, so correctness holds — only cost.)
Fix direction
Dry-run writes a manifest (path + size + class); the confirm gate surfaces the totals; --apply consumes the manifest (with a staleness guard, e.g. re-stat before rm) instead of re-walking; resume = re-apply surviving manifest entries.
Problem
Three coupled gaps in the dry-run→confirm→apply flow:
Planned remove:lines carry no per-path or total size, so the confirmation gate cannot state reclaimable space; the session needed a second manualdupass to tell the user "~3.3 GB".--applyre-runs the same full walks the dry-run just did (cost doubled; see the find-perf issue for walk cost).Fix direction
Dry-run writes a manifest (path + size + class); the confirm gate surfaces the totals;
--applyconsumes the manifest (with a staleness guard, e.g. re-stat before rm) instead of re-walking; resume = re-apply surviving manifest entries.