Why does a road jam — and is there a best density at which it carries the most cars?
Units: cars per bond per sweep — the maximal TASEP steady-state current J_max = ¼ at half filling (L → ∞); secondary knowns: J(ρ) = ρ(1−ρ), finite-ring J_L = ρ(1−ρ)·L/(L−1), rival zero-range current ρ/(1+ρ)
▶ Run this simulationRead how it works
Why a road jams, weighed exactly — and the road on screen is the real one: with the generator coding ONLY the exclusion hop rule (a car moves forward iff the site ahead is empty), the counted current lands on the exact TASEP fundamental diagram — J(½; L=1000) = 0.250158 ± 0.000226 vs the exact stationary-measure value 0.250250 (0.4σ), all nine module-mirror densities on the finite-ring parabola ρ(1−ρ)·L/(L−1) to 0.15% mean, fitted peak at ρ* = 0.5002, particle–hole symmetry ≤ 1.1σ on every mirror pair, the finite-size correction ITSELF parameter-free (intercept 0.25019 ± 0.00012, slope 0.2388 ± 0.0084 vs the predicted ¼), and the stacked-car rival monotonic/5.2×-asymmetric/1025σ off; PLUS the shipped TASEPModule executed and certified bit-for-bit: sha-pinned type-stripped source run 2400 lockstep calls at fl(1/120) against an independent replica (one shared mulberry32 stream: 900 placement draws in init, 9000/tick — all bit-exact), HUD + SVG chart byte-equal at all 400 writes, and the on-screen 'mean error vs ρ(1−ρ)' line proven to BE the finite-ring excess: pooled over 5 executed runs (seeds 1,2,3,8 @1.2M attempts/lane + certified seed 7 @2.39M) it reads 0.499% vs the predicted 1/(L−1) = 0.503% floor
Generator = the hop rule and a counter, nothing else: on a ring of L sites with N = round(ρL) cars placed on uniformly random distinct sites (the module's own partial Fisher–Yates placement — itself the exact stationary measure), each attempt picks a uniform random site; if it holds a car and the site ahead is empty, the car moves. J = hops/attempts (1 sweep = L attempts), mulberry32 rng, seeds 1000+7919s — dynamics, estimator, ring size L=200, and the nine densities are the on-screen TASEPModule's own, so the diagram gate is a literal module mirror. Gates: (A) headline J(½) on L=1000, 12 seeds × 3000 sweeps, vs the exact uniform-measure current N(L−N)/(L(L−1)) within 4σ/0.15%; (B) all nine densities on the finite-ring parabola within 4.5σ each, mean rel < 0.2%; (C) OLS-quadratic vertex ρ* = ½ ± 0.005 and a ≥50σ downturn J(0.9) < J(0.5); (D) particle–hole symmetry within 4σ per mirror pair; (E) perturbation — ring-size sweep L ∈ {50,100,200,400,1000}: linear fit of J(½;L) against 1/(L−1) must return intercept ¼ (the known value recovered by EXTRAPOLATION, never by correcting data with the law) AND slope ¼ (the correction amplitude is itself parameter-free); (F) rival — same harness, exclusion deleted (cars stack; a unit-rate zero-range process): must be monotonic, symmetry-breaking, ≥50σ off; (G) scoring self-test. Every known number (¼, ρ(1−ρ), N(L−N)/(L(L−1))) loaded from the reference or derived in the SCORER only — nothing but the hop rule generates the data.
TASEP on a ring under random-sequential updates has an exact stationary state: the UNIFORM measure over all C(L,N) configurations (pairwise balance), so P(hop per attempt) = P(occ_i=1, occ_{i+1}=0) = N(L−N)/(L(L−1)) — the parabola ρ(1−ρ) times L/(L−1). Flow is maximal at HALF filling (J_max = ¼): below it there are too few cars, above it too few gaps, and the exchange symmetry cars ↔ holes forces J(ρ) = J(1−ρ) exactly.
12/12 pass in ~4 s, fully deterministic (fixed seeds); tampers all exit 1: known_value → 0.3 ⇒ gate E FAIL with every recovered current byte-identical; sha ⇒ H only; 'order' (sweep-major → lane-major update loops in the executable — statistically identical physics, gates A–G AND the closure physics scoring stay green at 3.9σ) ⇒ lockstep J catches at call 1 (occ[0]@1, the first reallocated draw of the shared stream) — only the bits see it; 'banner' (HUD footer text) ⇒ J first HUD write + K with every state counter bit-green
The exact fundamental diagram of the totally asymmetric simple exclusion process (MacDonald–Gibbs–Pipkin 1968; Spitzer 1970; Derrida 1998): uniform stationary measure on the ring ⇒ J_L = N(L−N)/(L(L−1)) → ρ(1−ρ), peak ¼ at ρ = ½, particle–hole symmetry. Non-circular because the generator contains only the local hop-with-exclusion rule and a hop counter — no ρ(1−ρ), no ¼, no combinatorics, no L/(L−1) anywhere in the generation; the exact formulas live exclusively in the scorer, and the headline ¼ is reached by empirical 1/(L−1) extrapolation of five measured ring sizes rather than by correcting data with the law under test. The recovery is sharper than a 'the curve looks like a parabola' demo: it pins the exact FINITE-ring current (a stationary-measure statement, not just the thermodynamic limit) at 0.4σ, resolves the parameter-free finite-size slope ¼ at 4.5%, and kills the no-exclusion rival structurally — one deleted constraint turns the parabola monotonic, exactly as the zero-range mapping predicts (measured rival current at ½ lands on its own closed form 1/3). Limits: random-sequential updates only (parallel-update TASEP has a different exact diagram — not tested); the ring geometry only (open-boundary phase diagram with its maximal-current phase not probed); currents, not KPZ current FLUCTUATIONS (that exponent is ?world=kpz's finding).
The on-screen TASEPModule (L = 200, nine lanes, J = hops/attempts, random-sequential) measures the IDENTICAL observable the oracle's gate B mirrors, and since this run that is no longer an inference: gates H–L EXECUTE the sha-pinned shipped module headless at the engine's fl(1/120) clock and prove it bit-for-bit against an independent replica (the earlier note that the module 'is not bit-reproducible headless' conflated wall-clock frame TIMING with the dynamics — at the engine protocol every quantity is deterministic in the seed, and the 2400-call lockstep + 400 byte-equal HUD/chart writes are the proof). The one real systematic is now PRICED BY EXECUTION: each lane converges to the exact finite-ring value ρ(1−ρ)·200/199, a uniform +0.503% (= 1/(L−1)) above the ρ(1−ρ) parabola the HUD prints beside it, so the chart's 'mean error vs ρ(1−ρ)' has a floor no averaging removes — the 5 executed runs read {0.49, 0.38, 0.47, 0.53, 0.62}% (seeds {1,2,3,8} at 1.2M attempts/lane, certified seed 7 at 2.39M), pooled 0.499% vs the predicted 0.503%: the displayed 'error' IS the finite-ring excess, not noise, and at ρ = ½ the certified screen shows J 0.251 against the printed thermodynamic 0.250 exactly as the L/(L−1) factor demands. Beyond that the HUD rounds to 3 decimals, so the residual display quantization is ±5e-4 (±0.2% at the peak), smaller than the disclosed floor. No module code was changed this run — the world climbs validated → validated + honest module entirely through the oracle side.
npm run derisk -- traffic (scripts/traffic-derisk.mjs)scripts/oracles/traffic.reference.jsonC. T. MacDonald, J. H. Gibbs & A. C. Pipkin, Biopolymers 6, 1 (1968); F. Spitzer, Adv. Math. 5, 246 (1970); B. Derrida, Phys. Rep. 301, 65 (1998); D. Chowdhury, L. Santen & A. Schadschneider, Phys. Rep. 329, 199 (2000); M. R. Evans & T. Hanney, J. Phys. A 38, R195 (2005).