Q7 made fully automatic + live sweep (2026-06-15, Sam: keep Q7 automatic)

Built the canonical committer scripts/dedupe/commit_staging.py (sweeps all drive-dedupe-runs; AGE_MIN_DAYS=7, INFLIGHT_HOURS=48; manifest-verified, rollback-first, keeps unverifiable files). Replaced the dated one-off pointers in CANONICAL.md and the monthly task SKILL.md. Live sweep ran clean: 06-07 + 06-14 skipped by the 48h in-flight guard, 06-01 no staging, 05-31 aborted. Future months auto-commit eligible buffers with no prompt.


Remaining duplicates committed (2026-06-15, Sam: "delete the staged dupes")

1,564 files deleted, 2.85 GB freed, 0 errors. MD5 re-verified before each delete; rollback manifest at Codex/monthly-dedupe/remaining-commit-rollback-2026-06-15.csv. Added a keeper guard so any copy under Documents/Cases or Documents/Litify Repo is forced as the survivor (never deleted out of a case/legal folder).

Only 2.85 GB (not the ~24.6 GB estimated) because the big Documents/Videos duplicates were duplicated INTO the 06-07 staging buffer, so the Q2 staging commit had already resolved them. Post-run verification: 0.01 GB of duplicated content left on disk (effectively fully de-duplicated).

Session total reclaimed: ~48.7 GB (0.43 safe-tier + 45.39 staging + 2.85 remaining), 0 errors, every delete reversible via rollback manifest with a surviving byte-identical twin.

Still open: the 616 staged files flagged keeper_missing/hash_mismatch (kept, not deleted) await Sam's restore-or-discard call.


Post-Approval Execution (2026-06-15, Sam approved Q1+Q2+Q3 = all A)

Total reclaimed this session: ~45.8 GB, 0 errors, full rollback for everything. Disk free 70 GiB -> 100 GiB.

Still pending Sam's eyes (~24.6 GB remaining reclaimable): Documents/Videos 14.93 GB (273 dupe files) is the big one; then Marketing 2.34 GB, Cases 1.72 GB, Design Elements 1.08 GB. These are outside safe-tier and need a keep-which-copy decision before deletion.


Pre-flight summary