Math Mapgenerated 2026-10-25 · a354234
PUBLIC BUILD
N-030notecurrent2026-09-26

Evidence for N-029 — which section each filed basis was fitted on, and how fragile the svd_flip convention is on it

instrument · systematic · ulam · pca · run-022 · run-023 · N-029 · evidence

Stands onnonefrom builds_on: and related:
Stood on byN-029incoming references, computed at build — never typed

The measurements N-029 cites

N-029 says that pinning mode 0's sign by the svd_flip convention would be a break, not insurance, and that the convention is fragile on this data. This note is the evidence for both claims: a table that existed only in a chat reply. Everything here is calibration only — calibrate() was called, nothing was streamed — so nothing here is a |lam2|.

What was measured, and how

R18c.calibrate(L, N, h, calib, calib // 10, 10, seed=0, modes=3) at the arguments each filed run actually used, read from the run file, its JSON and its logs rather than assumed. The function's numerics are byte-identical from ebed7ce to the commit measured (aab32fd; the only change in between added the modes= parameter). For each basis, mode 0 = Vt[0] as numpy.linalg.svd returned it, unpinned. Recorded: the sign of its largest-magnitude entry — the entry svd_flip would make positive — that entry's index and magnitude, the second-largest magnitude, and their margin.

Environment: the M5, macOS 26.6.2, Python 3.14.7, numpy 2.5.3, 2026-09-26. The fit is deterministic on this machine (the L = 22 baseline .npy regenerated bit-identical across two sessions, sha eb972a62…); N-029's correction records why it need not be across machines.

The table

basis, as used byLNhcalibsign at argmaxargmax\max\secondmargin
run 023 baseline (832 crossings) and the R = 30 controls22640.011e6+190.18730.18720.0001
runs 018 / 022, the filed L = 22 \lam2\22640.012e6+320.18650.18460.0020
run 023, the 3-vs-5-mode check and the 500k rerun26640.011e6−440.18320.18260.0006
run 023, the R = 30 rerun of 2026-09-2028640.011e6+00.19250.19240.0001
the original R = 1 run on BernoullisBook28640.012e6+130.20050.19720.0033
run 023, the 3-vs-5-mode check30640.011e6−230.22610.22250.0036
run 023, the 3-vs-5-mode check34640.011e6+460.18360.18100.0026
N-029's own (withdrawn) measurement config221280.251e6+570.12690.12680.0001

Two readings, both stated in N-029. (1) The svd_flip convention is satisfied as fitted at L = 22, 28 and 34 and violated at L = 26 and 30. So pinning would have changed the filed L = 26 and L = 30 numbers without rerunning anything, and those two L — the two that fail to converge — were computed on the opposite section from the three that do. (2) The margin is 0.0001 in three of the eight cases. Mode 0 is close to sinusoidal, so its two peaks are nearly equal in magnitude, and the convention is decided at the fourth decimal. It is stable against a LAPACK sign flip, which leaves magnitudes intact, and not against a slightly different calibration trajectory.

What the table does not say. It gives the sign each basis came out with. It says nothing about the size of the orientation shift at any L other than 22, which has not been measured, and nothing about whether L = 26's non-convergence or L = 30's collapse would look different on the other section. Those need streaming, which this note did not do.

The v0-sensitivity measurement N-029's correction relies on

Streamed at N-029's stated inputs with the code at aab32fd (L = 22, N = 128, h = 0.25, 4×10⁶ steps, one realisation, seed 0), both orientations, as the reproduction that led to the withdrawal. Recorded here because the correction cites it; the numbers are one draw each and carry no error bar — that is the point the correction makes.

calibcrossings as fitted / reversed\lam2\grid 6 / 8 / 10, as fittedreversedshift
1e614,573 / 14,5740.5322 / 0.5505 / 0.56400.4860 / 0.5133 / 0.5325+0.046 / +0.037 / +0.032
2e6 (the default)14,542 / 14,5420.5287 / 0.5508 / 0.56660.5017 / 0.5286 / 0.5477+0.027 / +0.022 / +0.019

Changing v0 alone — the only difference between the rows — moved the grid-8 shift from 0.037 to 0.022.

The first orientation shift with an error bar, from the smoke test of the two-section R18c.py: L = 22, N = 64, h = 0.01, calib 1e6, 6×10⁶ steps, R = 30 (25,916 as-fitted and 25,917 reversed crossings): +0.0261 ± 0.0064 at grid 12 and +0.0257 ± 0.0048 at grid 16, the error bar a bootstrap over the 30 realisations (20 resamples). Same sign as both single-draw rows above, and about four standard errors from zero. Still L = 22 only. The two crossing counts differ by one in the first row: a trajectory can start or end between a crossing and its partner, so the counts agree to ±1 per realisation, not exactly.

Where this went

R18c.py now collects both sections in the one streaming pass and reports |lam2| on both at every grid, with the shift and a bootstrap error bar over realisations (N-029, "the better move is not to pin at all"). No existing number changed, because nothing was pinned. The as-fitted section is the old section: at the L = 22 baseline (832 crossings, --calib 1000000) the .npy the new code writes is byte-identical to the one the old code wrote (sha eb972a62…), and its |lam2| at grids 4, 5 and 6 matches to four decimals. That is what makes this an addition to the instrument rather than a break in it: every filed |lam2| is still the number the same command produces today, with the reversed section and the shift reported beside it.

87 source lines, no addenda.

generated 2026-10-25the lab index