Skip to main content

Say What We Could See

A blank page about a politician has two completely different meanings and they look identical: either we read the record and found nothing, or we never held the record to read. This feature makes every calculation say which one it is, in the same place the blank would have been.

Each calculation records four narrowing counts for one person, and the first count that reaches zero produces the typed cause the reader sees and a row in the movement's public list of missing data.

What it does

Every calculation here narrows a body of evidence down, and for each person it reports on it records four counts, in order:

  • Corpus — how much evidence we hold at all.
  • Eligible — how much of that could legitimately bear on this person, after the filters that are about identity: their chamber, their dates in office, the identifier that joins them to a record. Those filters describe the person; they judge nothing.
  • Usable — how much of the eligible set can carry a reading.
  • Result — what came out.

The nesting is the mechanism, because the first count that reaches zero is the diagnosis. Thirty votes held, one falling inside a member's chamber during their service, and that one cast on the whole package rather than the provision, produces a blank that has nothing to do with the member.

Every blank carries a typed cause rather than a sentence: no join key, no tenure, empty corpus, nothing eligible, nothing usable, or no legible signal. Prose cannot be counted, grouped, or turned into a work item. A cause can. Five of the six are gaps in our own sourcing. Only the last begins a finding about a person: they were eligible and present, and every recorded position was neutral, present, or not voting.

The sentence a reader sees is generated from the cause and the counts, so the words cannot drift from the arithmetic. So is the remedy. Offering "recompute" against a person with nothing eligible would be a lie: no recomputing moves a number whose arithmetic was never wrong. That gap closes by sourcing a record.

Absences render as rows, not as nothing. Every instrument the movement tracks appears on every record page, including ones a person never had a chance to act on, marked no vote recorded and no reading attached. An empty table reads as "nothing happened here", usually the opposite of the finding.

Each award runs its own funnel and its own denominator. The Flamingo Award's unknown state is a coverage state by design: we do not know enough yet, which is not a claim about the person. That is a different fact from not earned, and neither renders as a zero. Beside every award rides the knowledge figure, always written "N% known", there to stop the other numbers being over-read. The two axes are independent: somebody can be thoroughly known and hold no award.

Above all of it sits data_needed.yaml, a committed public file listing every hole the movement knows about in its own store: which roll calls, which identity records, filed by level, chamber and year, each with what it blocks on screen, when it opened, where to look, and what previous attempts came back with. A page whose blank a need explains renders that need instead.

The goal it serves

The deadlock this movement exists to break is the manufactured evidence gap: withhold the record, then insist nobody may act without complete proof. A page that says "not yet assessed" and stops is that same deadlock, built by us and pointed at our own readers. It takes a hole in our sourcing and hands it to a citizen as a shrug about a named person.

A movement that demands disclosure from officials while hiding its own holes has no standing to make the argument, so the standard runs inward first. You read what we are missing before you decide how much weight to put on what we have.

Publishing the list is also how somebody else closes it. A contributor who has never opened this app can read the ledger, see which chamber and year are dark, learn that two pulls already came back empty and where they looked, and go get the record. That is the difference between a movement that asks to be trusted and one that can be checked and helped.

What keeps it honest

  • The build refuses the failure. A guard fails the build if a cause is unreachable, or if every subject lands on the same cause — the signature of a filter that ate everything. Before that guard existed, the only thing catching the defect was a person opening a page and noticing it had gone blank.
  • A run that declined to recompute never reports a zero it did not compute. It reports the previous run's real numbers, labelled as a skip. "We did not look today" and "we looked and found nothing" never render alike.
  • The engine that finds the holes fetches nothing and accuses nobody. It reads only files already on disk, and a need describes a hole in our store rather than conduct by a person: "no roll call has been sourced for this member on this measure", never a claim about why. Reporting that we could see nothing says nothing about the person we could not see.

Works with

  • Show The Arithmetic — the derivation and the denominator ship together, so you can check the sum and how much it was summed over.
  • Your State House, Same Instrument — a second body of evidence means a second denominator, and neither is described in the other's terms.
  • Work You Can Watch — a published gap is work somebody can pick up, close, and be seen closing.

Where to go next

  • Evidence — the pillar this is built out of: reaching a defensible conclusion when links are missing on purpose.
  • Naming the gaps — why a named gap beats a quiet one, stated as a rule rather than as a habit.
  • Not assessed is not a verdict — the award whose blank state is the clearest case of this rule.
  • Open Data — clone the record, follow any claim to its source, read the gap list yourself.
  • Take Action — pick an open gap and close it this week.