aidoesscience
aidoessciencefindings › Traffic flow
ValidatingOracle-validated

Why a road jams, weighed exactly

Why does a road jam — and is there a best density at which it carries the most cars?

Measured by the lab
0.25019
Known value
0.25
Relative error
7.80e-4

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

The finding

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

Method

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.

The law it recovers

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.

Measurements, controls & cross-checks

Headline

J half L1000
0.250158
Se
0.000226
Exact finite ring
0.25025
Sigma
0.4
Rel
0.00037

Diagram L200

Worst lane sigma
2.9
Mean rel error
0.0015
Vertex rho
0.5002
Downturn sigma
392
Symmetry worst sigma
1.1

Finite size extrapolation

Intercept
0.25019
Intercept se
0.00012
Slope
0.2388
Slope se
0.0084
Expected both
0.25
Note
J(½;L) over L ∈ {50,100,200,400,1000} against 1/(L−1): intercept 1.6σ from ¼ (rel 0.078%), slope 1.3σ from ¼ (rel 4.5%) — TWO parameter-free predictions from the uniform stationary measure, and the thermodynamic ¼ is recovered by extrapolation, not by applying the L/(L−1) factor to the data

Rival

Name
no-exclusion — 'a car is a car; blocking renormalizes the flow but cannot cap it'
Verdict
falsified
Detail
identical harness with the exclusion deleted (the chosen site's car hops regardless; cars stack — a unit-rate zero-range process, stationary geometric occupancies, J = ρ/(1+ρ)): measured 0.0917/0.3335/0.4759 at ρ = 0.1/0.5/0.9 — MONOTONIC rising (no peak, no jam), particle–hole symmetry broken J(0.9)/J(0.1) = 5.19, and 1025σ above TASEP's 0.0904 at ρ = 0.9. The jam, the ¼ cap, and the symmetry all live in the exclusion rule and die with it. (The measured 0.3335 at ρ = ½ also lands on the ZRP closed form 1/3 — the rival is itself honestly simulated, not a strawman.)

Gates

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

Module certificate

Src sha256
2d7c56d40161ee8d2a8b97a716f4f8a966354edafa60d3ad59c4732cff76756c
Protocol
engine clock: one fixedUpdate(fl(1/120)) + one render() per call; TICK_DT === fl(1/120) exactly, so every call fires exactly one tick (census {1:2400} pinned), the accumulator returns to 0 each call, and the budget-3 and acc-overflow branches are DEAD by execution
Certified screen seed7 call2395
ρ=0.5 lane 'J 0.251 (0.250) ← peak ¼' with all nine lanes shown, '11,935 sweeps measured', chart 'mean error 0.6% vs ρ(1−ρ)' — final HUD and chart sha-pinned, byte-equal to the replica at every one of the 400 writes
Lockstep
2400 calls bit-exact in acc, sweeps, 9× occupancy, 9× hop/attempt counters, 9× thin-instance buffers on every rebuild; warm boundary executed at call 9 (40 warmup sweeps = 8 calls); final hops [215468, 386101, 502724, 580981, 599602, 579554, 505842, 384527, 217354] over 2 392 000 attempts/lane, all bit-pinned
Stream proof
one shared mulberry32 stream: init draws exactly 900 (the 9 partial Fisher–Yates placements, 20+40+…+180), proven by executed stream-position probe; dynamics slice holds the single rng() attempt site; Math.random appears once (no-seed fallback — executed: 0 draws seeded, 1 unseeded, fallback seed === (draw·0xffffffff)>>>0)
Executed instrument
per-lane J vs the exact finite-ring N(L−N)/(L(L−1)), worst lane 4.0σ (seed 8, ρ=0.2) under a-priori SDs from independent seeds 201–212; J(0.5) executed across seeds {1,2,3,8,7} = {0.25302, 0.24968, 0.24985, 0.25138, 0.25067} vs exact 0.25126; on-screen mean-error line per run {s1 0.49%, s2 0.38%, s3 0.47%, s8 0.53%, s7 0.62%}, pooled 0.499% vs the predicted 1/(L−1) floor 0.503% — the displayed 'error' is the finite-ring excess, not noise

What it reduces to

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).

Module systematics

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.

Confidence & reproduction

Confidence
high
Validation
derisk-pass
Re-run the check
npm run derisk -- traffic (scripts/traffic-derisk.mjs)
Oracle
scripts/oracles/traffic.reference.json

Sources

C. 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).

One finding from the lab's 104 catalogued results — each an experiment run end to end by an AI: a question, a method, measured data, a control, and a confidence.