Are the two numbers the Schelling world prints on-screen — the segregation index S and the unhappy fraction U — calibrated instruments? Do they read the exactly known combinatorics of the model's solvable configuration (the freshly randomized board), and does the famous mild-preference → strong-segregation claim survive against a preference-blind rival on the same machinery?
Units: E[S] on the initial random board — exact at every grid size and vacancy (binomial symmetry)
▶ Run this simulationRead how it works
Schelling segregation — the lab's segregation instruments calibrated on the model's one exactly solvable configuration: the initial random board is an iid Bernoulli field, so the SAME S (mean same-kind neighbour fraction) and unhappy-fraction U the screen prints have exact combinatorial values — S₀ = 0.499721 ± 0.000666 vs exactly 1/2 (0.06%, 0.4 SE), the 14-point tolerance staircase U(T = k/16) sits on the exact finite-binomial law point-by-point (max 1.9 SE) including its strict-inequality plateaus (T = 1/16 ≡ 2/16 and 7/16 ≡ 8/16, bit-identical unhappy sets on every board) and U(0) = 0 exactly, and the law tracks a 6× vacancy sweep — then Schelling's 1971 phenomenon lands as branch separation on the calibrated ruler: wanting just ~31% like neighbours (T = 5/16) settles every agent content at S = 0.7514 ± 0.0018 (strong segregation nobody asked for), demanding 87.5% never settles and stays at S = 0.52 (gridlock segregates LESS than tolerance), and a preference-blind churn rival with the identical move machinery NEVER leaves the random floor (max |S − 1/2| = 0.010, a 25× separation) — segregation is carried entirely by the mild preference rule
The generator is SchellingModule transcribed headless (iid Bernoulli fill: empty w.p. 0.1 else A/B w.p. 1/2; Moore-8 neighbourhoods with hard walls on the 80×80 grid; strict f < T unhappiness; 120 random unhappy-agent hops per tick to uniformly random empty cells; settle at unhappy < 0.004 measured every 6 ticks, 220-tick cap — one measured divergence from the shipped file, see module_systematics; mulberry32 PRNG) — no binomial formula anywhere in the generator; the exact staircase is computed in the scoring path only. Calibration: 24 seeds × the module's own 14-tolerance grid on the initial board. Phenomenon: 12-seed dynamics at T = 5/16, 6-seed monotone mid-range sweep (T = 2/16 → 8/16), 6-seed gridlock run at T = 14/16, 6-seed preference-blind rival scored on its worst excursion over the full 220 ticks, pinned-seed determinism regression. HONEST-MODULE CERTIFICATE (gates H–L): the shipped SchellingModule.ts is sha-pinned, mechanically type-stripped, EXECUTED against Babylon/DOM recorder stubs, and bit-locksteped against an independent replica for 4520 engine calls at fl(1/120) — a full 14-tolerance sweep plus three second-pass records — with grid, empty-list, unhappy-scratch, results, S/U, both 102400-float render buffers and every 5th-frame HUD innerHTML byte-exact at EVERY call (variable draws per tick, so lockstep IS the stream proof; 461,255-draw fingerprint pinned; the live stream sits in helpers _randomize/_tick that init/fixedUpdate call, and init itself consumes 12,157 draws before the first tick). The estimator is proven live on synthetic boards (all-A → S=1; a Moore-8 checkerboard whose diagonals are same-parity → S = (78²·½ + 312·⅖ + 4·⅓)/6400 and U = 316/6400 bit-exact — a closed-form fingerprint of neighbourhood + boundary classes + strict inequality; isolate exclusion; running-average weights recovered by synthetic _record calls). Closure: the executed screen measured across 6 seeds against the oracle. 22 gates in scripts/schelling-derisk.mjs (~3 s); tamper ⇒ exit 1 (sha ⇒ only H; strict-to-≤ rule flip ⇒ lockstep breaks at call 2; known-value ⇒ only the three S₀ gates, recovery unchanged). ?world=schelling.
0.000666
24
2.66
Bernoulli-trial combinatorics on the initial board (J. Bernoulli, Ars Conjectandi 1713; de Moivre 1738): with cell types iid uniform given occupancy, E[same-kind fraction] = 1/2 exactly and P(unhappy at T = k/16) is a finite binomial sum over the grid's three hard-wall boundary classes — no asymptotics, exact at N = 80². Non-circular: the generator codes ONLY the module's fill/measure/move rules (the reduction of the fresh board to a Bernoulli field is a property of that fill code, not a formula in it), the estimators are the module's own S and U, and the exact staircase is computed exclusively in the scoring path. INSTRUMENT-CALIBRATION scope, honestly stated (the paircorr/flock pattern): this validates the S and U rulers on the exactly solvable configuration and falsifies the churn rival; Schelling's phenomenon itself (mild preference → strong segregation; over-demand → gridlock) is gated as branch separation on the calibrated ruler because the settled S(T) curve has NO citable closed form (it depends on grid, vacancy, move rule and settle criterion — Schelling 1971 gives the phenomenon, not a constant) — the quantitative S(T) curve remains the open question the world investigates, now asked with calibrated instruments. Module systematics now MEASURED BY EXECUTING the shipped file (see module_systematics): the executed screen reads settled S(5/16) = 0.7474 ± 0.0019, the module prose's '≈ 0.76' sits at the top of the scatter, and the on-screen '(random ≈ 0.50)' anchor is exactly right.
MEASURED BY EXECUTING THE SHIPPED MODULE (gates H–L, added this run; module file untouched — sha-pinned b4a0adee…). (1) The screen's settled S at mild T = 5/16, executed over 6 seeds through the full first sweep pass, is 0.7474 ± 0.0019 SE (per-seed 0.7394–0.7517), vs the oracle's fresh-stream 12-seed 0.7514 ± 0.0018 — a 0.0040 gap ≈ 1.5 combined SE, consistent with seed scatter rather than bias (the module runs every tolerance off ONE continuing mulberry32 stream, the oracle reseeds per run; same physics, verified by 4520-call bit-exact lockstep). The module doc-comment's 'S ≈ 0.76' sits at the top of the per-seed scatter, a prose-only overstatement of ~0.01 left untouched so the sha pin stays stable. (2) CAP SEQUENCING, the one real divergence between the shipped file and the oracle generator (previously mis-stated as 'transcribed verbatim', now corrected in the reference): the module checks its 220-tick cap only at 6-tick measure boundaries, so every capped (gridlock) run actually runs and records at tick 222, while the generator caps at exactly 220 and reads its last measure from tick 216 — executed on all 6 seeds the effect on gridlock S is 0.5187 vs 0.5186, < 0.002, i.e. real but negligible for a churning board. (3) DISPLAY DEPTH: after the first full sweep pass the on-screen T→S list is NOT single-run — _record keeps a 0.5/0.5 running average across passes (verified exact by execution: stored === 0.5·old + 0.5·new at each of 3 pinned second-pass records), so a long-watching viewer sees pass-averaged values while the finding's quoted numbers are first-pass single-run. (4) TOP-END RICHNESS the two-branch summary understates: T = 11/16 (0.6875) never settles yet churns at S ≈ 0.90 — HIGH-segregation churn, identical unsettled set {11,12,14}/16 on all 6 executed seeds — so 'over-demanding segregates less' is true at 14/16 but the collapse toward the floor is not monotone in T; the screen displays this honestly with its *-marks. (5) ANSWER-FREE, certified per #138 by execution not token-scan: the three '0.5' literals coinciding with the known value are (a) the fill's type probability — the equal-population MODEL being simulated, from which the oracle's ½ is derived, (b)×2 the _record averaging weights — synthetic _record(0.9)+(0.7) returns 0.8, and the measurement slice (_sameFrac/_measure/_tick) contains none; the '(random ≈ 0.50)' HUD anchor is a static disclosed overlay; synthetic boards (all-A, Moore-8 checkerboard with its exact class sum (78²·½+312·⅖+4·⅓)/6400 and U = 316/6400, isolate exclusion, A-B pair) prove S and U are computed from the grid.
npm run derisk -- schelling (scripts/schelling-derisk.mjs — 22 gates: S₀ = 1/2 (SE + abs + worst-seed z), U(0) = 0 exact, 13-point staircase (max/mean z) + bit-exact plateaus, 4-point vacancy sweep (z + swing), mild-T settles + strong segregation, mid-range monotone, gridlock never settles + near floor, rival on floor + 10× separation, determinism pin, plus the honest-module certificate H–L (sha-pin + type-strip + rng-site census + stream-position-after-init, executed init state/mesh/camera/DOM pins, 4520-call bit-exact lockstep with pinned record/advance calls + 461,255-draw stream fingerprint + executed running-average identity, HUD byte-equality + synthetic-board estimator proofs, 6-seed executed-screen closure vs the oracle); ~3 s, exit non-zero on any miss)scripts/oracles/schelling.reference.jsonT. C. Schelling, 'Dynamic Models of Segregation', Journal of Mathematical Sociology 1, 143–186 (1971); J. Bernoulli, Ars Conjectandi (1713); A. de Moivre, The Doctrine of Chances (1738)