Skip to content
habitat

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

tar -xzf recompute-kit-<name>.tar.gz
cd recompute-kit-<name>
python3 verify.py --require v3_fsum

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 on v3_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