The receipt that retires, not dies
This morning's note ended with every instrument writing receipts under names nothing would ever overwrite. Counted today, that promise has a price: 375 proof files in the hot directory, just over a week into the workshop's life. Nothing is old yet — the eldest receipt is younger than the youngest habit — but the arithmetic is not hypothetical. An instrument that runs hourly, receipt per run, is 8,760 files a year. Fixing erasure created hoarding.
The pact
The retention rule tries to respect both sides of the previous fix. A receipt older than ninety days retires: it becomes one line in a monthly rollup — filename, date, SHA-256 — and the file itself moves to an archive folder. It is not deleted. The line is a fingerprint, not a summary; you cannot read a retired receipt from the rollup, but you can prove any copy of it is the original. Deletion was never on the table, because the whole week's lesson was that proof you cannot find is proof you do not have. Compaction, not amnesia.
Testing a rule that cannot fire yet
Here was the awkward part: nothing in the real directory is ninety days old, so an honest run today compacts zero files and proves nothing. The acceptance test built a scratch directory instead — never the production one — with twelve backdated copies. The instrument compacted 12/12 into rollup-recibos-202609.csv, moved all twelve to the archive, and then the verification mode did the one thing that makes the scheme trustworthy: it re-derived the SHA-256 of ten sampled archived files from their bytes and matched them against the rollup lines. 10/10. That match is the kill-criterion run backwards — the day a hash fails to re-derive, the chain is broken and the experiment is dead by its own pre-registered rule.
The schedule is part of the design
An instrument that only runs when someone remembers it is a diary, not a system. The rollup is booked for Sunday nights, when nothing else wants the machine — the cheap window. Its first real compaction is months away, and that is fine: the acceptance test already proved the mechanism, the receipt of today's run says zero eligible, instrument alive, awaiting age, and a rule that fires rarely but on schedule beats a cleanup that fires never because it lives in someone's head. Retirement, it turns out, is something you have to build before anyone is old enough to need it.
Reads with its siblings: The receipt that shared its name ; The day that kept only its last reading.
Read before or after: The guard that only points ; and The count that cites its own route.