Worker two_adic/, 2026-09-23, branch teal-sea/weil-c4-s2, time box 21:10 to 00:10, closed at about 22:45 with T_S evaluated. Nothing here is a claim about RH. Positivity on c ∈ [2, 3) is already known (Zhu arXiv:2608.24827); this folder builds the 2-adic half of the C4 trace term. Grades follow the AGENTS.md ladder. No kernel-checked statement is made (AXLE not attempted: nothing here reduced to a lemma small enough to be worth it within the box). Every number below is pinned by a test in this folder; raw values are in ta_es_cells.json, ta_ts_cells.json and ta_ts_prolate.json. The rejected cabinet attempt (req-c4-s2-remainder/a1) was read and not reused: its split of Q is superseded by §3's closed form.
0. Sources and conventions
- Connes arXiv:math/9811068 §VII: X_S = A_S/O_S^*, eq. (5) (the Hilbert space as the completion of S(A_S) under the Γ-periodized norm), (7) (scaling), (12)-(13) (cutoffs by the module), Theorem 4 (semilocal trace formula), (17) (trace on X_S as a sum over S-units).
- Connes-Consani arXiv:2006.13771: Sonin space S(1,1), Prop 4.5 and eq. (81) (S_∞ = 1 − Σ_n(|ξ_n⟩⟨ξ_n| + |ζ_n⟩⟨ζ_n|)), Theorems 4.7 and 6.11.
- Connes arXiv:2602.04022 §7.2-7.4, eq. (22) and its footnote 11 (the projections P^S_T, P̂^S_W are defined with the module).
- Connes-Consani-Moscovici arXiv:2310.18423 §4 (not in the brief; found while fixing the objects, cited as [29] in 2602.04022): the unitary w_S : L²(X_S)^{K_S} → L²(ℝ_+^*, d^*u) (eq. (42)); E_S = η_S, the class of 1_{Z_2} ⊗ f (eqs. (44)-(47)); the local Sonin space at p (Def 4.4, Prop 4.5); θ_S, the class of σ_2 ⊗ f (Prop 4.6, eqs. (57)-(58)); F_S ∘ θ_S = θ_S ∘ F (Prop 4.7); and Thm 4.6: θ_S maps S_λ(ℝ) onto the semilocal Sonin space S_λ(X_S), boundedly with bounded inverse.
S = {∞, 2}, Γ_S = {±2^n}, C_S = (ℝ^* × Q_2^)/Γ_S, module |x|S = |x∞||x_2|_2, K_S = its kernel ≅ Z_2^. In the log variable x = log u of L²(ℝ_+^*, d^*u), scaling is translation, D := translation by log 2 (CCM's g(λ) ↦ g(λ/2)), and P := time limiting to u ≤ 1 (the module ball; on this sector it is the archimedean interval cutoff).
1. Task 1: the objects, and the recheck of theory §7.3 item 2
At the place 2 alone (ta_local.py, exact rational arithmetic on the Z_2^*-invariant sector, ball basis B_r = 1_{|x|_2 ≤ 2^r}, F(B_r) = 2^r B_{−r}):
| statement | value |
|---|---|
| F unitary, F² = 1, F(1_{Z_2}) = 1_{Z_2}, F(σ_2) = σ_2, F(ε_0) ≠ ε_0 | all true |
| P_2 := multiply by 1_{Z_2}, P̂_2 := F P_2 F: both orthogonal projections | true |
| P_2 = P̂_2 | false |
| P_2 P̂_2 = P̂_2 P_2 = rank one projection onto 1_{Z_2} | true |
| P_2 ∨ P̂_2 = 1 (closed ball |x|_2 ≤ 1) | true: local Sonin space dim 0 |
| open ball |x|_2 < 1 (CCM Def 4.4) | local Sonin space dim 1, spanned by σ_2 = ε_0 − ε_1/2 |
| ‖σ_2‖², ‖1_{Z_2}‖² | 3/4, 1 |
Pinned by test_ta_local_and_data.py for truncations K = 3, 5, 6, 8 (the span V_K of the balls is invariant under P_2, P̂2 and F, so the kernels are not truncation artefacts). Grade: exact. Theory §7.3 item 2 ("1{Z_p} is its own Fourier transform, so time and frequency limiting to Z_p are the same projection") is refuted: self-duality is a statement about one vector. What is true is that the two projections commute and meet in that vector, so the p-adic uncertainty is exact with a one-dimensional joint range.
2. The product-ball obstruction (graded result on its own)
Ordinary argument, unreviewed. cutoff/ reached the same conclusions in its milestone 1 (its RESULTS lines 1 and 4):
- The product ball B = [−λ, λ] × Z_2 is not Γ_S-invariant (2B ≠ B), so multiplication by 1_B is not an operator on L²(X_S), where eq. (22) and the prime term live (Connes (17): the trace on X_S is a sum over S-units).
- Pushed through the periodization J = E_S (Connes (5)), the ranges of the product-ball time and frequency limits become the module ranges: every f supported in B has J f supported in |x|_S ≤ λ, and every function on {|x|_S ≤ λ} is J of its restriction to the shell |x_2|2 = 1 times 1{|x_∞| ≤ λ}. F commutes with J (Connes Lemma 1(b)), so the same holds for the frequency side.
- The summand 1 ⊗ (1 − P_2) is pushed onto all of L²(X_S) (every Γ_S-orbit meets the shell |x_2|_2 = 2), so the literal Π_S of theory §7.3 has trace +∞ against ϑ(g)ϑ(g)^*. The brief's "start with the 1 ⊗ (1 − P_2) piece" therefore has no finite matrix entries to deliver.
- The finite, positive, E_S-compatible object is the one CCM Thm 4.6 supplies: the semilocal Sonin space is θ_S(S_λ(ℝ)), i.e. S_∞ tensored with the open-ball 2-adic Sonin vector σ_2 and periodized. This is the T_S built below (coordinator decision on milestone 1).
3. Task 2: P_2 through E_S on the shared basis (closed form)
In the w_S picture θ_S = Θ_α := 1 − α 2^{−1/2} D (Mellin multiplier 1 − α 2^{−1/2−is}, CCM (57)-(58)) and E_S = Σ_{k≥0} (ᾱ 2^{−1/2})^k D^{−k} (multiplier L_2(1/2 − is), CCM (47)). On a window of length L, ⟨f, D^k f⟩ = 0 once k log 2 ≥ L, so for 2 < c < 4 every Gram form of θ_S or E_S on window functions is built from one matrix,
C_{mn} = ⟨U_m, D U_n⟩ = e^{−2πinh/L} (1 − e^{2πi(n−m)h/L}) / (2πi(n−m)), m ≠ n, C_{nn} = e^{−2πinh/L} (L − h)/L, h = log 2,
and:
- Gram(Θ_α) = (1 + |α|²/2) I − 2^{−1/2}(α C + ᾱ C*);
- Gram(E_S) = 2 I + √2 (ᾱ C + α C*) for |α| = 1;
- the CCM prime block of the atom n = 2 is Wp = (log 2/√2)(C + C*);
- hence −Wp_α = log 2 · (Σ_j Gram(Θ_{α_j}) − Σ_j (1 + |α_j|²/2) I), and for ζ, −Wp = log 2 · (Gram(θ_S) − 3/2 I).
The 2-adic atom of the Weil form on these windows is the failure of the Sonin map θ_S to be a multiple of an isometry on window functions. The orientation for complex α is fixed by matching Θ_α's multiplier; no mission cell uses complex α.
Checks (test_ta_es.py, dps 40; tolerance = measured deviation rounded up):
| check | measured max deviation | test tolerance |
|---|---|---|
| closed form C against direct quadrature (dps 50), 25 entries per cell | 2.1e−42 | 1e−39 |
Wp from C against galerkin.py's prime block (independent code) | 4.5e−40 | 5e−39 |
| identity −Wp_α = log 2 (Gram − shift), α ∈ {(1), (1,1), (−1), (i)} | 1.2e−41 | 1e−39 |
| Gram(E_S) closed form against its operator series (140 terms), α ∈ {1, −1, i} | 4.6e−41 | 5e−39 |
Grade: the identity is exact algebra from the closed form; the closed form is hardened (quadrature and an independent implementation agree to working precision).
Mission cells (ta_es_cells.json, dps 40, runtime 13 s for all nine):
| c | N | Gram(θ_S) min | Gram(θ_S) max | Wp min | Wp max |
|---|---|---|---|---|---|
| 2.2 | 8 | 0.80547231866512626 | 2.19834594065960534 | −0.48405651982368832 | 0.48140990413810388 |
| 2.2 | 16 | 0.79293162516069561 | 2.20708619002499827 | −0.49011479902870128 | 0.49010245048296641 |
| 2.2 | 32 | 0.79289321910867856 | 2.20710678105946315 | −0.49012907164618542 | 0.49012907152963847 |
| 2.5 | 8 | 0.79290766300001662 | 2.20708688175546311 | −0.49011527849972269 | 0.49011905978708118 |
| 2.5 | 16 | 0.79289321890453224 | 2.20710678106376477 | −0.49012907164916708 | 0.49012907167114192 |
| 2.5 | 32 | 0.79289321881345248 | 2.20710678118654752 | −0.49012907173427360 | 0.49012907173427360 |
| 2.9 | 8 | 0.79289323304064058 | 2.20710673297045489 | −0.49012903831342493 | 0.49012906187273828 |
| 2.9 | 16 | 0.79289321881345310 | 2.20710678118654718 | −0.49012907173427336 | 0.49012907173427316 |
| 2.9 | 32 | 0.79289321881345248 | 2.20710678118654752 | −0.49012907173427360 | 0.49012907173427360 |
The band is [3/2 − 1/√2, 3/2 + 1/√2] = [0.79289321881345248, 2.20710678118654752]: window and shifted window overlap in less than half when c < 4, so |Re⟨f, Df⟩| ≤ ‖f‖²/2 (Cauchy-Schwarz; ordinary argument). Every cell lies in it; at N = 32 the ends are on it to 1e−18 (c = 2.5, 2.9) and 3e−10 (c = 2.2). Correspondingly Wp's spectrum fills [−log 2/√2, log 2/√2] = ±0.49012907173. Grade: measured spectra (mpmath eigsy at dps 40) of hardened matrices.
4. Kill-control 2: the refusal gate (ta_data.py)
Local data at 2 enter as Satake parameters or as a tower s_k(2) = Λ(2^k)/log 2 with degree d. The gate checks |s_k| ≤ d, recovers the α_j by Newton's identities, checks |α_j| = 1, and requires the α_j to reproduce every given s_k. Exact arithmetic (sympy); float inputs need an explicit tolerance, which is recorded.
| data at 2 | outcome |
|---|---|
| ζ, α = (1) | accepted |
Dedekind ζ_{Q(√−23)}, α = (1, 1); also its tower s_k = 2 (k ≤ 7, numerics us_check.json) | accepted, α = (1, 1) |
| W_a, a = 1/4: α = 2^{±1/4} | refused (|α| ≠ 1); its tower refused at k = 1 (s_1 = 2^{1/4} + 2^{−1/4} = 2.030103 > 2; theory §7.1 prints 2.0303, a slip in the fourth digit that changes nothing) |
| Epstein (1,1,6) tower (0, 2, 6, 2, 0, 2, 0) | refused at k = 3 (|s_3| = 6 > 2, n = 8) |
| Epstein's s_1, s_2 alone | accepted as α = (1, −1): the window c < 4 sees only s_1, so detecting Epstein needs the tower beyond the window, as the mission says |
| synthetic tower (0, 2, 1), d = 2 | refused: not a power-sum tower |
T_S_matrix runs the gate before anything else, so no code path returns a trace term for W_a or Epstein data (test_ta_ts.py). Grade: exact. Why the gate is a correctness condition and not a guard: T_S uses the local data only through Θ_α, and the trace term is a diagonal (nonnegative) quantity only when α enters as a unitary twist of the scaling action; for W_a the form is a pairing of two different vectors (theory §4, C2).
5. Task 3: the assembly of T_S
Definition (module/quotient form, coordinator decision): on L²(X_S)^{K_S} = L²(ℝ_+^*, d^*u),
T_S(g) = Tr(ϑ(g) Π_S ϑ(g)^*), Π_S = orthogonal projection onto Θ(range S_∞), Θ = Π_j (1 − α_j 2^{−1/2} D) per Satake parameter (degree d: sum over j).
Derivations (ordinary arguments, unreviewed):
- Finite and nonnegative. ϑ(g)Π_S = Θ·ϑ(g)S_∞·G^{−1}S_∞Θ^* with G = S_∞Θ^*ΘS_∞ invertible on range S_∞ (Θ is bounded with bounded inverse since ‖2^{−1/2}D‖ < 1). So T_S(g) is finite whenever T_∞(g) = ‖ϑ(g)S_∞‖²_HS is, and T_S ≥ 0 by construction.
- Composition with kernel/'s data. Θ^* maps range P onto itself (D^{−1} moves support towards u = 0), and 1 − S_∞ = P + Q_∞ with Q_∞ the projection onto span{ζ_n} (CC (81)). Hence
1 − Π_S = P + Q_S, Q_S = projection onto span{(1 − P) Θ^{−1} ζ_n}, Θ^{−1} = Σ_{k≥0} (ᾱ 2^{−1/2})^k D^{−k}, T_S = T_∞ + ΔT, ΔT(g) = Tr(ϑ(g)(Q_∞ − Q_S)ϑ(g)^*).
ΔT is the whole 2-adic part of T_S; it needs P, F and Θ only, plus the ζ_n from kernel/.
- Only |Θ| matters. Θ = W|Θ| with W unitary and both commuting with ϑ(g); trace is invariant under unitary conjugation, so T_{ΘV} = T_{|Θ|V}. T_S depends on α only through |1 − α 2^{−1/2−is}| on the critical line. (For complex unitary α the twisted semilocal Fourier transform was not rechecked here; every mission data set has real α.)
- Place 2 off. α = 0 (or
local_data=None) gives Θ = 1, Q_S = Q_∞, ΔT = 0, T_S = T_∞. - The oblique projection carries no 2-adic content. ΘS_∞Θ^{−1} has range Θ(range S_∞) and Tr(ϑ(f)ΘS_∞Θ^{−1}) = Tr(ϑ(f)S_∞): the 2-adic part of T_S is entirely the difference between the orthogonal and the oblique projection onto the same space (cutoff/ line 4 says the same).
- Γ_C is a framework limit. A component of L²(X_S) with archimedean parity ε is an idele class character χ_∞ ⊗ χ_2 trivial on Γ_S; at −1 this forces (−1)^ε χ_2(−1) = 1, so an odd component is ramified at 2 and has no Satake parameter. L(s, χ_{−23}) (odd, unramified at 2) needs 23 ∈ S, or the construction over K = Q(√−23). The Dedekind positive control is therefore not exercised here (
FrameworkLimit, message inta_ts_cells.json).
Implementation (ta_ts.py): delta_T_matrix builds Q_∞ and Q_S from a finite mode family on a uniform log grid with spacing log 2/m (D is an exact grid shift) and returns ΔT with its two PSD pieces. It was exercised on synthetic smooth modes only; no synthetic number is a value of T_S. Checks (test_ta_ts.py, float64): α = 0 gives ΔT = 0 exactly (measured 0.0); both pieces Hermitian PSD for α ∈ {1, i, −1}; the direct trace route agrees with an independent FFT route to 5.9e−16 relative. The grid form does not suit real ζ_n: ζ_n(v) oscillates like sin(2πv)/v, which a log grid cannot resolve beyond u of a few tens; the evaluation has to be done in the Mellin variable, which is what §5b does.
T_S_matrix on the mission cells (ta_ts_cells.json): ζ and place 2 off → matrix (§5b); Dedekind with Γ_C → framework_limit; W_a and the Epstein tower → refused_nonunitary.
5b. T_S for ζ on the mission cells (ta_prolate.py, ta_run_prolate.py)
kernel/ was routed at 22:10 (its INTERFACE.md s3, commit af756a5; read-only import of kernel/sonin.py). ΔT is computed in the Mellin variable (ta_mellin.py has the formulas): for each prolate mode, ζ̂_n(s) and b̂_n(s) = Σ_k (2^{−1/2+is})^k T_n(2^k; s), T_n(W; s) = ∫_W^∞ ζ_n(w) w^{−1/2−is} dw, from Gauss panels on [1, 2^Kmax], Kmax = kmax_for(nvec) = 10, 10, 12, 12, 13 for the five configurations below (η_n in float64 through scipy's spherical Bessel functions, agreeing with kernel/'s mpmath η_n to 7e−15) plus the asymptotic tail from φ̃_n's derivatives at 1. Densities ρ = ŵ^T G^{−1} conj ŵ with Gram matrices taken on the same s-quadrature plus the order-1/S tails (jump at u = 1 and the sin(2πv)/v oscillation). T_S = T_∞ (kernel/'s moments, dps 40) + ΔT.
Checks: ζ̂n against kernel/'s closed-form Tate route (zeta_mellin_all), max 8.8e−14 (hardened: two routes); on a synthetic ξ = (1 − y²)², ζ̂ against Tate to 1.4e−17, ‖ζ‖² against Plancherel to 6.7e−7, and both pieces of ΔT against a direct v-domain quadrature to 2.7e−8 and 2.2e−7 (run once, about 150 s, not in the suite). The error of ΔT is set by the Gram matrices: the probe replacing Q∞'s Gram by the exact identity moves ΔT by 3.5e−3 to 5.9e−3 up to 130 modes and by 7.6e−3 to 8.2e−3 at 200 modes. (Corrected: 88d9dd1 said the probe fails at 200 modes, 5.5e−1; that was the divergent Kmax-10 tail, see the correction notice.)
| nvec | S | N | c | T_∞ min eig | T_S lowest three | Gram probe | ΔT + Wp, largest in modulus | beyond ±0.1 |
|---|---|---|---|---|---|---|---|---|
| 40 | 800 | 8 | 2.2 | 1.23e−03 | 0.0057, 0.0290, 0.2054 | 6.3e−04 | +0.321, −0.258, −0.089, +0.077, +0.035, +0.031 | 1+1 |
| 40 | 800 | 8 | 2.5 | 4.92e−04 | 0.0050, 0.0130, 0.0825 | 7.3e−04 | +0.442, −0.387, +0.206, −0.184, +0.088, −0.060 | 2+2 |
| 40 | 800 | 8 | 2.9 | 1.92e−04 | 0.0047, 0.0074, 0.0310 | 7.5e−04 | +0.488, −0.453, +0.363, −0.305, +0.174, −0.137 | 3+3 |
| 80 | 1200 | 8 | 2.2 | 1.23e−03 | 0.0035, 0.0265, 0.2002 | 3.8e−03 | +0.318, −0.259, +0.074, −0.072, +0.025, +0.022 | 1+1 |
| 80 | 1200 | 8 | 2.5 | 4.92e−04 | 0.0028, 0.0107, 0.0793 | 3.5e−03 | +0.439, −0.390, +0.204, −0.191, +0.077, −0.064 | 2+2 |
| 80 | 1200 | 8 | 2.9 | 1.92e−04 | 0.0025, 0.0052, 0.0284 | 3.8e−03 | +0.485, −0.456, +0.360, −0.312, +0.171, −0.144 | 3+3 |
| 80 | 1200 | 16 | 2.2 | 1.21e−03 | 0.0035, 0.0254, 0.1982 | 3.8e−03 | +0.318, −0.274, −0.087, +0.086, −0.060, −0.058 | 1+1 |
| 80 | 1200 | 16 | 2.5 | 4.78e−04 | 0.0028, 0.0104, 0.0778 | 3.5e−03 | +0.439, −0.397, +0.217, −0.191, +0.078, −0.074 | 2+2 |
| 80 | 1200 | 16 | 2.9 | 1.85e−04 | 0.0025, 0.0051, 0.0276 | 3.8e−03 | +0.485, −0.458, +0.372, −0.312, +0.171, −0.152 | 3+3 |
| 120 | 1600 | 16 | 2.2 | 1.21e−03 | 0.0026, 0.0244, 0.1962 | 5.9e−03 | +0.317, −0.273, +0.086, −0.075, +0.029, +0.026 | 1+1 |
| 120 | 1600 | 16 | 2.5 | 4.78e−04 | 0.0019, 0.0094, 0.0765 | 5.4e−03 | +0.438, −0.398, +0.216, −0.194, +0.075, −0.073 | 2+2 |
| 120 | 1600 | 16 | 2.9 | 1.85e−04 | 0.0017, 0.0042, 0.0266 | 5.9e−03 | +0.484, −0.460, +0.371, −0.314, +0.170, −0.155 | 3+3 |
| 130 | 1800 | 32 | 2.2 | 1.20e−03 | 0.0025, 0.0236, 0.1954 | 5.5e−03 | +0.317, −0.282, −0.179, −0.177, +0.150, +0.140 | 3+3 |
| 130 | 1800 | 32 | 2.5 | 4.74e−04 | 0.0018, 0.0091, 0.0759 | 5.1e−03 | +0.438, −0.402, +0.223, −0.194, −0.152, −0.152 | 4+6 |
| 130 | 1800 | 32 | 2.9 | 1.83e−04 | 0.0016, 0.0040, 0.0263 | 5.5e−03 | +0.484, −0.461, +0.376, −0.315, +0.170, −0.159 | 3+3 |
| 200 | 2400 | 32 | 2.2 | 1.20e−03 | 0.0024, 0.0236, 0.1950 | 8.2e−03 | +0.316, −0.280, +0.090, −0.076, +0.028, −0.026 | 1+1 |
| 200 | 2400 | 32 | 2.5 | 4.74e−04 | 0.0018, 0.0091, 0.0759 | 7.6e−03 | +0.438, −0.402, +0.222, −0.194, −0.076, +0.075 | 2+2 |
| 200 | 2400 | 32 | 2.9 | 1.83e−04 | 0.0015, 0.0040, 0.0263 | 8.2e−03 | +0.484, −0.461, +0.376, −0.315, +0.169, −0.160 | 3+3 |
Readings (all measured):
- T_S has no eigenvalue below −0.02 on any row, and its lowest eigenvalue (1.5e−3 to 3.5e−3 on the delivered rows) sits inside the error band. Its inertia is therefore 0 negative at the resolution −0.02 and not resolved below the row's band (3.5e−3 to 8.2e−3). T_∞'s own lowest eigenvalue (1.8e−4 to 1.2e−3) is below that band, so the comparison T_S against T_∞ at the bottom of the spectrum is not resolved either.
- The residual ΔT + Wp is N-independent at the top. Its eigenvalues come in ± pairs whose sizes decay (c = 2.9: 0.47, 0.34, 0.16, 0.08); on the delivered rows (see the notice for which are converged) the count beyond ±0.1 is 1, 2, 3 pairs at c = 2.2, 2.5, 2.9 for N = 8, 16, 32 alike, and the leading values agree across N = 16 and 32 to 7.4e−3. The count grows with c. The threshold 0.1 falls in a gap at every cell but the next pairs (about 0.075 to 0.09) are also stable, so the statement is about a decaying profile, not a sharp rank.
- Truncation matters. At N = 32 with 130 modes (s up to about 260, the window band edge at c = 2.2 is about 255) spurious pairs near 0.15 to 0.18 appear and vanish at 200 modes: §6 in practice (rechecked at Kmax 12: unchanged to 4e−5).
- Precision response. kernel/ reports T_∞ at dps 40 and 60 agreeing to 5.1e−39; ΔT is float64 with the truncation errors above, so the dps 40 against 60 response of T_S is below its resolution and was not measured separately.
- What this says about C4 here. Q = Q_∞ − Wp and T_S = T_∞ + ΔT, so R_S = R_∞ − (ΔT + Wp). With T_∞ alone the prime atom leaves Wp in R_S with growing multiplicity (cutoff/ line 2); with T_S the part of the residual above 0.1 has an N-independent size. Whether R_S has bounded negative index depends on how this residual meets R_∞'s spectrum, which is checker/'s measurement: n_−(R_S) below −band grows 4 → 10 from N = 8 to 16 at c = 2.9 and holds at 10 under 120 → 160 modes (checker/ RESULTS line 2, s7.3a), and is 20 at N = 32 on the rows rebuilt under the QR ρ (21 at 364 modes; checker/ RESULTS line 3, s7.8).
6. The semilocal time-frequency operator is not Hilbert-Schmidt (ta_hs.py)
For real α (all mission data; F Θ = Θ^* F uses FD = D^{−1}F and a real), F_S = Θ F Θ^{−1} = U_2 F, U_2 = −aD + (1 − a²) Σ_{j≥0} a^j D^{−j}, a = α/√2 (CCM Prop 4.7 (i)), P F_S P = Σ_{j≥−1} c_j A_j with A_j := P D^{−j} F P, whose kernel is K(2^j u v), K(t) = 2 t^{1/2} cos 2πt. Exactly,
⟨A_j, A_l⟩_HS = 2 · 2^{(j+l)/2} [S(2π|2^j − 2^l|) + S(2π(2^j + 2^l))], S(w) = Si(w)/w, S(0) = 1,
so the diagonal terms c_j²⟨A_j, A_j⟩ tend to 1/2 each. Measured at dps 30 (test_ta_hs.py):
| K (Euler levels j ≤ K) | 0 | 8 | 16 | 24 | 32 | 40 |
|---|---|---|---|---|---|---|
| ‖P F_S^{(K)} P‖²_HS | 0.405037 | 5.052145 | 9.070653 | 13.070786 | 17.070787 | 21.070787 |
The partial sums lie on K/2 + 1.0707867954 (within 2e−5, 1e−7, 4e−9 at K = 24, 32, 40); the archimedean value (α = 0, place 2 off) is Tr(P P̂ P) = 2 + 2 Si(4π)/(4π) = 2.23748483494183. The kernel of P F_S P is the lacunary series Σ_j c_j K(2^j uv), whose coefficients c_j 2^{j/2} = 1/2 are not square summable, so P F_S P is bounded but not Hilbert-Schmidt and P P̂^S P is not trace class. Grade: closed form, ordinary argument (unreviewed), partial sums measured. Consequence for the mission: the semilocal Sonin problem has no super-exponential eigenvalue decay; the 2-adic dilation copies of the prolate problem at scales 2^j each contribute. Any truncation of the data feeding ΔT must be by Mellin band. T_S itself stays finite (§5, item 1).
7. What is open, and the next step
- ΔT below the error band. 88d9dd1 said here: "The limiting error is the Gram matrix of the b_n." Corrected by §7b: at S = 4800 the Gram step is below 1.1e−4 and the mode truncation is the limiting error; the exact Gram route below was not built and is kept as a reference. An exact route exists (derivation, not implemented): with |α| = 1, ‖(1 − P)Θ^{−1}ζ‖² = ⟨ζ, |Θ|^{−2}ζ⟩ − ‖b 1_{[1,2)}‖², because the pieces of PΘ^{−1}ζ on the dyadic shells [2^{−l}, 2^{1−l}) are rescaled copies of b on [1, 2) with weights 2^{−l}; ⟨ζ_i, |Θ|^{−2}ζ_j⟩ = 2 Σ_k 2^{−|k|/2}⟨ζ_i, D^k ζ_j⟩ needs only dilation correlations of the modes. 88d9dd1 continued: "That would bring ΔT to the level of T_∞'s smallest eigenvalue (1.8e−4) and resolve T_S's inertia"; §7b shows it would not, since the mode truncation (still 3.5e−4 per 20 modes at 180 → 200 modes) stays.
- R_S on the cells: checker/'s (R_S = R_∞ − (ΔT + Wp) in this folder's terms). The numbers of §5b are the input.
- Why the top of ΔT + Wp is N-independent (a candidate: the residual is compact with a c-dependent profile, which is what "bounded rank" in C4 would need): not proved.
- Positive control needs S ∋ 23 or the construction over Q(√−23).
- Cost (measured on this laptop at the Kmax rule; corrected, 88d9dd1 said 64 s and 146 s, which was Kmax-10 cost): 200 modes, S = 2400, Kmax 13, all three cells at N = 32 in 178 s (ζ_n on the 139,716 w-nodes alone 48 s; 2.5 GB peak); 130 modes 52 s; 120 modes 193 s on a loaded machine; the whole
ta_run_prolate.pyabout 8 minutes. N = 64 would need about 400 modes (Kmax 15, about 490,000 w-nodes, S about 4800): extrapolated from the measured unit, not measured, about 30 minutes and several GB, a CI job rather than a local run.
7b. The accuracy item on c = 2.2, N = 8 (ta_gram_probe.py, ta_gram_probe.json)
Target: Q's lowest eigenvalue on this cell, 2.5738e−4 (checker/'s checker_q_cells.json, dps 40; the 2.33e−4 quoted for c = 2.2 is the N = 32 value). The criterion was fixed in the script's docstring before the S = 4800 runs were read. It is a spectral norm, so that Weyl's inequality turns it into an eigenvalue error:
band(80, 4800) = max( ‖ΔT(80, 4800) − ΔT(80, 2400)‖₂, ‖ΔT(100, 4800) − ΔT(80, 4800)‖₂, probe₂(80, 4800) ).
At another nvec n the same three terms are taken at n (band_terms, as the follow-up in BRIEF.md names it): the nvec response n → n + 20 at S = 4800, the S response at n (against 2400 as above, or against 9600 where that is the run there is), and probe₂(n, 4800). A term with no run to form it is left out, and the band is then a lower bound.
Runs 80 to 120 are this laptop's. The runs 140 to 200 at S = 4800 and 160 at S = 9600 are modal/'s units (tree 284eff6, Linux x86_64, Python 3.12; provenance and cost in modal/RUNS.md), merged unchanged by ta_gram_probe.py --merge-modal, each run carrying its source. Modal's copy of the (80, 4800) run reproduces the laptop's to 8.2e−15 (ΔT) and 7.6e−15 (the scalars): the same code on two machines, not a second route.
| nvec | S | Kmax | probe, ‖·‖₂ | max |G_z^s − I| | T_S lowest | seconds | where |
|---|---|---|---|---|---|---|---|
| 80 | 1200 | 10 | 3.8e−3 | 8.9e−2 | 3.523e−3 | 15 | laptop |
| 80 | 2400 | 10 | 4.9e−4 | 3.5e−2 | 3.500e−3 | 30 | laptop |
| 80 | 4800 | 10 | 2.5e−5 | 8.4e−3 | 3.486e−3 | 107 | laptop |
| 100 | 4800 | 11 | 1.2e−4 | 1.8e−2 | 3.001e−3 | 107 | laptop |
| 120 | 4800 | 12 | 3.3e−4 | 2.8e−2 | 2.671e−3 | 516 wall, 161 CPU | laptop |
| 140 | 4800 | 12 | 6.1e−4 | 3.7e−2 | 2.480e−3 | 274 (644 CPU) | Modal, SkylakeX |
| 160 | 4800 | 12 | 9.6e−4 | 4.5e−2 | 2.298e−3 | 298 (637 CPU) | Modal, Haswell |
| 180 | 4800 | 13 | 1.4e−3 | 5.2e−2 | 2.156e−3 | 471 (980 CPU) | Modal, Haswell |
| 200 | 4800 | 13 | 1.8e−3 | 5.9e−2 | 2.074e−3 | 623 (1254 CPU) | Modal, SkylakeX |
| 160 | 9600 | 12 | 1.2e−4 | 1.8e−2 | 2.299e−3 | 793 (1858 CPU) | Modal, SkylakeX |
SkylakeX and Haswell are the OpenBLAS kernel families Modal's hosts selected (AVX-512 present and absent); a Modal row's seconds are run()'s wall time.
Responses of ΔT, spectral norm: to S at 80 modes, 6.5e−4 (1200 → 2400) and 1.1e−4 (2400 → 4800); at 160 modes, 1.8e−4 (4800 → 9600). To nvec at S = 4800, per 20 modes from 80 to 200: 4.5e−3, 1.6e−3, 1.22e−3, 6.5e−4, 5.2e−4, 3.5e−4, every one above the target.
| n | S term | nvec term, n → n + 20 | probe₂(n, 4800) | band(n, 4800) | binding |
|---|---|---|---|---|---|
| 80 | 1.1e−4 | 4.48e−3 | 2.5e−5 | 4.48e−3 | nvec |
| 100 | no run | 1.60e−3 | 1.2e−4 | ≥ 1.60e−3 | nvec |
| 120 | no run | 1.22e−3 | 3.3e−4 | ≥ 1.22e−3 | nvec |
| 140 | no run | 6.49e−4 | 6.13e−4 | ≥ 6.49e−4 | nvec |
| 160 | 1.82e−4 (against 9600) | 5.21e−4 | 9.59e−4 | 9.59e−4 | probe |
| 180 | no run | 3.46e−4 | 1.36e−3 | ≥ 1.36e−3 | probe |
| 200 | no run | no run (needs 220) | 1.80e−3 | ≥ 1.80e−3 | probe |
Outcome: not met at any nvec from 80 to 200 at S = 4800. Every band, complete or a lower bound, is above 2.57e−4, so the missing terms cannot change it. The band is complete at 80 (4.48e−3) and 160 (9.59e−4); no band is below 6.49e−4, the lower bound at 140 modes (its S term was not run), 2.5 times the target. Readings (all measured, float64, one route):
- The 0.36-per-20-modes prediction is refuted. The last paragraph of this section, written before the Modal runs, took the ratio of the first two nvec responses (0.36) and predicted 5.7e−4 at 120 → 140 and 2.0e−4 at 140 → 160, below the target, with a tail near 1e−4 from 160. Measured: 1.22e−3 and 6.5e−4; the single step 160 → 180 is 5.2e−4, and the step 180 → 200, 3.5e−4, is still 1.35 times the target. The ratios per 20 modes are 0.76, 0.53, 0.80, 0.67. The response keeps falling, but six differences establish no rate, so no crossing nvec is predicted here. Slow decay is what §6 allows (P F_S P is not Hilbert-Schmidt, so nothing forces fast decay in nvec); that is a reading, not a derivation of the rate.
- Which term binds. Under the fixed criterion the nvec response binds through 140 modes and the probe from 160: at S = 4800 the probe grows with nvec and is above the target from 120 modes on (1.80e−3 at 200). The probe overstates what S changes in ΔT. For the ζ_n the exact Gram is the identity, and max |G_z^s − I| falls 8.9e−2, 3.5e−2, 8.4e−3 as S doubles at 80 modes; with both Grams on the same s-grid most of it cancels in ΔT. At 160 modes the S response (4800 against 9600) is 1.8e−4, below the target and 5.3 times smaller than the probe there, and doubling S cut the probe 7.8-fold. The criterion keeps the probe term, and the verdict does not depend on it: every nvec response through 200 modes is above the target on its own. What the target misses is still the mode truncation.
- Adding modes lowers ΔT. Each 20-mode step from 120 → 140 on is negative definite (largest eigenvalue −1.9e−4, −1.8e−4, −1.4e−4, −8.2e−5). The steps 80 → 100 and 100 → 120 are not (+4.6e−5, +3.1e−4), though 80 → 120 is, and 80 → 200 is, with largest eigenvalue −1.41e−3. T_S's lowest eigenvalue falls from 3.486e−3 to 2.074e−3 over 80 to 200 modes (by 4.85e−4, 3.30e−4, 1.91e−4, 1.82e−4, 1.42e−4, 8.2e−5 per 20 modes) and stays positive; S = 9600 moves it by 8.7e−7 at 160 modes. At 160 modes it exceeds the complete band by 1.34e−3, so on this cell its sign is resolved at that band's resolution (Weyl applied to a measured band, which is not a bound); at 80 modes it lay inside the band, by 1.0e−3.
- For §5b: on this cell the (80, 1200) row's error is at least 4.5e−3 in spectral norm, above its probe (3.8e−3, max entry). The ±0.1 counts and the leading residual values (a 1e−2 scale) are not affected, and T_S's lowest eigenvalue moved by 1.45e−3 from (80, 1200) to (200, 4800), far from the −0.02 of the PSD statement. The nvec response of the other eight cells was not measured.
- Platform. The differences from 140 modes on mix the two kernel families. Their kernel sensitivity was not measured; checker/'s 200-mode unit moves by at most 3.3e−7 when only the kernels change (
modal/out/, Sandybridge against the calibration unit), 9.5e−4 of the smallest difference used here. That unit, like the runs of this section, is on the old ρ route (checker/ s7.7, 3dc0a74); under the QR route the drift is of order 1e−12 (s10.3, A3). - Cost against the estimate. The estimate below (3 to 10 CPU minutes and 2 to 5 GB per run, about 40 CPU minutes) was on the laptop's scale. Modal, 4 vCPU per unit, measured 637 to 1858 CPU seconds and 1281 to 2064 MiB peak per run, 5373 CPU seconds in all (89.5 minutes); its 80-mode calibration took 426 CPU seconds against 107 s of laptop wall, so the two scales differ. Money:
modal/RUNS.md§5. - Next test (a proposal; not run, not requested). band(200, 9600) in the docstring's own shape (S against S/2, nvec 200 → 220) needs two runs, (200, 9600) and (220, 9600), Kmax 13 both. Scaled from the Modal run times (at 160 modes S = 9600 took 2.66 times S = 4800; 180 → 200 modes took 1.32 times at Kmax 13): about 1660 s and 2190 s, 3850 s in all, 0.34 USD at
modal/RUNS.md's computed rate. It would say whether raising S with nvec brings the probe term below the target while the nvec response, 3.5e−4 at 180 → 200 on S = 4800, keeps falling. Estimate only. - Written before the Modal runs, kept as the record (its prediction is graded above). Measured unit cost, and a CI estimate for meeting the target. The exact v-side Gram route of §7 was not built, because at S = 4800 the Gram step is already below the target and the route leaves the mode truncation untouched.
ProlateModes.zetacosts 9.6e−5 s per w-node for all 80 modes together. One (nvec, S = 4800) run costs 107 s at 80 and 100 modes, and 161 s CPU at 120 modes (1.9 GB peak). The 120-mode run took 516 s of wall time because this laptop was loaded, which puts 140 modes and more past the 10-minute local limit, so they were not run. Suppose the nvec response keeps its measured ratio (0.36 per 20 modes, from two differences only). Then it drops below 2.57e−4 between 140 and 160 modes, with a remaining tail near 1e−4 from 160. The runs that test this are nvec = 140, 160, 180, 200 at S = 4800 (Kmax 12, 12, 13, 13; corrected 2026-09-24, this said 12, 12, 12, 13, andkmax_for(180)is 13), plus an S = 9600 check at 160 modes, since the probe grows with nvec (2.5e−5, 1.2e−4, 3.3e−4 at 80, 100, 120). Scaled from the measured CPU time, which grows roughly as nvec × w-nodes × s-nodes (the (200, 2400) row of §5b took 135 s CPU and 2.5 GB), each run takes 3 to 10 CPU minutes and 2 to 5 GB: about 40 CPU minutes in all. That is one GitHub Actions job, free for this public repository, and it needs no paid provider. Estimate only; the runs were made on Modal instead (operator's approval, BRIEF.md follow-up).
8. Grading and ALIGNMENT s5 status
| statement | grade |
|---|---|
| §1 local facts at 2; refutation of theory §7.3 item 2 | exact |
| §2 product-ball obstruction, infinite trace of the literal Π_S | ordinary argument, unreviewed (cutoff/ reached the same) |
| §3 closed form of C, Gram forms, −Wp = log 2 (Gram(θ_S) − 3/2) | exact algebra; closed form hardened (two routes) |
| §3 cell spectra, band ends reached | measured, on hardened matrices |
| §4 refusal outcomes | exact |
| §5 items 1 to 6 | ordinary arguments, unreviewed; item 6 uses only the definition of C_S |
| §5 grid implementation | tested on synthetic modes only |
| §5b ζ̂_n | hardened (two routes, 8.8e−14) |
| §7b S- and nvec-responses of ΔT on c = 2.2, N = 8 through 200 modes (80 to 120 on the laptop, 140 to 200 and (160, 9600) on Modal); target not met at any nvec; the 0.36 prediction refuted | measured (float64, one route; Modal's calibration run reproduces the laptop's to 8.2e−15, same code); the next-run estimate is an extrapolation, not run |
| §5b T_S spectra, residual profile, counts | measured (float64, one route for the Gram matrices; error band 3.5e−3 to 8.2e−3 by (c, N)) |
| §6 closed form for ⟨A_j, A_l⟩_HS and the divergence | ordinary argument, unreviewed; partial sums measured |
| §10 the condition of ρ's Gram matrices set by the cutoff S; the QR route of ρ against ρ_inv (A1), the platform-drift proxy (A3), T_S at (200, 1200) (A4) | measured (float64, one route) |
| §10 exact G_z = I, cond(G_b exact) <= 33.97 | ordinary argument, unreviewed; the compression bound checked on a synthetic family |
| §10 A2, the QR route against an end-to-end reference | hardened in the sense of two routes: kernel/'s closed form in Arb at 256 bits, independent of the w-quadrature, against the float64 route |
| §10.6 s10.4's predictions against checker/'s rebuilt N = 32 rows | the outcome is checker/'s: measured, float64, one route, one platform |
Original to this session (novelty not searched): the identity of §3 in matrix form (first derived here, f1e912d; cutoff/ rechecked it by a third route, e678d94), the Hilbert-Schmidt divergence of §6, and the Γ_C framework limit, the Mellin route for ΔT from prolate data and the measurement of §5b. The objects are Connes', Connes-Consani's and Connes-Consani-Moscovici's; S_∞ and T_∞ are kernel/'s.
ALIGNMENT s5: theory §7.3 item 2 refuted (exact). The product-ball Π_S obstructed (infinite trace; no finite reading carries the place 2 except the module one). C4 on the module form at S = {∞, 2} unresolved: T_S is built and evaluated, T_S ≥ −0.02 on every cell, and the residual against the prime atom has an N-independent top beyond ±0.1. That top is not bounded rank of R_S: checker/ counts n_−(R_S) below −band at 4, 10 (c = 2.9, N = 8, 16), the 4 → 10 step stable under 120 → 160 modes, and at c = 2.9 its measurement runs against bounded rank (checker/'s grade: measured, weakest step ΔT). At N = 32, on the rows rebuilt under this folder's QR ρ (checker/ s7.8, 3e36fa4), the count at c = 2.9 is 20 on the delivered row and on the 240, 280 and 319-mode rows (21 at 364), against 10 at N = 16, so the growth 4, 10, 20 survives there and checker/ reads its P5 (n_−(R_S) the same at N = 8, 16, 32) as failing at the measured grade on c = 2.9; at 2.5 it falls (6 and 5 against 9, a verdict that rests on the band rule) and at 2.2 every build counts 0. On the old ρ route (checker/ s7.7, 3dc0a74) the N = 32 count was undecided in float64 (the band rose past the negatives, and the negatives did not leave).
9. Reproduction
PYTHONPATH=$PWD .venv/bin/python hunts/weil_propagation/c4_s2/two_adic/ta_local.py PYTHONPATH=$PWD .venv/bin/python hunts/weil_propagation/c4_s2/two_adic/ta_run_es.py # 13 s PYTHONPATH=$PWD .venv/bin/python hunts/weil_propagation/c4_s2/two_adic/ta_run_ts.py # 2 s PYTHONPATH=$PWD .venv/bin/python hunts/weil_propagation/c4_s2/two_adic/ta_run_prolate.py # about 8 min, needs kernel/; arguments 0 to 4 rerun those configurations only PYTHONPATH=$PWD .venv/bin/python hunts/weil_propagation/c4_s2/two_adic/ta_gram_probe.py 80 4800 # one (nvec, S) per process: 80 1200, 80 2400, 80 4800, 100 4800, 120 4800; 15 s to about 9 min PYTHONPATH=$PWD .venv/bin/python hunts/weil_propagation/c4_s2/two_adic/ta_gram_probe.py --merge-modal # merges modal/out/gram_*.json (140 to 200 at 4800, 160 at 9600); reads, computes nothing; the units themselves are modal/run_modal.py's PYTHONPATH=$PWD .venv/bin/python hunts/weil_propagation/c4_s2/two_adic/ta_rho_diag.py scan80 # also refine, lowdir, hats, nodes (10 to 55 s each); scan200 [npz] about 6 min PYTHONPATH=$PWD .venv/bin/python hunts/weil_propagation/c4_s2/two_adic/ta_rho_check.py a1 80 1200 # a1 120 1600 (3 min), a1 200 2400 NPZ, a3 NPZ, a4 NPZ (20 to 40 s with the saved hats), a2 [cache] (3 min, 2 processes), gp NVEC S PYTHONPATH=$PWD .venv/bin/python -m pytest -q -n 2 hunts/weil_propagation/c4_s2/two_adic tests/test_hunt_probe_discipline.py tests/test_docs_numbering.py # about 30 to 90 s
10. Follow-up 3 (2026-09-24): rho without the explicit inverse
BRIEF.md "Follow-up 3" (32b8112). checker/ s7.7 found cond(G_b) of 3.9e9 to 2.8e18 on the N = 32 rows and T_S failing T_S >= 0 by 14 to 37 at 319 and 364 modes; ta_mellin.rho inverted G with np.linalg.inv. This section is written in the order the work was done: s10.1 (diagnosis) and s10.2 (the acceptance for the fix) were committed before rho was changed.
10.1 Diagnosis: the cutoff S of the s-side Gram, not the functions
ta_rho_diag.py, ta_rho_diag.json, test_ta_rho_diag.py. Measured, float64, one route, except where stated.
Which Gram. T_S's Gram matrices are not gram_v's. ta_prolate.delta_T_cells takes both on the s side (gram_s): G = (1/2π) H* W_s H + (J Jᵀ + dil A Aᵀ)/(πS) from the hats H on s_grid(S, 1, 8). gram_v serves only the synthetic route ta_mellin.delta_T_mellin. The coordinator's trap (i) holds for gram_s all the same: G = F* F with F the weighted sample matrix plus two tail rows, so cond(G) = cond(F)².
| row (nvec, S) | S/nvec² | s-nodes of G | w-nodes of the hats | gram_v's w-nodes (not on T_S's path) |
|---|---|---|---|---|
| (200, 2400) | 0.060 | 38400 | 139716 | 196596 |
| (240, 2400) | 0.042 | 38400 | 241200 | 196596 |
| (280, 2266) | 0.029 | 36256 | 238752 | 196596 |
| (319, 2633) | 0.026 | 42128 | 245484 | 196596 |
| (364, 3060) | 0.023 | 48960 | 454044 | 196596 |
Every Gram is formed from far more nodes than functions; the node count is not the problem.
Not intrinsic. The exact Gram matrices are well conditioned: G_z = I (the ζ_n are orthonormal on v >= 1), and cond(G_b) <= ((1 + 2^−1/2)/(1 − 2^−1/2))² cond(G_z) = 33.97, because b_n = K ζ_n with K the compression of Θ^{*−1} to x >= 0, whose singular values lie in [0.586, 3.414] (ordinary argument, unreviewed, in ta_rho_diag.py's docstring; checked on a synthetic family on ta_ts's grid, where the singular values fall inside that interval). On a grid that holds the modes, the s-side G_b agrees: cond 13.2 at 80 modes and S = 2400.
Produced by the quadrature: the cutoff S, not the resolution inside [−S, S]. cond(G) = cond(F)² (from the singular values of F; the formed float64 G reads the same below 1e14):
| nvec | S | S/nvec² | cond(G_z) | cond(G_b) |
|---|---|---|---|---|
| 80 | 150 | 0.023 | 7.8e28 | 1.6e18 |
| 80 | 200 | 0.031 | 4.5e23 | 5.3e14 |
| 80 | 300 | 0.047 | 2.6e15 | 1.1e10 |
| 80 | 600 | 0.094 | 5.6e6 | 2.9e6 |
| 80 | 1200 | 0.19 | 273 | 280 |
| 80 | 2400 | 0.38 | 4.6 | 13.2 |
| 200 | 300 | 0.0075 | 1.1e30 | 1.4e30 |
| 200 | 600 | 0.015 | 2.5e28 | 2.1e28 |
| 200 | 1200 | 0.030 | 7.8e25 | 2.0e16 |
| 200 | 2400 | 0.060 | 7.6e11 | 3.9e9 |
At (80, 300), a finer s-grid (8 to 12 nodes per panel), a finer w-grid for the hats (12 to 16) and Kmax 10 to 11 each leave cond(G_z) = 2.577e15 and cond(G_b) = 1.084e10 unchanged to four digits; doubling S takes them to 5.6e6 and 2.9e6. The lowest direction u of G_b at (80, 1200) has its s-energy rising towards the cutoff (8.4e−4, 5.0e−3, 7.9e−3, 1.1e−2 on |s| in [0, 100), [100, 500), [500, 1000), [1000, 1200]) and |A·u| = 2e−5: a combination whose norm lies mostly beyond S, which the order-1/S tail rows do not see. The controlling ratio is about S/nvec²: the span of nvec prolates holds combinations concentrated within about 1/nvec² of y = 1, whose transforms reach s of order nvec² (ordinary argument). The default rule (KernelProvider: nvec = 8N/L + 40, S = 24πN/L) keeps S proportional to nvec, so the ratio falls as N grows: 0.029, 0.026, 0.023 on the three default-rule rows.
What this changes in the record.
- G_z, whose condition nobody recorded, is the worse of the two: 7.6e11 at (200, 2400) against G_b's 3.9e9, so eps × cond(G_z) = 1.7e−4 on the delivered N = 32 row.
- A float64 G formed from its samples reads its condition only below about 1e14; above 1/eps its eigenvalue ratio saturates near 1e16 (1.9e16 formed against 7.8e25 at (200, 1200)). checker/'s cond(G_b) of 1.1e17, 2.8e18 and 5.1e17 for the default-rule rows are therefore lower bounds, not values.
- The samples carry their own error: the float64 hats agree with kernel/'s closed form (
zeta_mellin_all, dps 30) to 5.2e−14 to 2.1e−13 absolute over s in [−2400, 600] (relative 1.2e−13 at s = 0, 2.8e−11 at |s| = 2400). Call the relative error of F δ. Any solve, however stable, determines the discretized projection only while cond(F) δ is well below 1, and cond(F) is about 1e13 for Z at S/nvec² = 0.03.
Decision. The ill-conditioning is produced by the quadrature (the cutoff S of the s-side Gram relative to nvec²), not by the functions. The fix has two parts. (1) The solve: rho from a QR factorization of F, never forming G, so that the arithmetic error scales with cond(F) and not with cond(F)². (2) The grid: S must grow like nvec², and each build must report cond(F) for Z and B so that a row whose projection its samples do not determine can be refused. Part (2) raises the cost of the N = 32 rows; its numbers are in s10.3.
10.2 Acceptance for the fix, fixed before it was run
Written before the new rho was run on any case. Grades: measured unless stated.
- A1, agreement where the old route is sound. At the delivered truncations (80, 1200), (120, 1600), (200, 2400) (s-grid width 1, 8 nodes per panel), for Z and for B: max_s |rho − rho_inv| <= 10 eps cond(G) max_s |rho|, with cond(G) = cond(F)² from the singular values of F. The measured ratio is reported, and so is the change of ΔT (spectral norm) on each delivered (c, N).
- A2, an end-to-end raised-precision reference at an ill-conditioned case. (80, 300), Z: cond(G_z) = 2.6e15, near 1/eps. Reference: ζ̂ at all 4800 s-nodes from kernel/'s closed form at dps 30, J and A at dps 30, G and the solve at 60 digits, rho on 64 of the s-nodes. Pass: max |rho − rho_ref| <= 1e−4 max |rho_ref| on those nodes (prediction from δ of order 1e−13 and cond(F_z) = 5.1e7: order 1e−5). Reported beside it: rho_inv's deviation (prediction: order 1e−2 or more, since eps cond(G_z) = 0.57). Where it stops: the same at (80, 200), cond(G_z) = 4.5e23, cond(F_z) = 6.7e11; prediction: a deviation of order cond(F_z) δ, between 1e−3 and 1. No pass criterion there; it is the measured stopping point.
- A3, the platform drift. At (200, 2400), N = 32: an entrywise relative perturbation of 2^−52 (fixed seed) on Z, B, J and A, and the spectral change of ΔT on c = 2.2, 2.5, 2.9, old route against new. Pass: the old route's change lies between 1e−8 and 1e−5 (the order of modal/'s 2.3e−7 to 2.9e−7), and the new route's is at least 100 times smaller. If the old route's change does not reach that order, the drift is not shown to come from the inverse. This is a proxy for the cross-platform rebuild, which needs modal/.
- A4, the falsifier's regime, prediction recorded here. (200, 1200), N = 32, is the regime of the 280, 319 and 364-mode rows (S/nvec² = 0.03, cond(G_z) = 7.8e25, cond(G_b) = 2.0e16), from hats already computed. Prediction: rho_inv's T_S fails T_S >= 0 by order 1 or more; the new rho's T_S has no eigenvalue below −1 (the leverages it sums are at most 1) but is not clean, with eigenvalues below −band(c, 32) (3.92e−2 / 2.37e−2 / 3.16e−2) possible, because there the samples do not determine the Z projection. If the new route's T_S at (200, 1200) has no eigenvalue below −band(c, 32), this prediction is refuted.
10.3 The fix, against the acceptance
ta_mellin.rho(hat_rows, *, factor) takes the factor F (G = F* F), computes R from a Householder QR of F and returns ρ(s) = ||y(s)||² with R* y(s) = conj(ŵ(s)); G is never formed, so the arithmetic error grows like eps·cond(F), not eps·cond(F)². factor is keyword-only, so that a Gram matrix passed where a factor is expected raises instead of being used. rho_inv is the old route, unchanged, kept as the reference. ta_prolate.gram_factor_s and ta_mellin.gram_factor_v return the factors of gram_s and gram_v; delta_T_cells, delta_T_mellin, ta_run_prolate and ta_gram_probe pass factors, and delta_T_cells reports cond_Fz and cond_Fb. Only ta_mellin.py and ta_prolate.py changed in T_S's closure; the default rule in ta_ts.py did not (see A4). ta_rho_check.py, ta_rho_check.json, test_ta_rho_check.py; unit tests of the route itself in test_ta_mellin.py (against rho_inv at cond(G) = 1e6: 1.1e−11 relative; against a 60-digit mpmath reference at cond(G) = 1e20: 9.5e−8, where rho_inv is off by 1.0).
- A1, passed. max_s |ρ − ρ_inv| against 10 eps cond(G) max|ρ|:
| truncation | cond(F_z), cond(F_b) | Z: deviation, ratio to eps cond(G) max ρ | B: deviation, ratio | ΔT change (spectral) |
|---|---|---|---|---|
| (80, 1200) | 16.5, 16.7 | 3.6e−14, 0.18 | 3.4e−14, 0.17 | <= 1.2e−14 (N = 8, 16) |
| (120, 1600) | 510, 517 | 8.6e−13, 0.004 | 5.9e−12, 0.027 | <= 2.7e−13 (N = 16) |
| (200, 2400) | 8.7e5, 6.2e4 | 2.0e−6, 0.0028 | 1.3e−8, 0.0036 | 1.8e−7 to 2.0e−7 (N = 32) |
The measured deviation is below the bound by a factor 55 to 3600. On the delivered N = 32 row the two routes differ by about 2e−7 in ΔT, the size of modal/'s platform drift.
- A2, passed at the case fixed in advance; the stopping point found. Against the end-to-end reference (kernel/'s closed-form ζ̂ at dps 30 on every s-node, J and A at dps 30, Gram and solve in Arb at 256 bits), 64 s-nodes, deviation relative to max ρ_ref:
| (nvec, S) | cond(F_z) (cond(G_z)) | QR route | ρ_inv |
|---|---|---|---|
| (80, 300) | 5.1e7 (2.6e15) | 6.8e−9 (acceptance 1e−4) | 1.6e−2 |
| (80, 200) | 6.7e11 (4.5e23) | 1.4e−5 | 0.26 |
| (80, 150) | 3.8e14 (1.5e29) | 6.5e−2 | 0.92 |
| (80, 120) | 7.3e14 (5.3e29) | 0.21 | 16 |
The float64 samples differ from the reference by at most 3.0e−13 (ζ̂) and 1.8e−12 (J, A). My prediction at (80, 200), a deviation between 1e−3 and 1, is refuted: 1.4e−5. The first-order bound cond(F)·δ overstates the error there by about 5000. The QR route survives cond(F) = 6.7e11 (cond(G) = 4.5e23) at 1.4e−5 and stops between that and cond(F) = 3.8e14; the old route is off by 1.6e−2 already at cond(G) = 2.6e15.
- A3, passed: the platform drift came from the inverse (measured by a proxy, not by a rebuild on the other platform). A relative perturbation of 2^−52 on every sample at (200, 2400), N = 32, moves ΔT by 1.8e−7 / 2.0e−7 / 2.2e−7 (c = 2.2 / 2.5 / 2.9) under the old route, the order of modal/'s 2.3e−7 to 2.9e−7, and by 2.9e−12 to 3.2e−12 under the new one. The inverse that amplified it is G_z's (cond 7.6e11), not G_b's (3.9e9).
- A4, my prediction refuted in both halves. At (200, 1200), N = 32 (S/nvec² = 0.03, cond(F_z) = 8.8e12, cond(F_b) = 1.4e8):
| c | T_S lowest, QR route | T_S lowest, ρ_inv | QR at (200, 2400) | ‖T_S(1200) − T_S(2400)‖₂, QR |
|---|---|---|---|---|
| 2.2 | +2.8e−3 | −1.3e−2 | +2.4e−3 | 5.6e−3 |
| 2.5 | +2.1e−3 | −1.5e−2 | +1.8e−3 | 6.2e−3 |
| 2.9 | +1.9e−3 | −1.6e−2 | +1.5e−3 | 8.0e−3 |
I predicted that ρ_inv would fail T_S >= 0 by order 1 and that the QR route would leave eigenvalues below −band(c, 32). ρ_inv fails by 1.3e−2 to 1.6e−2, and the QR route's T_S is positive, with no eigenvalue below −band, at cond(F_z) = 8.8e12, where A2 still reads 1e−5 or better. So the determinacy criterion of s10.1 (cond(F)·δ well below 1) is pessimistic for T_S, and the cutoff S moves T_S at 200 modes by 5.6e−3 to 8.0e−3 from S/nvec² = 0.03 to 0.06, below band(c, 32). This is why the default rule in ta_ts.py was left alone: the grid part of s10.1's decision is not required at 200 modes; whether it is at 319 and 364 is s10.4.
10.4 What the falsifier should show, and where the next constraint is
Checked against checker/'s outcome in s10.6 (follow-up 4). The text of this subsection is as committed at eea7eab.
The falsifier (BRIEF.md follow-up 3, run by modal/ and checker/): with the new ρ, T_S at 280 / 319 / 364 modes must have no eigenvalue below −band.
- Expected: it passes at 280 modes, and the order-10 failures at 319 and 364 are gone; the ground for that is A4's analogue, not a bound. (Corrected 2026-09-24, before the report to the coordinator: this bullet first said that T_S >= T_∞ − M_S cannot fall much below −1 because the leverages are at most 1. The leverage ρ(s) w_s/2π is at most 1 (the QR route keeps it there to eps·cond(F);
test_ta_mellin.pypins it), but then M_S = Σ_s leverage(s) conj(V_m(s)) V_n(s) is bounded only by the unweighted node sum, which is 2π/w_s = 35 to 124 times the window basis's s-side Gram (about I). That allows eigenvalues down to about −124 and does not exclude −14 to −37.) At (200, 1200), in the same S/nvec² regime, ρ_inv put T_S's lowest eigenvalue at −1.3e−2 to −1.6e−2 and the QR route at +1.9e−3 to +2.8e−3. A rebuilt 319 or 364-mode row could still fail at order 1e−2 (past A2's stopping point, next bullet) or, less likely, by more. By A4's analogue (same S/nvec²), I expect no eigenvalue below −band at 280. - The next constraint, if 319 or 364 still fails at order 1e−2: the samples against cond(F_z). Those rows sit at S/nvec² = 0.026 and 0.023 with more modes than A4's 200; the scans (s10.1) put cond(G_z) there at 1e26 or more, so cond(F_z) near 1e13 to 1e15, the range where A2 found the QR route stops (6.5e−2 at cond(F) = 3.8e14).
delta_T_cellsnow reportscond_Fzfor every build: a row above about 1e14 is past the measured stopping point. The remedy then is S (S/nvec² >= 0.04) or samples carried at higher precision, not the solve. - A prediction for checker/, not a measurement: the 240-mode row, and band(c, 32) with it, will move. band(c, 32) is the 240-mode refinement response (3.9e−2 / 2.4e−2 / 3.2e−2), built with ρ_inv. That row's cond(G_z) was never recorded; at S/nvec² = 0.042, interpolating the scans puts it well above 1/eps (200 modes: 7.6e11 at 0.06 and 7.8e25 at 0.03), and A4 shows ρ_inv moving T_S by order 1e−2 in that regime (−1.3e−2 to −1.6e−2 against +1.9e−3 to +2.8e−3). Its lowest eigenvalues (−7.3e−3 to −8.9e−3, which checker/ s7.7 reads as the row being off by at least that much) fit an inverse artifact. If the rebuilt 240-mode row stays within about 1e−2 of the 200-mode row, band(c, 32) falls, and checker/'s N = 32 verdict is read again at its own criterion.
10.5 Inventory: what depends on ρ
ta_mellin.py and ta_prolate.py are in T_S's import closure, so this commit changes checker/'s T_S input digest, and every row of checker/'s snapshot (N = 8, 16, 32) stops being served until checker/ rebuilds it.
| artifact | depends on ρ | done |
|---|---|---|
ta_ts_prolate.json (T_S rows (40, 800), (80, 1200), (120, 1600), (130, 1800), (200, 2400)) | yes | regenerated locally under the QR route (7 s, 14 s, 162 s, 137 s, 302 s). Every recorded scalar moves by at most 1.9e−15, 1.1e−14, 1.2e−13, 2.1e−13 and 1.5e−7 respectively; no count changes (T_S below −0.02, the residual counts beyond ±0.1); rows now carry cond_Fz, cond_Fb (8.7e5 and 6.2e4 at (200, 2400)) |
ta_gram_probe.json (local runs 80 to 120 at S up to 4800; modal/'s 140 to 200 at 4800 and 160 at 9600) | yes | not regenerated: at (80, 1200), (80, 4800), (100, 4800) the QR route moves its ΔT by at most 2.6e−14 and reproduces the committed dT to 1.1e−14 (cond(F) at most 17). Its other runs sit at S/nvec² >= 0.12, where s10.1's scans put cond(F) below about 1e3, so an expected change below 1e−10, under every digit §7b states; not measured |
ta_rho_check.json | uses both routes by design | written by this follow-up |
ta_rho_diag.json, ta_ts_cells.json, ta_es_cells.json | no (formed Gram matrices only; dry runs; closed forms) | none |
checker/'s snapshot and modal/'s checker_* units (not this folder's) | yes, through the digest | checker/ and modal/ rebuild (done: all eleven units in modal/out_rho/, 61ed0c1; checker/ s7.8, 3e36fa4) |
For modal/ (estimates from the unit wall times in modal/out/ and the calibration's cost, 0.055 USD for 613 s of wall time on the 4-CPU container, about 9e−5 USD per second):
- Needed: the five N = 32 checker/ units under the new digest: (200, 2400) 432 s, (240, 2400) 887 s, (280, 2266) 844 s, (319, 2633) 1036 s, (364, 3060) 1784 s of wall time, about 4980 s and 0.45 USD; the new
cond_Fz,cond_Fbdiagnostics add a few seconds each. checker/'s N = 8 and 16 rows are its own local builds. - If a rebuilt 319 or 364-mode row fails at order 1e−2 (the grid part of s10.1's decision, whose numbers s10.1 points here for): the three default-rule rows at S/nvec² = 0.04, (280, 3136) about 1150 s, (319, 4070) about 1600 s, (364, 5300) about 3800 s (s-nodes x w-nodes 1.28e10, 1.77e10, 4.23e10 at the measured 8e−8 to 1e−7 s each), about 0.59 USD. The 364-mode unit exceeds modal/'s 1800 s unit limit: it needs a longer limit, or the hats split by s-range across units (each chunk of s is independent in
hats_modes). - Informative, optional: the S response at N = 32 in the default-rule regime, (280, 4532), about 1830 s (s-nodes x w-nodes 2.04e10), 0.17 USD.
- Not recommended: the coordinator's step-1 cond(G_b) at 240 modes under a finer grid and a raised Kmax (about 1250 s for the s-grid, 1110 s for the w-grid, 1520 s for Kmax 15, 0.35 USD in all): the 80-mode refinement already reads four unchanged digits against a factor 1e3 to 1e9 from S alone. The gram-probe Modal runs: expected change below 1e−10, not worth a rerun.
10.6 s10.4 against checker/'s outcome (follow-up 4, 2026-09-24)
checker/ rebuilt every T_S row under the QR route (modal/out_rho/, 61ed0c1) and graded the N = 32 rows by a reading committed before any rebuilt row was analysed (49db49f; outcome 3e36fa4, its RESULTS s7.8). Each prediction of s10 that its outcome tests is quoted below as committed; the wording of s10.1 to s10.4 is unchanged. The outcome numbers are checker/'s (checker_ts_cells.json, pinned in test_ta_checker_citations.py), grade measured, float64, one route.
| prediction, as committed (s10.4 unless stated) | checker/'s outcome | held? |
|---|---|---|
| "Expected: it passes at 280 modes, and the order-10 failures at 319 and 364 are gone" | passes on all fifteen N = 32 builds, at band_0 and at the old band(c, 32): T_S's lowest eigenvalue is +1.42e−3 to +2.40e−3 at 280 modes, +1.98e−3 to +2.87e−3 at 319 and +3.42e−3 to +4.41e−3 at 364 (the old route: −13.6 to −36.6 at 319 and 364) | held |
| "By A4's analogue (same S/nvec²), I expect no eigenvalue below −band at 280." | none, on any cell | held |
| "A rebuilt 319 or 364-mode row could still fail at order 1e−2 (past A2's stopping point, next bullet) or, less likely, by more." | no build fails in any bin, so checker/ did not ask for batch 2 (the default-rule rows at S/nvec² = 0.04) | did not occur |
| "the scans (s10.1) put cond(G_z) there at 1e26 or more, so cond(F_z) near 1e13 to 1e15, the range where A2 found the QR route stops" | cond(F_z) = 1.9e13, 2.1e13, 2.1e13 at 280, 319, 364 modes (so cond(G_z) = cond(F_z)², 3.6e26 to 4.4e26); none reaches 1e14, so all three pass checker/'s determinacy gate, marked beyond A2's last clean case (6.7e11) | held; the next constraint and its remedy were stated for a failure at order 1e−2, which did not occur, so they are untested |
| "A prediction for checker/, not a measurement: the 240-mode row, and band(c, 32) with it, will move." | the 240-mode response moved from 3.9e−2, 2.4e−2, 3.2e−2 to 2.97e−2, 1.08e−2, 2.3e−3 (c = 2.2, 2.5, 2.9), and band(c, 32) from 3.92e−2, 2.37e−2, 3.16e−2 to 2.97e−2, 1.41e−2, 8.18e−3 | held on every cell |
| "Its lowest eigenvalues (−7.3e−3 to −8.9e−3, which checker/ s7.7 reads as the row being off by at least that much) fit an inverse artifact." | rebuilt, T_S's lowest eigenvalue on the 240-mode row is +2.03e−3, +1.34e−3, +1.09e−3 | held |
| "If the rebuilt 240-mode row stays within about 1e−2 of the 200-mode row, band(c, 32) falls, and checker/'s N = 32 verdict is read again at its own criterion." | the 240-mode row is 2.3e−3 from the 200-mode row at 2.9 and 1.08e−2 at 2.5, but 2.97e−2 at 2.2; band(c, 32) fell on every cell, at 2.2 to the 240-mode response itself; the verdict was read again: the growth survives at 2.9 and falls at 2.5 and 2.2 | the expectation that the row stays within about 1e−2 held at 2.9 and 2.5 and not at 2.2, where checker/ s7.8 calls it refuted; at 2.2 the 240-mode response fell only from 3.9e−2 to 2.97e−2 |
| s10.1: "checker/'s cond(G_b) of 1.1e17, 2.8e18 and 5.1e17 for the default-rule rows are therefore lower bounds, not values." | the rebuilt rows report cond(F_b) = 4.1e8, 4.4e9, 7.7e10 at 280, 319, 364 modes, so cond(G_b) = cond(F_b)² = 1.7e17, 1.9e19, 5.9e21, above each of the three; the rebuilt rows' formed cond(G_b), 2.9e17, 2.6e17, 1.2e18, are not values either (at 280 it exceeds cond(F_b)²) | held |
Two statements of s10.3 meet the rebuilt rows as well. A3's proxy for the platform drift under the QR route (a 2^−52 perturbation of the samples moves ΔT by 2.9e−12 to 3.2e−12 at (200, 2400), N = 32) now has one cross-platform datum beside it: this folder's laptop build of that row (ta_rho_check.json, A4) against checker/'s Modal row, T_S's lowest eigenvalue differing by at most 2.3e−12, the proxy's size (checker/ s7.8 reports at most 2.5e−12 over the three lowest). And s10.3 left open "whether it is at 319 and 364" (the grid part of s10.1's decision): at 280, 319 and 364 modes, at S/nvec² = 0.029, 0.026, 0.023, the falsifier passes without it.