Skip to main content

The coverage matrix

The coverage matrix is one grid: root causes down the side, bills across the top, a mark in each cell. It is the single most useful object in this part of the movement, because it is the only one that shows what is missing.

Bill 1Bill 2Bill 3Bill 4
rc1 — no duty to produceY
rc2 — exemption too broadY
rc3 — conclusions classifiedYY
rc4 — no penalty for silenceYYYY
rc5 — agency checks itselfY
rc6 — no independent publicationY
rc7 — no clockYY

Why it is stored as a join, not as a list on either side

Coverage is a relationship between a problem and a bill, so it is recorded as its own row that names both. It is deliberately not an array hanging off the problem, and deliberately not an array hanging off the bill.

The reason is auditability. If each side kept its own list, the two lists would drift, and the day they disagreed there would be no way to tell which one was lying. One row, named on both ends, cannot disagree with itself.

Reading a gap

A row with no marks across it is not a failure of the movement. It is an open piece of work with a name, and it is the most honest thing on the page. It tells a citizen exactly where a contribution would matter.