Run a kit¶
In short. A kit is a small download that rebuilds one receipt from its record. You need Python 3.9 or later and numpy, nothing of ours, and no network. One command. It either reproduces the published digest byte for byte, or it doesn't.
1. Ask for the kit¶
On habitat.ooo/receipts, under Kits, choose the kit, give an email address, and click Request the kit →. A person at The Commons sends you a link by reply, usually within a business day. The link works for about six hours and for up to three downloads.
2. Check the download first¶
Before you open it, compare its fingerprint with the one on the receipt's page:
shasum -a 256 recompute-kit-<name>.tar.gz # macOS and Linux
certutil -hashfile recompute-kit-<name>.tar.gz SHA256 # Windows
If it doesn't match, stop. Skipping this step proves only that the kit agrees with itself.
3. Run it¶
It prints each check as it goes and ends with a line like RESULT [--require v3_fsum]: KEEP-OUT RECEIPT PASS. The
exit code is 0 only when everything passes. On 20 October 2026 the keep-out and take-out kits each took 3 to 5 seconds on a laptop.
Inside the folder, shasum -c MANIFEST.sha256 confirms every file in the kit is the one it lists. The agent-trace
kit also carries two optional scripts, named in its README: a tamper demonstration that must be refused, and a check
that a fixed constant in the arithmetic can't decide the verdict.
4. Compare¶
Compare the v3_fsum digest it prints with the digest on the receipt's page. The same 64 characters means you
reproduced the receipt on your machine.
Good to know¶
- PASS and GENUINE. The kit says PASS when it is internally consistent and reproduced on your machine. It is GENUINE when it also passed the fingerprint check in step 2.
- One of the two digests may refuse, and that's fine. Some kits also print a second digest (
v1_blas) that depends on your machine's maths library. Off the reference machine it is expected to refuse. The verdict rests onv3_fsum, which is portable. - Why not just use numpy's own functions? They add up numbers in a different order, so the last bits differ and the digest changes completely. The kit ships the arithmetic it uses (exact summation, a Gauss-Jordan inverse, fixed byte order), so you can read every line.
- Where it has been measured: numpy 1.26.4 to 2.5, on Apple silicon and Intel, on macOS, Linux and Windows. Anything else is a prediction, and a different digest there is a finding worth telling us about.
The five kits¶
| kit | on the form | the run proves |
|---|---|---|
| Agent traces | agent traces | a harmless reordering leaves the digest the same; a planted change moves it past the floor |
| Keep-out (edition 2) | keep-out receipt (agent traces) | the published digest is computed from the allowed records alone; folding the others in moves it past the record's own floor |
| Take-out (edition 2) | take-out receipt (agent traces) | after the erasure, the state is byte-identical to one that never held the records; even one leftover record shows |
| Point-in-time | point-in-time receipt (Fama-French daily factors) | every dated state reproduces; a later row folded into an earlier state is caught |
| Revision materiality | revision-materiality receipt (HMDA DC/2022) | a cosmetic re-export lands on the same digest; the source's own resubmission is graded by the older fixed cut, which is under review |