An instrument · a ring road · phantom jams

Phantom

On a ring road with no accident, no exit, no bottleneck, a traffic jam appears anyway, stands still while cars pour through it, and drifts slowly backward against the flow. Strip the cars to one rule — hop forward one cell if the cell ahead is empty (TASEP) — and it becomes exactly solvable: every configuration equally likely, flow given by ρ(1−ρ), the jam front moving at exactly 1−2ρ, so jams stand still precisely where the road carries the most traffic. Then the surprise: start the cars packed and let them spill — the roughness of the spreading front grows like the cube root of time, and its fluctuations, rescaled, follow the Tracy–Widom law — the same distribution as the largest eigenvalue of a random matrix, and a cousin of the GUE spacing law Repulsion found in the Riemann zeros: same random-matrix symmetry class, but there the bulk spacing law, here the edge fluctuation law.

I · Look

A jam from nothing

Below, a ring of cars (dots, coloured by speed) with the space-time diagram streaming beneath it: time runs rightward, position runs down the column. The diagonal band is the jam — drag the density slider and watch its slope change: it leans one way below ρ=½, flattens toward vertical (a standing jam) right at ρ=½, and leans the other way above it. That is the same sign change Section II measures directly. Beside it, a fixed reference: Nagel–Schreckenberg with vmax=5, randomisation switched on, so the stripes look like real motorway stop-and-go data.

Ring + space-time, chassis Blob-worker livestarting…
0.50 Left panel model:
Nagel–Schreckenberg, vmax=5, p=0.3 (fixed reference) — pale/amber = fast, deep red = stopped.
fast / movingstopped / jam
left panel current J, mean speedlive right panel (NaSch) current J, mean speedlive

TASEP has no interior "speed" beyond hop / no-hop, so its colour is binary (occupied vs empty) — a jam is exactly the same signal, a locally dense run of occupied cells that persists across many rows. NaSch cars carry a real velocity 0..5, so the colour ramp there is continuous.

II · The statistic

The fundamental diagram

Flow vs density, measured by a virtual loop detector on many independent rings, scattered onto the exact parabola J = ρ(1−ρ)·N/(N−1) (the finite-ring correction to the textbook ρ(1−ρ)). Second panel: the measured backward jam-wave velocity across ρ against the exact 1−2ρ — the sign change at ρ=½ is the punchline: jams stand still exactly where the road carries the most traffic.

Flow vs density, TASEP livecomputing…
measured, virtual loop detectorexact ρ(1−ρ)·N/(N−1)

The wave-speed sign change

measured (2nd-class tracer)exact 1−2ρ
measured peak flow (near ρ=½)exact max 0.2500 exact measured wave speed, ρ=0.3 / 0.5 / 0.7exact +0.400 / 0.000 / −0.400 exact
III · The deeper theory

The same law as the primes

Step initial condition: left half full, right half empty. Accumulate the centred, rescaled current fluctuation χ = (t/4 − J(t)) / (2−4/3 t1/3) over many independent seeds into a histogram, and watch it fill in the exact Tracy–Widom GUE density F₂′ — computed by the shared suite/numerics/twdist.js module, not a stored table. A matched-variance Gaussian is drawn behind it so the skew is visible: this is not a bell curve. This is the same GUE symmetry class as Repulsion's zeta-zero spacings, but a different member of the family — there the bulk spacing/pair-correlation law (Wigner surmise, sine kernel), here the edge fluctuation law (Tracy–Widom, Airy kernel) — reached this time from traffic. Convergence to Tracy–Widom is genuinely slow (order t−1/3), which this page reports honestly rather than hiding.

χ histogram, accumulating in the background livewarming up…
measured histogramexact F₂′ (shared twdist.js)matched-variance Gaussian
measured mean, sd (this run)exact (t→∞) −1.7711 / 0.9018 exact samples accumulated, t usedlive, this browser convergence with t (mean, this run)drifts toward −1.7711 as t−1/3 — slow, not a bug

The Repulsion rhyme. Repulsion found GUE's bulk spacing law (the Wigner surmise) and pair-correlation formula in the gaps between Riemann zeta zeros, arrived at from the eigenvalues of random Hermitian matrices. Here a different member of the same random-matrix family appears — the Tracy–Widom edge law — in the fluctuations of a traffic jam's edge, arrived at from a completely different starting point (particles hopping on a line). Same symmetry class, different statistic: that's part of what "universality" buys you.

IV · The dial

Turn up the density

Sweep ρ from empty to gridlocked. Landmarks: free flow, ρ=½ (maximum flow, standing jam waves), jammed — the 1−2ρ sign change is marked where it happens. A second control, the NaSch randomisation p: at p=0 the road is deterministic and phantom jams cannot appear once the transient clears; any p>0 switches them on. At a fixed (ρ,p) in the metastable window, the SAME road can sit on a free-flowing branch or a jammed branch depending only on how it started — that is hysteresis.

exact ρ(1−ρ)current (ρ, J), TASEP live

This marker is a live TASEP ring at the current ρ — the same comparison as Section II, so it sits right on the curve. The NaSch hysteresis pair below is a separate measurement, on its own scale (up to ρ·vmax), not plotted against this curve.

current J, here (TASEP, live ring) wave speed 1−2ρ hereexact

Hysteresis at vmax=5

0.15
free-flow branch (homogeneous start)live jammed branch (packed start)live gap between branches>0 means hysteresis is present here

Both branches are NaSch, run at the same (ρ, p) — the only difference is the initial condition. NaSch has no closed-form current at all, and its flow scale (up to ρ·vmax=5ρ) is not comparable to TASEP's ρ(1−ρ) above. A positive gap that survives many sweeps means the road has two coexisting stationary states, not one.

V · The game

Drive one car

You drive one car among NaSch traffic for sixty seconds. Gas (→ or W) tailgates: accelerate and close the gap. Brake (← or S) sheds speed fast when you're too close — but don't hold it down: held brake just decelerates you to a dead stop and keeps you there. Play greedily — hold gas, tailgate, brake late — and watch your own brake light seed a stop-and-go wave that comes back around the ring and hits you. Then try the losing-is-winning move: let go of both keys and coast — the built-in following gap keeps you back from the car ahead and absorbs the wave without you touching brake at all. Counterintuitively, you don't even trade your own speed for it: gap-keeping wins on both counts below — it's faster for you, and it roughly doubles the road's throughput. Both are scored.

ρ=0.16, vmax=5, p=0.01, p₀=0.5 (the metastable window) livePress Start — hold →/W to tailgate, tap ←/S to brake, or let go of both to hang back.
60.0s
youfaststopped
your average speed road throughput your stopped fraction
Press Start to begin.
kernel reference — always-greedy policy, run to convergencecomputing…live kernel reference — always-gapkeeper policy, run to convergencecomputing…live

The reference rows call the kernel's own driverGame() with a fixed pure strategy run for many steps — the same comparison in phantom_report.md (greedy throughput ≈0.42, stuck ≈46% of the time; gapkeeper throughput ≈0.79, essentially never stops). Your live round above is played by hand, so expect more noise than a fixed policy run to convergence — but the same qualitative gap should show up.

Provenance

What is exact, what is measured

Re-verify, right now, in this browser: the measured current matches ρ(1−ρ), the wave speed's sign flips at ρ=½, and the shared Tracy–Widom module is really the one in use (not the kernel's built-in fallback table).
Not run yet.

Live, exact, stored

The ring TASEP stationary current J=ρ(1−ρ)N/(N−1), the characteristic velocity 1−2ρ, and the Tracy–Widom GUE density F₂′ (from the shared twdist.js module) are all exact — closed forms or theorems, not fits. The fundamental-diagram scatter, the wave-speed measurements, the χ histogram, the dial's live readouts, and the driving game's scores are all computed live in your browser, in a background worker where noted, and tagged live. NaSch/VDR has no closed-form current at all — everything about it here is measurement.

The road canvases use a fixed "instrument ground" that inverts across themes on purpose (like Branch's beam/control pair and Flash's ember/flash): dark theme glows pale-to-amber-to-red on near-black; light theme runs pale-warm-ground to dark amber to red, so the same colour meaning reads on either background.

QuantityStatusValue / evidence
Ring TASEP stationary currentexactJ = ρ(1−ρ)·N/(N−1) — uniform stationary measure over all C(N,n) configurations (Spitzer 1970; Derrida matrix ansatz 1993). Verified in phantom.test.js and independently in ref/tasep_ref.py.
Characteristic (jam-wave) velocityexactv_c = dJ/dρ = 1−2ρ; the second-class particle's asymptotic velocity (Ferrari; Derrida–Lebowitz–Speer 1993). Positive for ρ<½, zero at ρ=½, negative for ρ>½.
Step-IC TASEP → Tracy–Widom GUEexact theoremLast-passage percolation (Johansson 2000): χ = (t/4 − J(t))/(2−4/3t1/3) ⇒ F₂. Convergence is slow, order t−1/3 — a proven feature, not a defect of this page's sampling.
Tracy–Widom GUE F₂′/F₂, shared moduleexactcomputed by suite/numerics/twdist.js (Painlevé II / Hastings–McLeod, not a lookup table) — see the self-test for a live bit-for-bit check that this page really delegates to it.
Fundamental diagram scatter, wave-speed measurementslivecomputed in your browser, this session, in a chassis Blob-worker; resample any time.
χ histogramliveaccumulates in the background while this tab is visible; more samples narrow the noise but convergence-with-t is inherent, not sampling error.
Nagel–Schreckenberg / VDR (no closed form)measuredparallel update with velocity-dependent randomisation (Barlovic et al. 1998); the metastable free/jam hysteresis window and the driving-game numbers are measured on the sizes used here — see kernel report §6.
Kernel's recorded driver-game runstoredρ=0.16: greedy throughput≈0.4186, stopped≈45.7% of the time; gapkeeper throughput≈0.7922, stopped 0% — phantom_report.md §5.
Determinismexactidentical seed ⇒ bit-identical ring / step results (the shared sfc32 PRNG).

References

F. Spitzer, Interaction of Markov processes, Advances in Mathematics 5, 246 (1970). B. Derrida, M. R. Evans, V. Hakim, V. Pasquier, Exact solution of a 1D asymmetric exclusion model using a matrix formulation, J. Phys. A 26, 1493 (1993). K. Nagel & M. Schreckenberg, A cellular automaton model for freeway traffic, J. Physique I 2, 2221 (1992). K. Johansson, Shape fluctuations and random matrices, Comm. Math. Phys. 209, 437 (2000). M. Prähofer & H. Spohn, work on KPZ scaling constants (2002/2004). C. A. Tracy & H. Widom, Level-spacing distributions and the Airy kernel, Comm. Math. Phys. 159, 151 (1994). R. Barlovic, L. Santen, A. Schadschneider, M. Schreckenberg, Metastable states in cellular automata for traffic flow, Eur. Phys. J. B 5, 793 (1998). Empirical stop-and-go wave speed ~15 km/h: Y. Sugiyama et al., Traffic jams without bottlenecks, New J. Phys. 10, 033001 (2008). Cited from knowledge: this build had no network, so exact volume/page numbers are unverified offline; the physics is checked numerically here and independently in the kernel's Python cross-check (ref/).

Contact the author: np56123@icloud.com