The instrument is fixed. The reading is not.
Across every receipt on this site, one thing recurs. The instrument does not change — but what it can discern is conditioned, every time, by the character of the data itself.
Data character is a factor in the geometry
A corpus has a shape before anyone measures it — how structured or how uniform, how much it varies and where. That shape is not something the reading ignores; it is a factor in what the reading can say. The same instrument, run on two corpora, discerns different things, because the two carry different character. A receipt’s floor is the corpus’s own. Its metric is induced by that corpus, not assumed over it. The reading is relative to the field it reads. The same instrument, on one domain, can return a fit, a bounded fit, and an honest no-fit at once — because each register is a measured property of the corpus, not a fixed property of the tool. Which receipt applies is itself a reading.
A decidable receipt, and the discernment around it
This is why the receipts are built the way they are. The verdict is mechanical: recompute it yourself, and it agrees to the byte or it rings — no tolerance, no judgment at the moment of decision. The judgment lives elsewhere, deliberately: in choosing which receipt to compute, on which corpus, and in reading what a result means once it lands. Detection is the instrument’s; resolution is always a person’s.
The two tests around every receipt
Every receipt on this site is decided by the same two questions, recomputable by anyone. One — does it hold? A change that preserves the finding — reordering the rows, a cosmetic re-export — must leave the geometry byte-identical while the file’s own hash changes. A checksum cannot tell the two apart; the geometry can. This is the decidable one: it is byte-identity, and it needs no floor, no null and no ranking. Two — does a real change ring? A declared, legitimate operation that genuinely moves the finding must move the geometry past the corpus’s own floor — and a floor is a quantile of the data’s own churn, so which quantile you declare is a choice that has to be published. We read it two ways: the median and the 99th percentile. Both are properties of the field, both converge as sampling effort grows, and on three of our corpora they disagree — the same measured move rings past the median and holds inside the 99th. So we publish every ring against both, and a ratio within convergence noise of 1.0 is reported at the floor, not as a verdict. Hold and ring: no trust asked.
There used to be a third test. We removed it.
This page told you the third question was does it localize — when the geometry moves, does it independently nominate the very coupling the operation touched. That test was circular, and the demonstrations we published for it were circular. It is withdrawn.
The mechanic gives it away once you look. The control we run drops exactly the rows that produce the target coupling — rows selected by the coupling itself. Delete a coupling’s own rows and the largest move lands on that coupling. Then we ranked it and called the rank a nomination. Run the identical mechanic on a decoy coupling nobody declared and it crowns itself first, every time. The rank was naming our own choice of operation, not a property of the field. It corroborated the operator.
What is not settled is whether the capability exists. The honest test is an operation that does not target the coupling — and run that way, on real lending data, the protected coupling falls to #4–5 of 55. So we have measured that our circular demonstrations prove nothing, and we have not measured whether a non-circular localization holds. It might. We never published that experiment, so we do not get to claim it. The question is open, and it is stated here rather than left in a drawer.
We caught this on our agent-provenance case first and retracted it there while it was still live on the science pages. That gap was ours; this is it closed. A receipt is hold and ring — and hold is the decidable one.
What “recomputable” is bound to
The claim on this site is exactly one thing: byte-identity of the digest, recomputable by you, on any engine that follows the kit’s published canonicalization. That last clause is not a hedge — it is the whole claim, and it used to be missing. We said “byte-for-byte on any machine.” That was false as written, and it is corrected here.
The digest pins a specific arithmetic: exact (Shewchuk) summation for the covariance,
a Gauss-Jordan inverse, and the result serialized as float64 in C order, explicitly little-endian,
then hashed. Follow that and you get our digit. Reach instead for the obvious tools
— numpy.cov and numpy.linalg.inv — and you will not,
because BLAS sums in a different order and LAPACK inverts by a different route; they differ in the
last bits, and SHA-256 turns one flipped bit into a different number entirely. We measured that on
our own three live cases: all three digits differ. That is by design, and you should know
it before you try. The honest consequence: an independent recompute here is a re-execution
of a published, open, ~40-line canonicalization — not a from-scratch reimplementation
agreeing by luck. The kit ships that arithmetic so you can read every line of it.
Where it is measured, and where it is not. The canonicalization is designed to depend on the data alone, and the design is checked rather than asserted: the same digits reproduce on arm64 and on x86_64 — the axis that breaks a naive fixed-order implementation, since SIMD width changes how a vectorized sum accumulates. The kit’s SPEC records a wider matrix (arm64 + x86_64, macOS/Linux/Windows, numpy 1.26.4–2.5). What we will not tell you is that it therefore holds everywhere: platforms beyond those tested are a prediction, not a measurement. If you find one that disagrees, that is a finding and we want it — new legs get added, not argued.
The floors we actually read
“The corpus’s own floor’ is not one method — and an earlier version of this paragraph said something our own bench later refuted. It said two receipts were graded against a permutation null. Measured (2026-07-15): they are not. The revision-materiality and material-contribution receipts report in null-widths, and a null-width is a z-score — the published verdict reproduces as that score against a declared cut of 3.0 shipped in the kit. A chosen cut deciding a published verdict is exactly the thing the rest of this page refuses, so it is under review as an open item (stated below and on the ledger), and those two receipts’ rating plates are withheld until it resolves. Where a receipt reads its floor as bootstrap quantiles, the page says median and p99, both; where it says null-widths, that is a z-score against the declared cut.
Run on real data, left recomputable
The two tests are not run on toys. Each receipt is computed on real, pinned data — public at its source wherever the source is public — and every number we publish is left for you to recompute from the artifact, on your own machine, nothing sent. Where a corpus is constructed to isolate a single mechanism, we say so and mark the case a frontier. We would rather publish a thin result on real data than a clean one on data chosen to flatter the instrument — so when the honest reading is a no-fit, that is what we show.
A worked recomputation, on data we had no hand in
A published leaderboard where 714 of its 1,292 cells had nothing in the shipped bundle to recompute against. What shipped set the boundary before the instrument reached it — and two columns still came back exact, all 34 rows. We measured it blind, then read the publisher’s own source afterwards; on structure, on null semantics and on the certified columns, the two agree. Method, census, both implementations and our own corrections are published whole: openhands-index — a recompute survey.
It never resolves — in the code, and in the reading
The line between detection and resolution is drawn twice, on purpose. In the code: the instrument emits a number and a match-or-ring, and stops. It renders no verdict about a person, a motive, or what to do — there is no resolution in the machine to argue with, because it was built not to hold one. In the method: resolution is the reading, and the reading is yours. The discipline says what the geometry can bear, hands you the floor, and halts at the threshold of decision. That boundary is not a limit we apologize for; it is the guarantee — what a record means stays yours because the code refuses to say, and the method refuses to take it from you.
A practice, not a toolkit
A toolkit says: run the tool, take the answer, thresholds baked in. This refuses that. It asks you first to read whether the geometry can bear the claim — and that reading is a discipline, learned and practiced, not a button pressed. The instruments produce receipts anyone can recompute. What they cannot do is replace the discernment that decides when a receipt is the right one and what it means. That discernment is the practice. You can watch it work on real domains — the same two tests run on marketing / consumer research, and a recomputation carried out on a leaderboard we had no hand in.
Bottom line
The floor is recomputable by anyone. The reading is a practice. Both are the point.
← Receipts · Docs · Ledger
The baseline — two sentences, every clause measured
As a detector: habitat does exact, replayable change-attestation over a pinned record. Twelve of twelve published digests reproduce from their pinned bytes, including a 1,258-step dated chain. No benign reorder has ever moved one. Every declared control moved it — a leak, a single leftover record ten times out of ten, two targeted drops, a future row folded into a past state, five rows deleted from history — each landing on the byte value its kit declared in advance. What it cannot see is on each receipt’s rating plate: relabeling a column that never varies; shifting a whole column where the rounding lands exactly; an edit below the resolution its corpus size sets. A material edit has moved the digest on every column ever measured.
As a conversant: habitat speaks four sentences the corpus decides and the operator does not — which axes are silent; which direction dominates; what couples to what; how the variance ranks. Each survived every arithmetic, ridge, solver, and column-order varied against it; each carries its condition on its face; and every one is computed from the covariance matrix, which the conversant receipt now publishes — recompute the readings and the digest from the receipt alone. It does not yet hold a conversation. The reader-relative reading died on the bench: as shipped it moves with a constant we chose, and its A-reads-B asymmetry is broken by our own one-sided conditioning, not spoken by the corpus. The repair is identified and measured; it stays a door until a pre-registered bench clears it.
Why not just sort the rows and hash? — measured, so you don’t take our word
| question | sigma digest (ours) | sort-and-hash |
|---|---|---|
| benign reshuffle holds | yes (conformant engine) | yes |
| erased == never-had-it · eligible-only == certify · one record left rings | yes — at declared byte values | yes |
| a relabeled constant column rings | no — disclosed per plate | yes |
| a whole-column exact-rounding shift rings | no on mapped columns — disclosed per plate | yes |
| a one-ULP edit rings at card scale | no (size-dependent, disclosed) | yes |
| readable without the rows | yes — digest and every reading recompute from the d×d Σ alone | no |
| carries the field’s shape (silent axes, couplings, dominant direction) | yes — published Σ readouts, conditions printed | no — a bag has no axes |
| reproduces across machines | this run: one architecture; kit build record: 2 architectures / 3 OSes; live matrix written, not yet run | trivially — no arithmetic |
On every membership question the two agree — measured. Where the sorted hash beats us, the plates say so, with exhibits. Σ-only verification exists as a capability; our own cases don’t need it — the rows are public. Run the pair in the kit. If anything here fails on your machine, that is a finding and we want it.
Open items — stated, dated
- Open: one shipped kit decides a published verdict through a chosen cut (3.0). Under review; until resolved, the two affected rating plates are not published.
- Open: portability is measured on one architecture this run; one shipped kit’s own verifier refuses off its reference build on a legacy leg while every current check passes. The cross-platform matrix is written and has not run; no “any machine” sentence appears here until it does.
- Corrected 2026-07-16: four downloadable kit files asserted a claim these pages withdrew on 2026-07-15; the kits are re-flagged and the integrity chain re-anchored.
- Adverse, printed: the reader-relative reading is not real as shipped — see the conversant sentence above.
Dated 2026-07-16 against the corrected tree; every clause carries a completed bench in the published record. Detection, not adjudication.
How this record was made
The baseline above was not produced by one author checking their own work. It was produced by AI sessions run blind against each other, on this instrument’s own discipline: two agents drafted the work order for these measurements in parallel, neither knowing the other existed; each then audited the other’s draft without knowing the audits would be compared; the merged order was executed twice, independently, by executors who could not read each other’s results — and every load-bearing verdict on this page is one that both runs reached separately, byte for byte. Where the two runs disagreed, the disagreement is in the record with the bench that resolved it. Where one run’s own probe was invalid, its report records it.
This matters for one reason: the failures on this page were found by that process, on us. A floor statistic we had published was disqualified by our own instrument and a real verdict flipped; a claim register we had shipped was withdrawn; four downloadable kit files were found still asserting what the pages had retracted, by both runs independently, and were corrected. Even the checkers were not trusted, and were checked. The full production chain — the blind drafts, the cross-audits, the dual runs, the convergence tables, the self-caught errors — is in the published record, dated — and the fuller accounting, rebuilt from the original transcripts, is now a page: the record.
Nothing in this section is a property of any dataset. It is a property of us, and every sentence of it has a file behind it. Detection, not adjudication — including of ourselves.