/teal-sea
teal-sea / zeta-labstate of record · compiled 28 Sep 2026 · revision e4945c4 · source

Library · hunts/r_908de5/RESULTS.md

`beta := normLower`, the remedy lands, the predicted slack does not

2,030 words · 210 lines · source

Status: settled, with one prediction in docs/25 refuted.

Two findings, and the second is the one worth the run:

  1. The remedy works. Setting beta := normLower(B.inflate r) makes the rung-3 grid site inequality true by construction, and the obligation that then carries the weight, eps' + L*h/2 <= beta, the hypothesis of ZetaLean.DH.DH_lower_on_[hv]cell: still holds at all 104 grid sites, in both arithmetics measured. No statement is weakened, nothing is dropped, L = 16 and eps' = 1/2000 are untouched.
  2. docs/25 §4.3 defect 2's prediction is wrong. It states that after the remedy "the cell condition then carries >= 10x slack". Measured exactly in rationals over all 200 cell obligations: the worst clears by 1.3697x in ball arithmetic and 1.3566x in chained-rect. The prediction overstates the worst case by a factor of ~7.3. Worse for the prediction's logic, the remedy barely moves the worst case at all, it was already 1.3647x under pred_beta, so beta going up (ball) buys +0.4 % and beta going down (chained rect) costs -0.6 %. The slack did not move into the cell condition, because it was never the grid inequality's to give.

Nothing here bears on RH (docs/08). Nothing here is a result until it goes through the battery or the funnel; this directory is exploratory by construction.

What the defect was

pred_beta in lean/cert/rung3_plan2.json came from mpmath dps-40 point evaluations minus a 2e-11 sampling slack, i.e. it was drawn at the achievable bound. So the site obligation

normLower(B.inflate r) >= pred_beta (GRID)

sits at the line by construction in any arithmetic. Commit 44d3133 measured exactly that: 104/104 pass in ball arithmetic, 12 of them by under 1 %, the thinnest g_right_15 by 0.03 %. A margin computed against a number drawn at the bound is not evidence about the enclosure; it is evidence about where the prediction was drawn.

Before / after

(GRID), ball arithmetic, 104 grid sites:

beta sourceworst margin12 thinnestmeaning of the margin
pred_beta (commit 44d3133)1.0003 (g_right_15)under 1 %how close the prediction was drawn to the bound
normLower (this hunt)1.0000, every site,nothing: true by construction, and it says so

(CELL): eps' + L*h_i/2 <= beta_i, one obligation per cell endpoint (200 over 104 sites), exact rational arithmetic over the plan JSON:

beta sourceobligationsfailingworstworst sitemedianbest
pred_beta (as shipped)20001.3647g_left_221.39248.9875
normLower, ball20001.3697g_left_091.617911.6236
normLower, rect + composite chains20001.3566g_top_201.39288.9576
normLower, rect non-chain (scripts/60 as shipped)24240.2348g_left_100.55570.7743
docs/25 §4.3's prediction,,">= 10x",,,

Two things to read off it. The worst case moves by under 1 % in either direction, the remedy is a change of what the number means, not a change in headroom. And the median only improves in ball arithmetic (1.3924 -> 1.6179, i.e. +16 %); in chained rect it is flat at 1.3928, because chained-rect normLower tracks pred_beta to a fraction of a percent at 104 of 104 sites. The improvement is a property of the ball enclosure, not of the beta source.

Read the fourth row before the third. It is the one that decides whether the remedy is landable today.

The arithmetic the remedy needs

There are three enclosure arithmetics in this tree, not two, and only the first of them is what scripts/60_rung3_generate.py actually emits:

Measured at the two thinnest sites, normLower relative to pred_beta:

siterect non-chainrect + chainsball
g_left_100.17160.99971.0081
g_top_100.36590.99371.0005
g_right_150.52810.99931.0003

Over the 12 sites measured in all three, non-chain normLower/pred_beta runs 0.1716 to 0.5462, the enclosure is 2 to 6x too wide at a point. Setting beta := normLower there yields betas a fifth to a half of pred_beta, and (CELL) fails outright at every one of the 24 obligations they carry, the worst at 0.2348. So the remedy is not free: it is contingent on the generator emitting composite chains. The Lean support for that already exists and is unused by the generator: ZetaLean.ComplexInterval.dirichletTermBox2 (split Taylor orders), contains_coarsen, and contains_cpow_mul in DHCertSupport.lean (the multiplicativity step m^-s = a^-s * b^-s). What is missing is only the emission: one chain lemma per composite m instead of one flat term lemma.

That is a bounded piece of generator work, and it is not this hunt's budget.

What changed in the tree

Settled 2026-08-17, after this hunt closed. The rebuild the paragraph above left unfinished was run to completion on an idle 64 GB machine, from the same origin/main (ba657c7) with lean/ byte-identical to it, git diff ba657c7 HEAD -- lean/ empty, so this reads the tree the hunt reported on and not a repaired one. lake build completed all 8803 targets, exit 0, zero error: lines, and exits 0 again on an immediate second invocation. ZetaLean.Pub1.CertAtoms, the module killed at 733 s, elaborated in 27 m 33 s without approaching failure; ZetaLean.ChebyshevBounds was never in doubt after its 8.5 s clear. So the reading the hunt declined to round up was the right call and the answer it was waiting for is: the two kills were the container, not the proofs.

Recorded here rather than by editing the paragraph above, because the hunt's refusal to say green on the evidence it had is the part worth keeping. What this still does not settle: it is one machine, so it bounds the memory a clean build needs from above and nothing else, and CI has not been shown to have that headroom. The operator note that Lean builds and heavy Python sweeps must be scheduled serially in a 15 GB container stands unchanged, this measurement is the reason it stands, not a reason to drop it.

What this does not settle

Loose threads