The Verification Venue · pointed at what four hand-drawn maps cannot tell you

Ten Million Maps of One State

Every account of gerrymandering hands you a handful of alternative maps and invites you to judge whether the enacted plan is extreme. Four maps cannot carry that judgement in either direction. This page draws one synthetic state, 150 precincts on a 10 × 15 grid, and samples twelve and a half million recombination steps across every core your browser has, building the ensemble of balanced contiguous plans live: a median, a histogram, a percentile for any plan you can draw, and the checks that make the big number believable.

The state is synthetic and stated: 150 precincts, 100 voters each, minority (Blue) share calibrated to exactly 48.67% (7,300 of 15,000 voters), partisan strength spatially correlated by a stated integer rule with seed 20260825. It is carved into 10 districts of 1,500 voters each at the ideal, with a balance window of between 12 and 18 precincts, and each run of the ensemble proposes 12,582,912 steps. Nothing here is a real jurisdiction, and no number on this page describes one. Below, a live chain flashes sampled plans onto the map while the full ensemble builds behind it.

← precinct shade: Blue vote sharesampled plan →

Ensemble median Blue seats

·

proportional would be 5 · launch the run

Live chain: current plan

·

one illustrative chain, stepping in front of you

At 0 the minority's voters are stirred evenly through the state and nearly every district mirrors the 48.67% statewide share. At 10 they live in correlated blocks. Drag it and watch the median move with no partisan intent anywhere.

Moves are checked against the same contiguity and balance rules the chains obey, and rejected with a reason if they break them.

The full run

Idle. The battery below runs first; the ensemble needs your click.

Each proposed step picks two adjacent districts, merges them, draws a uniform spanning tree of the merged 24-to-36-precinct subgraph by Wilson's algorithm, and cuts the tree edge that splits it into two population-balanced halves, each between 12 and 18 precincts, rejecting the step if no such edge exists. A district's seat goes to the party with strictly more voters; exact ties go to the majority party, a rule the planted control below depends on. The chains carry no partisan information at all: they see precincts, borders and population, never votes.

The checks · run in front of you, not described at you

Two implementations of one contract: the compiled engine below, and a slow, obvious JavaScript twin written from the same stated rules. They must agree on every small battery row before any headline number is shown.

battery rowwasm fingerprintreference fingerprintmatch

waiting

The control: press the button and the reference's balance tolerance is quietly broken by one. The comparison must go red, or the agreement above proves nothing.

not yet run

The planted object: press the button and the pipeline's input data is replaced with a stated pattern whose answer is known by symmetry, every precinct exactly 50/50, so every district is exactly tied and the seat histogram must collapse to zero. The same unmodified engine has to find that.

not yet run

Full-size checks appear here after the run: the second decomposition, the per-plan invariants, the packed plan's percentile, the wasm hash.

What none of this rules out: two decompositions agreeing rules out boundary and bookkeeping errors and very little else; the small-state enumeration check ties the corrected sampler to an exactly known distribution but cannot reach full size; and nothing here says anything about any real jurisdiction or anybody's intent. Run it yourself: node research/ten-million-maps-of-one-state/verify-ten-million-maps-of-one-state.mjs. The reproducible-build check is offline: it lives in that file, since your browser has no compiler.

The cost, counted not estimated

operations: ·

wall time: ·

workers: ·

vs main-thread JavaScript: ·

What the ensemble says that four maps cannot. A specific plan built to pack the minority's voters into as few districts as the balance rule allows is not a curiosity at the edge of imagination; the page scores it against the ensemble and prints its percentile. And the uncomfortable half: the neutral median is not proportional. Turn the correlation slider and watch the median move away from the 48.67% vote share even though every plan in the ensemble is balanced, contiguous and drawn blind. Geography alone, with no intent, produces a systematic seat bias.

Which chain? The page runs a second, genuinely different chain, a boundary-flip chain, and prints both medians side by side. They differ, because the choice of chain is a modelling choice contested in the literature, not a neutral fact. Conclusions quoted on this page are the ones that survive both chains, and the page says which ones those are once both runs land. Independent short chains and one long chain are not the same estimator unless the chains mix; the first 10% burn-in of each chain is discarded, and the quarterly histogram distances in the check panel are shown rather than convergence asserted.

What's exactly true here, and what's a model

Exactly true. The state and its partisan field (an integer rule, seed 20260825, calibrated to exactly 7,300 minority voters). The balance and seat rules. The violation counts: every single sampled plan at full size is swept for contiguity, population balance and exact partition, and the count of failures is printed and must be zero. The small-state cross-method check: on a 4 × 5 state every balanced contiguous plan is enumerated exhaustively and the corrected chain is compared against the exact spanning-tree-weighted distribution. The wasm hash: the page refuses to run a binary that does not match the one the pipeline compiled and hashed.

Modelled. The ensemble itself: a Monte Carlo estimate from dependent samples, with 10% burn-in discarded per chain. The full-size chain is the uncorrected recombination chain; the exact-measure guarantee is established on the small state with the correction switched on, and the verifier prints how far the uncorrected chain sits from the exact distribution there. The speed factor against main-thread JavaScript is measured on a slice and extrapolated, and the slice fraction is printed beside it.

Not universal, and not real. One synthetic grid, one seed, one family of chains. Real redistricting turns on population data, municipal boundaries and legal constraints this page does not have. An outlier plan is evidence about a plan's shape under a stated chain, never about anybody's motive.