habitat

Controls

Here is the number, and here is what it is not

Habitat’s claims are measurements. That is why they can be attacked — and why they can carry a specificity number.

Why a number alone says little

Each card on this site carries one declared operation — a change made on purpose, to see whether the geometry moves. A movement on its own is a mark. Removing records changes a number; so does removing different records. Nothing in the movement itself tells you which happened.

So every operation is run beside a control: the same number of records, drawn from the same group, differing only in the thing the operation was aimed at. Three hundred times. The table gives the observed movement, the control’s median, and how many of the three hundred controls reached the observation.

This is the move the OWASP Benchmark makes with seeded non-vulnerabilities: to know what an alarm means, you have to know what does not set it off. Nothing here is new; it is applied to the geometry of a record rather than to code.

The table

cardcouplingobservedcontrol mediancontrols reaching it
reading /controls.json…

How to read it

Where the count is 0 of 300, the operation moved something no control reached. Where it is 164 of 300, it did not: the movement sits inside what the same operation produces at random.

Both are printed. A table showing only the first kind would be a different sort of document.

Where no control exists

Two cards carry a column that cannot vary at all — it is fixed by how the record is built, not by anything in the data. There is no control to construct against a column with no variation, so none is invented and no ratio is printed. Those rows say no control exists and their pages say the same. What those cards claim is that the digest changes, which is decided by bytes and needs no floor.

What this is not

It is not a finding about any dataset. Every operation here is a brake test — run deliberately, on public reference data, to see whether the instrument responds to it. Removing records selected on two attributes at once will disturb the coupling between those attributes; part of any movement below is arithmetic. What the control adds is that the movement is not merely the size of the edit, nor the group it came from, because the control holds both of those fixed.

It is not a verdict. The count is the whole of what is said.

Check it

The table is rendered from controls.json; no number on this page is typed. Each card’s vectors and its declared operation ship inside its recompute kit, and the control is thirty lines of numpy.