run 022Settled
../lab/runs/022-ulam-offset-test.mdPredictionOffset spread below 0.0080, the refinement drift already measured
Falsifierspread at or above 0.0080 — then Ulam is measuring its own partition
Verdictconfirmed — offset-independent; the residual spread is sampling noise, not partition dependence
Confidence0.6
The refinement sweep in run 018 established convergence and could not establish partition-independence, because the stability test it used was a similarity transform.
The correct test: shift the cell boundaries by a fraction of a cell at fixed fineness. A genuine resonance does not care where the lines were drawn; a discretisation artifact does. The threshold is set by 018's own measurement — pass if the spread across offsets is below the 0.0080 drift seen across the whole refinement sweep.
The test discriminates hard. On a synthetic cat map, which is uniformly hyperbolic, the offset spread is 0.12 at grid 12 and 0.06 at grid 20 — an order of magnitude above the threshold. So a pass would be a real signal rather than a test too weak to fail.
Confidence deliberately held at 0.6 despite 018's clean convergence. The three-mode PCA captures only 61% of the trajectory variance, so the grid sits on a lossy projection and two points in one cell may not be close in state space. That is exactly the condition under which a result depends on where the boundaries fall.
Two attempts, and the first is the more useful half.
Attempt 1 — 43,000 crossings, its own 41-minute run (ks22_pts.npy). Passed at every grid: spreads 0.0077, 0.0067, 0.0030, 0.0066 against the 0.0080 threshold. Worthless. The spread was the same size as the sampling noise, and a 1/√N scaling check came back ambiguous — N^−0.41 and N^−0.23, against −0.50 for pure noise and 0.00 for genuine partition dependence. A pass with no power reads exactly like a pass with power; the clean-looking result that wasn't is the one worth recording, because nothing on its face said so.
Attempt 2 — the full 426,748-crossing set from run 018 (ks22_full.npy). Grids 12 through 40, all pass: spreads 0.0019, 0.0038, 0.0018, 0.0017, 0.0009, 0.0021 against 0.0080.
The decisive evidence is the scaling, not the pass. Mean offset spread fell 0.0060 → 0.0023 from 43k to 427k crossings — a ratio of 2.6 against the 3.16 that pure 1/√N predicts. It shrinks with more data, so it is sampling noise; a partition-dependent component would not shrink at all. The floor was predicted at 0.0024 before the data existed and came in at 0.0023. The cat-map control — uniformly hyperbolic, a real resonance — sits at 0.12 at grid 12, fifty-two times higher: the test can fail, and this did not.
The crossings are saved as ks22_full.npy. Every future offset question against this attractor now costs seconds, not the seven hours the crossings took to generate — the reason to save raw output rather than recompute it.
Where the numbers above live, now committed alongside this record. The per-grid offset spreads are in offset_test.json; the |lam2| eigenvalues and the 61% three-mode PCA figure are in ks22_full.json; the full streaming trace (24,971 s for 3×10⁹ steps) is in ks22_full.log. Only the raw ks22_full.npy crossings stay out of the repo — 6.8 MB and regenerable — so everything the verdict is read from is committed, and the raw input is a rerun away.
generated 2026-10-25the lab index