aidoesscience
aidoessciencefindings › Phyllotaxis
ValidatingOracle-validated

Validated → validated + honest module

Why do sunflowers, pinecones and daisies place their florets at the golden angle ≈137.5°? Is that angle actually SELECTED by efficient packing — recoverable from geometry with the golden ratio nowhere in the recovery — and can the lab show WHY the most-irrational angle wins over every rational?

Known value
137.50776

Units: degrees (the golden angle 360°/φ² = 360°·(2−φ), φ = (1+√5)/2)

▶ Run this simulationRead how it works

The finding

Validated → validated + honest module: the derisk now EXECUTES the shipped PhyllotaxisModule.ts, and the screen's own golden angle is gated. The module's GOLDEN static (360·(2−φ) from Math.sqrt(5)) === the oracle's known_value BIT-FOR-BIT; its O(N) bucket-grid _measure — whose exactness the source only ASSERTED in a comment — equals an exhaustive O(N²) min-NN over its own float32 positions STRICTLY at all 35 probes across [130°,145°], with the window max 1.54619 < the 1.6 cell that makes a 3×3 search exact; the real fixedUpdate driven 3600 engine ticks at fl(1/120) is bit-identical to an independent replica at EVERY tick (α/gap/best-α/best-gap), with ZERO step deficit checked not assumed (1800/1800 sim ticks, accumulator exactly 0) plus buffer sha256 and HUD pinned. The on-screen headline is RECONCILED, not tolerated: best α = 137.50667° is exactly node 118 (to 5.0e-12) of the module's own 0.046667°/sample grid, the nearest node to 137.50776°, so its −0.0011° residual (rel 7.98e-6) IS the sampling quantisation and nothing else. The pass also found gate E vacuous — its slice ran end-before-start, so the non-circularity token scan had been testing an EMPTY STRING for the world's whole validated life; repaired and given a meta-self-test that plants a banned token and requires the scanner to raise it. Original result unchanged: the golden angle is recovered from PACKING GEOMETRY ALONE, φ nowhere in the search: a blind sweep of the divergence angle of a Vogel sunflower spiral (floret n at angle n·α, radius √n), scoring the largest minimum nearest-neighbour gap, lands its global optimum at α* = 137.512° ± 0.001° vs the golden angle 360°/φ² = 137.5077° (rel |Δ| = 3.2e-5), invariant across floret counts N = 1000–2200. The recovery uses only √n, sin, cos and a min-distance objective — no φ, no √5, no target angle — so 137.5077° is loaded only to score. WHY it wins is made measurable: at the golden angle the minimum gap is SCALE-INVARIANT (1.5462 √n-units, CV 0.005% across N), the signature of the 'most irrational' number; every rational angle instead SPOKES — α = 144° (=2/5 turn → 5 rays) has a min gap that decays as N^(−1/2) (fitted log-log slope −0.501) to 55× under the golden gap by N = 8000 — and even the best competing NOBLE optimum near 99.5° decays (1.512 → 1.395), so the golden angle is the UNIQUE scale-invariant optimum, not the best of equals (Vogel 1979; Ridley 1982).

Method

Vogel's model places floret n at polar angle n·α and radius √n, tiling the disc at uniform areal density for ANY divergence angle α. The packing-uniformity objective is the minimum nearest-neighbour gap among the first N florets (computed exactly via a 2.2-cell bucket grid + 3×3 block search; the global-max gap over all α is ≈1.546 < the cell, so any closer pair is always in an adjacent cell). The recovery is BLIND and φ-FREE: for each N it (a) coarse-scans the gap over the full divergence range [1°,179°] at 0.25° (δ and 360−δ are mirror spirals), (b) takes the top-6 deduped coarse peaks as multi-start seeds, (c) zoom-refines each with a 5-level ×16-point local grid + a parabolic vertex, (d) returns the highest refined peak. The golden angle 137.5077° is loaded from the reference ONLY to score. ESTIMATOR SUBTLETY (disclosed): the gap peak at the golden angle is a cusp whose half-width shrinks ∝1/N, so a fixed-resolution grid must undersample it once N is large — a broader lesser-noble optimum near 99.5° then wins a coarse argmax (numerical, not physical). The locator therefore runs at moderate N (1000–2200) where 0.25°+zoom resolves the cusp, and the physics is pinned separately by the N-invariance of the peak HEIGHT, which is angle-free and immune to the artifact. Thirteen gates. PHYSICS (this oracle's own float64 generator): (A) located angle N-mean, (A') worst single N, (A'') golden is the GLOBAL optimum (gap margin over the 2nd-best refined peak); (B) peak-gap N-invariance in [1.50,1.60] at CV<1%; (C) rival falsification — rational 144° gap decays as N^(−1/2) and ≥10× under golden at N=8000; (D) uniqueness — the best non-golden noble optimum also decays; (E) non-circularity source-token scan, REPAIRED this run after it was found to be scanning an empty string, + (E'') a meta-self-test that a planted banned token trips the scanner + (E') a wrong-reference scoring self-test. HONEST MODULE (the shipped src/modules/PhyllotaxisModule.ts, sha256-pinned, mechanically TS-stripped, executed through `new Function` against Babylon/DOM recorder stubs — because A–E test the physics and say nothing about the file a browser actually runs): (F) source pin + strip verification + executed init() builds the screen (1 mesh 'phyllo_seed', 1200 thin-instances at stride 16, HUD #phs-phyllo) and the module's own GOLDEN static === known_value bit-for-bit; (G) executed _recompute === the certified float32 Vogel spiral at all 1200 florets and executed _measure === an exhaustive O(N²) min-NN STRICTLY at 35 probes, turning the source comment's exactness assertion into a measurement; (H) the real fixedUpdate driven 3600 engine ticks at fl(1/120), bit-compared to an independent replica at every tick, zero step deficit, buffer sha256 + HUD pinned; (I) the on-screen best α reconciled as its own sampling-grid quantisation and (I') the on-screen peak gap vs the oracle plus the module's printed 'a degree off' claim measured with the module's own _measure.

The law it recovers

Vogel spiral (floret n at angle n·α, radius √n); the golden angle α* = 360°/φ² maximises the minimum nearest-neighbour gap (Ridley 1982 packing-optimality). φ is the 'most irrational' number (continued fraction [1;1,1,…], slowest rational convergence), so its spiral never spokes.

Measurements, controls & cross-checks

Recovered angle mean

137.5122

Recovered angle rel error

3.2300e-5

Recovered angle se

0.0014

Recovered per N

NAnglePeak gap
1000137.5161.5463
1400137.5111.5462
1800137.5111.5461
2200137.5111.5461

Worst single N rel error

6.2100e-5

Global optimum margin

0.0341

Second best competitor deg

99.5

Scale invariance

Peak gap units
√n
Peak gap
1.5462
Cv across N
5.0000e-5
Note
at the golden angle the minimum gap is invariant to floret count (CV 0.005%) — the scale-invariant packing that is the golden angle's signature; a rational or lesser-noble angle has no N-invariant gap

Rival

Name
rational divergence α = 144° = (2/5) turn → 5 radial spokes
Gap N1000
0.0792
Gap N8000
0.028
Loglog slope
-0.501
Expected slope
-0.5
Golden over rival at N8000
55.3
Note
a rational p/q divergence lines every q-th floret onto one ray; along each spoke floret k is at radius √(kq) so consecutive same-spoke gaps shrink as N^(−1/2) — the min gap → 0 for a large head, 55× under the golden gap already at N=8000. Nice fractions cannot pack a growing head

Uniqueness

Competitor deg
99.5
Gap N1000
1.512
Gap N8000
1.395
Note
the best competing NOBLE optimum (~99.5°, itself an irrational angle) also decays with N while the golden gap holds flat — so the golden angle is the UNIQUE scale-invariant optimum, not merely the largest of several equal peaks

Non circular

true

Honest module

Certificate
gates F–I EXECUTE the shipped src/modules/PhyllotaxisModule.ts — sha256-pinned (6317580c…), TypeScript stripped mechanically (17 exact pinned replacements each asserted to occur exactly once + 2 bulk prefixes with asserted counts 9/8 + a residual-TS regex, so nothing unread reaches `new Function`), instantiated against Babylon/DOM recorder stubs. The screen the browser draws is now inside the oracle, not merely described by it.
Golden static bit exact
true
Grid exactness
the module measures packing with an O(N) bucket grid over 1.6·SCALE cells whose exactness its own source comment merely ASSERTS. The gate replaces the assertion with a measurement: the EXECUTED _measure equals an exhaustive O(N²) minimum over the module's own float32 positions STRICTLY (===) at all 35 probes spanning [130°,145°], and the largest min-NN anywhere in the window (1.5461920) is under one cell (1.6) — the precondition that makes a 3×3 block search exact.
Live screen
the REAL fixedUpdate driven 3600 engine ticks at fl(1/120), bit-compared to an independently re-typed replica of the tick schedule at EVERY tick (α, gap, best-α, best-gap all ===); thin-instance buffer sha256 652154cf… over 1200 instances and 3600 buffer updates; HUD innerHTML compared in-process to a replica-built string then sha-pinned (all displayed numbers are toFixed, which is locale-independent, so unlike the ant chart there is no locale hazard).
Step deficit
ZERO — checked, not assumed: fl(1/60) === 2·fl(1/120) exactly, so 3600 engine ticks consume exactly 1800 sim ticks and leave a residual accumulator of exactly 0. Contrast COUPLED/LORENZ/DBLPENDULUM, which each lost one step to the same kind of accumulator.
Onscreen best angle
137.50667
Onscreen best angle rel error
7.9800e-6
Onscreen best gap
1.5459952
Systematic explained
the screen's headline 'best α measured' is NOT the oracle's refined 137.5122° and is not claimed to be. The module remeasures every 4 sim ticks while α sweeps at 0.7°/s, so it samples α on a fixed 0.7·(1/60)·4 = 0.0466667° grid and its argmax can only land on a grid node. The residual is therefore PREDICTED rather than tolerated: the recovered best α equals node 118 of that grid (137.506666667°) to 5.0e-12, i.e. the nearest node to the golden angle, leaving −0.0010974° (rel 7.98e-6) — inside the half-step bound 0.0233°, and the gate additionally requires the residual to be at least 2% of that bound so an accidentally-perfect module cannot pass by luck. The 5.0e-12 slack is the float drift of the module's own α accumulator over 472 additions (analytic worst case 472·ulp(137)/2 ≈ 6.7e-12), nine orders under the quantisation step.
Float32 systematic
the module stores floret positions in Float32Array while the oracle's generator is float64. Quantified, not hidden: max relative deviation 1.29e-5 across the sweep window (largest where the gap is smallest — the 144° rival), and 1.03e-4 between the executed gap at the golden angle (1.5460343) and the oracle's N-invariant refined peak (1.5461934), which also carries the N=1200 vs N∈{1000..2200} difference. Both are far inside the ±3% band the oracle's own physics gate accepts.
Onscreen claim measured
the module PRINTS 'a degree off and radial spokes open up'. Gate I' makes that sentence a measurement using the module's own _measure: the gap falls to 52.0% of peak at −1° and 23.9% at +1° (gate requires ≤60% at both).
Displayed precision
at the precision actually rendered, the screen's 'best α measured = 137.51°' and its own caption 'golden angle = 137.51° = 360°/φ²' are the same string — and the module's GOLDEN static, 360·(2−φ) computed from Math.sqrt(5), equals this finding's known_value BIT-FOR-BIT, so screen and scorer cite one identical double rather than two roundings of the same idea.

Gate e repair

The honest-module pass found gate E — the non-circularity source-token scan — was VACUOUS. It sliced the recovery block from a start marker to `src.indexOf(SEP)` searched from position 0, but that separator sits ABOVE the marker, so end < start and String.slice returned "". The scan had been testing an empty string and could never fail. The recovery genuinely is φ-free (verified by hand and unchanged), but the gate that PROVED it was a no-op for the world's whole validated life. Repaired to search forward from the marker, to assert the block is live (2935 chars, containing minGap + refineZoom + recover), and to carry a meta-self-test (E'') that plants '137.5 golden phi' into the scanned block and requires the scanner to raise all four tokens — the check that would have caught the original bug.

Note

recovered α* = 137.5122° from a φ-free geometric search; the golden angle is loaded from the reference only to score, a source-token self-test confirms the recovery contains no φ/√5/'137.5' literal, and a scoring self-test confirms a deliberately-wrong reference (×1.02) makes the oracle FAIL while the recovered angle is unchanged. On-screen reconciliation is now EXECUTED rather than argued (see honest_module): the live PhyllotaxisModule sweeps a FOCUSED window [130°,145°] for legibility and displays best α = 137.50667° with gap 1.5460 √n-units, and the oracle establishes the GLOBAL optimality across [1°,179°] that the module's narrow scan cannot show. 13/13 derisk gates pass, deterministic, ~2.4 s. Tamper self-tests: known_value → 140 fails gates A/A'/F/I with every recovered value byte-unchanged and exit 1; module RATE 0.7 → 0.75 fails F (sha + statics), H (pinned live screen) and I (grid step), exit 1 — while A–E and G stay green, since the sweep rate cannot affect either the physics or the exactness of the measurement. Zero module edits.

What it reduces to

Phyllotaxis packing optimality (H. Vogel 1979; J. N. Ridley 1982): for the spiral r = √n, θ = n·α the golden angle α* = 360°/φ² ≈ 137.5077° maximises packing uniformity — the largest minimum inter-floret distance. This world VALIDATES, not derives: it assumes only Vogel's spiral geometry and recovers the golden angle as the global argmax of a min-distance objective, arranged to be NON-CIRCULAR — the golden ratio φ, √5, and the literal 137.5° appear nowhere in the search, only in the reference used to score. It is DISTINCT from the lab's other 'special number' worlds: it is not a limit theorem of a sum (?world=galton CLT, ?world=buffon Monte-Carlo π) nor a critical exponent of a phase transition — it is a number-theoretic OPTIMISATION whose answer is the most-irrational number, made visible as the geometry of a flower head. The mechanism is exhibited, not asserted: the scale-INVARIANCE of the minimum gap at α* (constant ≈1.546 as N→∞) is the operational meaning of 'most irrational', and it is falsified for every rational (144° spokes, gap ∝ N^(−1/2) → 0) and even for the best lesser-noble competitor (~99.5°, gap decays) — so φ wins uniquely. Related in spirit to ?world=phyllotaxis's sibling emergence worlds but standing alone as the lab's first number-theory-in-morphology result: efficient packing selects the golden ratio because it is the hardest number to approximate by fractions, and the continued fraction [1;1,1,1,…] is why the spiral of a sunflower never falls into radial spokes. HONEST-MODULE ADDENDUM (this run): the claim above is unchanged, but it is now anchored to the code that ships. What was previously a validated-by-a-separate-generator result is now validated with the SHIPPED module executed inside the oracle, so 'the screen shows 137.5°' reduces to a pinned, tamper-tested measurement rather than a description. Two things that were ASSERTED are now MEASURED: the module's bucket-grid packing measure is exact (=== an exhaustive minimum, not merely close to one), and the on-screen residual is the module's own sampling quantisation (the argmax lands on the nearest node of its 0.046667°/sample grid, to 5.0e-12). One thing that was BELIEVED turned out false and is fixed: the non-circularity token scan had been running on an empty string since the world was first validated, so the φ-free property — true on inspection — had never actually been gated.

Confidence & reproduction

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

Sources

H. Vogel, 'A better way to construct the sunflower head', Mathematical Biosciences 44, 179–189 (1979). J. N. Ridley, 'Packing efficiency in sunflower heads', Mathematical Biosciences 58, 129–139 (1982). H. S. M. Coxeter, 'The role of intermediate convergents in Tait's explanation for phyllotaxis', J. Algebra 20, 167–175 (1972). S. Douady & Y. Couder, Phys. Rev. Lett. 68, 2098 (1992). Value: golden angle = 360°/φ² = 137.50776405…°, φ = (1+√5)/2.

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.