aidoesscience
aidoesscience › findings › Site percolation
ValidatingOracle-validated

A phase transition with no dynamics at all

Is there a sharp threshold at which random, independent site occupation suddenly connects across a whole lattice — a phase transition made of pure geometry, with no energy, no dynamics, no temperature?

Measured by the lab
0.592914
Known value
0.59274605
Relative error
2.80e-4

Units: dimensionless occupation probability (square-lattice site-percolation threshold; no closed form — Jacobsen 2015 graph-polynomial value 0.59274605079210(2))

The Site percolation simulation that produced this measurement

▶ Run this simulationRead how it works

The finding

A phase transition with no dynamics at all: random occupation of a square lattice snaps into edge-to-edge connectivity at p_c, recovered as 0.592914 vs 0.59274605 known — by SELF-BOOTSTRAPPED finite-size scaling: the transition WIDTH shrinks as L^(−1/ν) giving ν̂ = 1.367 (known 4/3, never plugged in), and that measured ν̂ extrapolates the crossing points to L = ∞. The leading-order extrapolation carries a real +8.9e-4 corrections-to-scaling floor (measured at 96,000 realizations/size); the canonical run's 1.7e-4 is one favourable draw of it, and the floor is now disclosed on screen and gated. The decisive pair: the SAME pipeline on the triangular lattice recovers the EXACTLY known p_c = 1/2 (Sykes–Essam star-triangle duality) to 1.1e-4 with the SAME exponent (ν̂_tri = 1.370) — the threshold moves with the lattice geometry, the exponent does not (universality). Below p̂_c the largest cluster VANISHES with L (frac 0.091 → 0.016 from L = 24 → 96: only finite islands); above, it is intensive (0.679 → 0.699). A 1-D chain's threshold escapes to 1 (N/(N+1) exactly) — dimension, not randomness, makes p_c < 1. The screen now runs this oracle's own estimator, bit-for-bit.

Method

Every site of an L×L lattice gets an independent uniform threshold u_i; sites are added in increasing-u order into a union-find forest with two virtual nodes (TOP glued to row 0, BOTTOM to row L−1). The u of the site whose addition first connects TOP to BOTTOM is the EXACT spanning threshold of that realization — one O(N log N) pass per lattice, no p-sweep (the threshold form of Newman–Ziff 2000). Across 9,600 realizations per size at L = 16…128: p̄(L) = mean spanning threshold, σ(L) = its width. The recovery is SELF-BOOTSTRAPPED: ν̂ is measured from the log-log slope of σ(L) vs L, then the crossing points p̄(L ≥ 24) are extrapolated linearly in L^(−1/ν̂) to L = ∞. Neither 0.5927 nor ν = 4/3 appears in the recovery — both are loaded from the reference only to score (asserted on the recovery source itself). Controls: the triangular lattice (one diagonal added per cell; p_c = 1/2 EXACT by Sykes–Essam 1964), the order parameter's L-dependence on either side of p̂_c, a 1-D chain (spanning needs every site), and a headless replica of the module's own on-screen Π = ½ sweep estimator at L = 72.

The law it recovers

spanning-threshold distribution concentrates at p_c with width ∝ L^(−1/ν); crossing points p̄(L) → p_c as L → ∞

Measurements, controls & cross-checks

Recovered abs error

0.000168

Seed robustness

Seeds
24
Mean
0.592913
Sd
0.00145
Se of mean
0.000296
Mean minus known in SE units
0.57
Note
each seed runs its own full pipeline (own ν̂, own extrapolation). The 24-seed mean sits 0.57 SE from the known value, but that is this seed base's luck rather than the estimator's accuracy: pooled at 10× the statistics the SAME estimator converges to 0.593639, +8.9e-4 (see estimator_floor). The SE below measures the spread of the recovery, not its distance from the truth.

Exponent nu

Recovered
1.3669
Known
1.3333333
Abs error
0.0335
Width fit r2
0.99985
Note
measured from σ(L) ∝ L^(−1/ν) over L = 16…128 (2.5% from the exact 4/3 — the residual is the known effective-exponent drift at small L), then USED for the p_c extrapolation: the recovery feeds on its own measured exponent, not the textbook one

Scan

LP barSigma
160.58910.06327
240.5913790.04762
320.5917220.038544
480.5919880.028175
640.5919970.023211
960.59230.017178
1280.5926120.013871

Control triangular

Known value exact
0.5
Recovered
0.500112
Abs error
0.000112
Nu recovered
1.3703
Nu gap from square
0.0034
Threshold gap from square
0.0928
Note
the same pipeline with the (+1,+1)/(−1,−1) diagonals added recovers the EXACTLY known triangular-lattice p_c = 1/2 (Sykes–Essam 1964 star-triangle duality — one of the few thresholds known in closed form). The threshold MOVES with the lattice (0.593 → 0.500, non-universal geometry) while ν̂ does NOT (1.367 vs 1.370 — the 2-D percolation universality class). The number is measured, not baked in.

Order parameter

P below
0.473
Frac L24 below
0.0912
Frac L96 below
0.016
P above
0.713
Frac L24 above
0.6791
Frac L96 above
0.6993
Note
below p̂_c the largest-cluster fraction VANISHES with L (ratio 0.18 from L = 24 → 96: only finite islands); above it is intensive (ratio 1.03: the 'infinite' cluster is real)

Control 1d

Chain means
N64
0.9848
N256
0.9961
N1024
0.99902
Analytic
N/(N+1)
Note
spanning a 1-D chain needs EVERY site, so the 'threshold' is max(u_i) with mean N/(N+1) → 1: no transition below full occupation. Dimension, not randomness, makes p_c < 1 — the percolation analogue of no-phase-transition-in-1-D

Module certificate

What
The SHIPPED src/modules/PercolationModule.ts is sha-pinned, mechanically type-stripped (83 rules, each at its exact hit count; TS scan empty; Math.random appears once, in the seed default) and EXECUTED in Node against recorder stubs, then driven through its own fixedUpdate loop until its measurement completes at call 1807 — the work schedule is seed-independent, so that call number is itself pinned.
Estimator replaced
The module used to headline a Π = ½ crossing sweep at a SINGLE L = 72 (28 probabilities × 80 lattices). That estimator could not reach p_c at any seed: the scan predicts p̄(72) = 0.59222, i.e. −5.3e-4 by construction, and its crossing carried several times the oracle's noise while printing three decimals. It was REPLACED by this oracle's own recovery — threshold-order union-find (exact per-realization spanning thresholds) + the same self-bootstrapped finite-size scaling — at 1600 realizations per size over L = 16…128, 8 blocks. Disclosure was not a fix: the gap was removable, so it was removed.
Bit exact
Screen and oracle are now ONE instrument, checked as such: all 7 p̄(L) and all 7 σ(L), plus p̂_c, its ±, and ν̂, are bit-identical (Object.is) between the executed module and this oracle's independently-written recovery functions on the same stream.
Screen reads
p_c = 0.593742 ± 0.00079 (16 executed runs, seed sd; range 0.592164–0.594964) and ν̂ = 1.3750 ± 0.0228, agreeing with the run's own pooled oracle to 2.33 combined SE. The displayed ± is measured live, not stored: the value is the fit on the pooled moments and the ± is sd(per-block fits)/√8 (the mean of per-block fits would itself be biased by the fit's nonlinearity). It tracks the true seed spread to within ~25%.
On screen disclosure
The HUD prints the measured p̂_c ±, the measured ν̂ beside the exact 4/3, the known p_c, and the signed gap — computed live from the two numbers above it and gate-checked as live arithmetic rather than a stored constant. The chart is now the extrapolation itself: p̄(L) against L^(−1/ν̂), the fitted line extended to x = 0 and the intercept marked, so the L → ∞ step the recovery performs is visible rather than described.

Estimator floor

Headline is one draw
The canonical recovery (0.592914, |Δ| = 1.7e-4) is ONE draw of the estimator at seed_base 2000, and a favourable one. Pooling 96,000 realizations per size — 10× the canonical run, statistical SE 9.4e-5 — the leading-order estimator converges to 0.593639, so its real systematic is +8.9e-4, about 5× the canonical run's apparent error. Six independent 24-seed bases land between 0.592886 and 0.593541, a spread consistent with each base's own ~3e-4 SE. Per-seed and pooled fits agree to ~1e-5, so this is not a nonlinearity artefact, and a consecutive-vs-hashed seed control cleared the PRNG (group-mean scatter 3.7e-4 matches the claimed SEs).
What it is
Corrections to scaling. The recovery extrapolates p̄(L) in L^(−1/ν̂) keeping only the LEADING term, and the truncated subleading terms have not died at L ≤ 128. Two signatures, measured at 96,000/size: the bias shrinks monotonically as the small sizes leave the fit window (+8.9e-4 at L ≥ 24 → +5.7e-4 at L ≥ 32 → +4.1e-4 at L ≥ 48), and adding ONE subleading term to the same data collapses it to −2.6e-4. The same truncation is why ν̂ reads 1.372 rather than the exact 4/3.
Gated
Gate L scores what a single run can RESOLVE: across 16 executed screen runs the floor is +9.96e-4 = 5.0 SE (one-sided, not noise), the exponent shows the same truncation at 7.3 SE, and the oracle's own pooled recovery sits on the same side — so the floor belongs to the shared estimator, not to the display. The fit-window ladder itself is deliberately NOT gated in-run: at the canonical 9,600 realizations/size the pooled p_c carries SE ~3e-4, the same size as the effect, so the ladder is noise at that budget (it was measured offline at 96,000/size instead). Gating it would have meant padding a tolerance until noise fit under it. No tolerance was widened anywhere: canonical_abs was already 0.0015 and every gate passes on the science as it stands.

Non circular

true

Note

recovered p_c by finite-size scaling fed only by its own measured exponent; p_c and 4/3 are loaded from the reference only to score, gate G asserts the recovery source contains neither, and gate I asserts the shipped module's measurement path names no known value either (KNOWN_PC/KNOWN_NU are a display-only table declared outside it). Tampers all exit 1, each leaving the physics gates A–G green: the reference known_value → 0.55 (A/B, recovery unchanged), the module's sha (I), the spanning condition TOP≡BOT → TOP≡site (H/K/L), the fit window 24 → 16 (H), a fed exponent ν = 4/3 instead of a measured one (H/L), the HUD's digits toFixed(5) → toFixed(3) (J), and the block count 8 → 2 (H). All 12 derisk gates pass in ~134 s.

What it reduces to

Broadbent–Hammersley percolation (1957): occupy each site of a lattice independently with probability p; connectivity undergoes a sharp phase transition at a critical p_c — the simplest system in statistical mechanics with a genuine critical point, made of pure geometry (no Hamiltonian, no temperature, no dynamics). This world VALIDATES the square-lattice site threshold p_c = 0.59274605 (Newman–Ziff 2000, Jacobsen 2015) and the exact 2-D correlation-length exponent ν = 4/3 (den Nijs 1979; proven via SLE₆ by Smirnov–Werner 2001), and it is arranged to be NON-CIRCULAR and SELF-BOOTSTRAPPED: the per-realization spanning threshold is exact (sites added in random-threshold order through union-find), the exponent is measured from the width scaling σ(L) ∝ L^(−1/ν), and that measured ν̂ — not the textbook 4/3 — extrapolates the crossing points to the thermodynamic limit. The triangular-lattice control lands on the EXACTLY known p_c = 1/2 (Sykes–Essam 1964) with the same ν̂ — the cleanest possible demonstration that thresholds are non-universal geometry while exponents are universality-class properties, the same structure the logistic world found in Feigenbaum's δ (same constant for the sine map, different constant for a quartic maximum). The order-parameter gate shows what 'infinite cluster' means operationally: below p_c the largest cluster's lattice fraction vanishes with system size; above, it is intensive. The 1-D control (threshold = max of N uniforms → 1) is the connectivity analogue of the absence of 1-D phase transitions. Percolation's anatomy — order parameter, diverging correlation length, universal exponents — is the same as the Ising magnet's (?world=ising) with every dynamical ingredient stripped away; it is the lab's cleanest critical point, and the union-find spanning machinery is shared with nothing else in the catalogue. Distinct from ?world=dla (growth) and ?world=sandpile (self-organized criticality): here criticality is TUNED by p, not self-organized. RUNG 6 (honest module): the on-screen number is no longer a weaker replica of this recovery but the recovery ITSELF — the shipped module is executed inside the derisk and its p̄(L), σ(L), p̂_c, ± and ν̂ are bit-identical to the oracle's own functions, so screen and oracle are one instrument rather than two things that happen to agree. What that honesty exposed is recorded rather than hidden: the leading-order FSS extrapolation carries a +8.9e-4 corrections-to-scaling systematic, the canonical seed base flatters it ~5×, and both facts are now on screen, in this finding, and gated.

Confidence & reproduction

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

Sources

S. R. Broadbent & J. M. Hammersley, 'Percolation processes I. Crystals and mazes', Proc. Camb. Phil. Soc. 53, 629 (1957). M. E. J. Newman & R. M. Ziff, 'Efficient Monte Carlo algorithm and high-precision results for percolation', Phys. Rev. Lett. 85, 4104 (2000) — p_c = 0.59274621(13). J. L. Jacobsen, J. Phys. A 48, 454003 (2015) — p_c = 0.59274605079210(2). M. F. Sykes & J. W. Essam, J. Math. Phys. 5, 1117 (1964) — triangular site p_c = 1/2 exact. M. P. M. den Nijs, J. Phys. A 12, 1857 (1979) — ν = 4/3. S. Smirnov & W. Werner, Math. Res. Lett. 8, 729 (2001) — exponents proven for triangular site percolation.

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.