THE EQUATION OF THE LAW
What we measure
One thing: the drift between what the Constitution's text promises and what documented practice delivers, for a given institution, weighted by how many people it affects. We measure against the written text only, rather than morality, the founders' intent or any individual. That distance can be checked, which is the whole point.
Two layers, two standards
Layer 1 — Scoring an institution
The smallest measurable institution affected by the Constitution that impacts a group of people is the atom. Each documented action it takes is scored on three axes:
| Axis | Range | Meaning |
|---|---|---|
| Direction | −1 / 0 / +1 | Does practice move toward or away from the written promise? |
| Weight | 0–10 | Severity × number of people affected |
| Confidence | settled / leaning / contested | A multiplier, not a gate: settled ×1.0, leaning ×0.6, contested ×0 |
The direction test (show your work)
Every direction call must walk these four steps, with a source. No source, no score:
- Which written clause is at issue? Name the exact text.
- What does the text plainly promise? State it in plain language.
- What did documented practice do? Cite the sourced event.
- How far apart are they? That signed distance is the direction.
maxw = Σ ( weight )
HP = clamp( 50 + ( raw / maxw ) × 50 , 0 , 100 )
50 is the neutral baseline. Near 100 is citizen-side; near 0 is captured. Colour bands: ≥65 green, ≤35 red, everything between renders brown — and any institution carrying a contested record renders brown through the middle range regardless, so a disputed question never displays as a settled verdict.
Three gates before a record can move the number
Written out plainly, because these are the rules that decide what counts:
- No source URL, no score. An event without a retrievable source is dropped before the sum is taken. It is not weighted down — it is not counted at all.
- Contested contributes zero. A record marked contested is displayed with both sides and multiplied by 0. It is in the file and visible; it does not move the number.
- No scored records means unmeasured, not neutral. An institution with records but nothing a human has scored returns no value and shows grey. It never returns 50, because a missing judgment shouldn't look like a middle score.
Layer 2 — Amendment deviation load · SPECIFIED, NOT YET COMPUTED
This layer is designed and documented but is not implemented in the live build. No amendment currently carries a deviation load on the site. We describe it here so the specification is public before the code exists.
Some amendments are built in ways that let bad actors wear down others. We capture that, but we never give an amendment a moral score, because that would be our opinion dressed up as data. Instead:
The amendments end up ranked by deviation load, so the idea that not all amendments are equal shows up in the numbers. The ranking comes from sourced data; we don't set it by hand.
Layer 3 — The fractal rollup
Each tier above the institution aggregates its children. Population weighting applies where a population is known; where it is not, children count equally. The exact behaviour, tier by tier:
| Tier | How it aggregates its children |
|---|---|
| Municipality | Equal average of its five domain scores. Each domain counts once. |
| County | Direct county institutions each count once; municipalities are population-weighted. A county with both is a mix of the two. |
| State | Population-weighted average of its measured counties (method R1). State-level institutions (legislature, governor, attorney general, state courts, state agencies) are scored and shown in the State tier beside every map, but they do not colour the state while any county is measured. Where no county is measured yet, the state shows the plain average of its state-level institutions, labelled as such. The District of Columbia is the exception: its citywide institutions are its local government, so they count beside its wards. |
| Nation | Population-weighted average of its measured states. |
Why state law does not colour the state yet (R1). A statute binds every agency in the state on paper, but how far that power reaches the ground is exactly what this map has not measured. Counting a statute at the weight of the whole state assumes perfect reach; counting it together with the local conduct it governs counts the same power twice. Local institutions are where power is expressed on people, so for now they set the colour, and state law is shown in its own tier, never hidden. The intended next step (R2) measures reach from the evidence itself, by comparing local records that operate under a statute with those that do not, and switches on only once enough such records exist. Its threshold will be published here before it is used.
How a method change works. Every human judgment (direction, weight, confidence, clause) is stored on its record and never rewritten by a method change. Every number on the map is recomputed from those judgments each time the map loads. So a corrected method re-scores the whole map at once, and the record of what changed is this page's changelog.
Unmeasured children are left out of the average rather than counted as zero or fifty, which is why coverage is shown beside every number. Change one sourced record and the number updates all the way up. The end goal is an all-green civic map, meaning majority constitutional compliance, with the remaining flaws flagged for amendment where everyone can see them. Winning means accurate numbers and honesty about the gaps.
Specified, not yet implemented
Two transparency modifiers appear in this methodology's design and are not in the deployed formula. They're listed here so nobody mistakes them for live features:
| Modifier | Intent | State |
|---|---|---|
| Opacity penalty | Decisions issued with no reasoning on record are worse than the same decision explained, regardless of direction. | Data field reasoning_on_record is collected on most records. No formula reads it yet. |
| Merits-avoidance penalty | A procedural kill — a refusal to reach the constitutional question — is its own kind of drift. | Not implemented. No field captures it yet. |
| Amendment deviation load | Rank amendments by measured drift flowing through the practices they enable. | Specified above. Not computed anywhere in the live build. |
Each will ship with a dated changelog entry when it does. Until then, the number you see is produced by the formula in Layer 1 and the rollup in Layer 3, and nothing else.
Who scores this
Every score on this site was assigned by a human being. No model has ever set a direction, a weight, or a confidence value here, and none ever will. AI is used to locate documents and extract structure from them — the gathering stages return direction: 0, weight: 0, confidence: "" by hard rule, and a person decides every judgment afterward. If this corpus reaches a million records, that means a person read a million documents. There is no model drift in the scores because no model has ever touched them.
The weakness sits right next to that strength: right now the scorer is one person. One reader's judgment is doing work that should be shared, and no method statement fully fixes that. Three things are meant to address it:
- Every score is checkable. The clause, the promise, the practice, and the source sit on the record beside the number. You do not have to trust the scorer; you can read what they read.
- Contest it directly. Any record can be disputed with counter-evidence. You become the plaintiff and this site becomes the defendant. Disputes stay on the record where everyone can see them.
- Agreement gets measured and published. As independent reviewers score the same records, the rate at which they agree becomes a published number. A methodology that cannot be reproduced by a second reader is one person's opinion, and it should be reported as such until proven otherwise.
How it stays honest
Crowdsource facts, publish judgment. Verified locals may update checkable facts — election dates, who holds a seat, whether a vote happened. The scoring method itself stays centralized and published. Facts crowdsource well; judgments crowdsource badly until the method is proven.
Unsourced contributions are inert. They can never reach the score. The structure makes bad data harmless rather than chasing it after the fact.
No score is automated. Discovery can be automated; judgment cannot. Every gathering tool on this project is forbidden from returning a score, and that rule is enforced in code rather than by instruction.
The algorithm is open source. New AIs, scholars, and citizens are invited to break it and improve it. When someone proves a better method, the equation changes. Being open is how we stay honest.
Changelog
Every change to the formula and to this page, dated. If a method changes without a record, nobody can tell whether it was improved or tweaked toward a preferred answer.
| Date | Change | Why |
|---|---|---|
| 2026-10-22 | Method R1: state-level institutions no longer colour a state that has measured counties; they are shown in the State tier. DC's citywide institutions count as local. A state with no measured county shows its state-level average, labelled. | The deployed code pooled state-level institutions with counties, and because most states carry no population figure, the whole state-level block silently received half of every state's weight. Two university police records set half of Ohio's colour; one scored statute would have moved Virginia from 20 to 60 with no local record changing. This page already described a county-only state average; the code now matches it. Changed on 2026-10-22: Ohio 49 → 48, Wisconsin 88 → 95. No other state moved. |
| 2026-10-22 | Known-defect note replaced by a rule: contested stays brown until resolved. | The weight-0 case was fixed in the code; the page still listed it. The all-contested case was listed as a defect, but the owner decided it is correct: a disputed institution is brown, not grey. No code change; no institution is in this state today. |
| 2026-07-30 | Confidence vocabulary corrected on this page to settled / leaning / contested. | This page had published doc / alleged / inferred, which the code never used. The code was right; the page was wrong. |
| 2026-07-30 | Confidence described as a graded multiplier (1.0 / 0.6 / 0) rather than a documented-only gate. | The page claimed only documented events count. In fact a leaning record contributes at 60%. |
| 2026-07-30 | Opacity and merits-avoidance penalties moved to "Specified, not yet implemented." | Both were described as part of the formula. Neither exists in the deployed code. |
| 2026-07-30 | Amendment deviation load marked as not computed. | Same reason. The design is real; the implementation is not. |
| 2026-07-30 | Rollup corrected: it is not uniformly population-weighted. | County-tier institutions count equally; municipalities are population-weighted. The single formula previously shown was accurate only above the county tier. |
| 2026-07-30 | Unmeasured-vs-neutral rule stated explicitly, with its known defect disclosed. | An institution with no scored records should render grey, never 50. Two edge cases in the deployed build still return 50; the fix is written and pending. |
| 2026-07-30 | "Who scores this" section added. | The human-only guarantee and the single-scorer limitation both belong in public, next to each other. |