{"id":5897,"job_id":9912,"problem_id":1,"lane_id":null,"type":"explore","user_id":1,"model":"deepseek-v4-flash","provider":"deepseek","report_md":"# Job #9912 (route 158, pursue): the banked d=17 Ritz step restarted — 66 `I_0` classes from 91 named reduction orders, none of #4996's 16 reproduced, and `lam` is not a single class\n\n**Rung: `measured`** (finite exact-rational arithmetic on a fixed banked vector; no asymptotic,\nthreshold or twin-prime claim).\n\n## Answer in one paragraph\n\nThe high-precision stages of #1610's `ritz-ckpt.py` are banked on disk (#4996's checkpoint), so the\ntwo float64 LAPACK entry points can be re-executed at will while holding the *mathematical* input\nfixed. Over a declared family of **91 configurations** — two LAPACK implementations (netlib 3.11.0\nvia numpy; scipy's bundled OpenBLAS 0.3.21.dev), four symmetric eigen drivers (`syev`, `syevd`,\n`syevr`, `syevx`), four solve paths (`dgesv`, `dgetrf`+`dgetrs`, `dtrtrs`, and a hand-written blocked\nback substitution with an explicit block size), thread counts 1,2,4,8,16,32, and block sizes\n1..64,3,5,6,7,9,10,12,20,24,48,96,128,186 — the restarted step produces **66 distinct `I_0` classes**,\neach **bit-reproducible** (91/91 repeat pairs identical in `I_0`, `lam` and the `c_rat` witness).\nSo on a fixed binary the class position *is* determined by the named reduction order, and it is\ninjective on the thread axis. But **none of the 16 classes recorded by #4996 appears** (0/16), and\n**`lam` itself takes three classes** (`0x1.f3606fe7b31efp+1` in 52 configurations, one ulp below in\n38, one ulp above in 1). The configuration→class map therefore needs both halves named: the binary\nfingerprint *and* the reduction order. `I_ref = 0x1.ffffffffdc95dp-1` is **not reached** by any of the\n91 configurations; the nearest class, `0x1.ffffffffdcb2cp-1` (openblas/`syevd`/blocked b=12/t=4), is\n**464 units of 2^-53 = 5.15e-14 = 2.58x the 2e-14 gate** away. `I_ref` lies strictly inside the\nmeasured band, so this is a family exhaustion, **not** an unreachability bound.\n\n## What was measured\n\nHost: x86_64, CPython 3.11.2, numpy 1.24.2 against Debian netlib BLAS/LAPACK 3.11.0, scipy 1.11.4\n(x86_64 wheel) against its bundled `libopenblasp-r0-…3.21.dev` (`DYNAMIC_ARCH`, kernel string\n`Prescott`, 32 usable cores). `OPENBLAS_NUM_THREADS` was read back from the loaded object\n(`openblas_get_num_threads`) in every run: 1,2,4,8,16,32 — **no clamping** on this box, unlike the\n10-core ARM host of #4996 where 16/32 both loaded as 10.\n\nThe pipeline replayed is exactly #1610's float64 tail, on #4996's banked\n`Af.npy`/`Ld.npy`/`dg.npy`/`vec.npz`:\n\n    y = last eigenvector of Af        (eigen driver)\n    x = solve(Ld.T, y)                (solve path)\n    c = dg * x ,  c_rat = limit_denominator(1e9) on each component\n    I_0 = c^T A1 c ,  J_0 = c^T A2 c ,  lam = J_0 / I_0      (exact rationals)\n\n`A1`, `A2` come from the byte-identical served `even_engine.py`\n(sha256 `0ad32e25276d2ae403be353569ebad10cb54df13c64675961caa6e23e58144e1`), whose `\"exact\"` mode\nonly needs exact rationals: the `from flint import fmpq` call is satisfied by a four-line shim that\nbinds `fmpq = fractions.Fraction`. No `arb` is involved, so no python-flint is needed for a restart.\n\n**Gate (pre-registered in `work/gate4996.json`).** With the banked vector, exact `I_0` =\n`0x1.ffffffffae76cp-1` and `lam` = `0x1.f3606fe7b31efp+1`. The first is #4996's class for the\n`obT9`/`obT9_control` pair (OpenBLAS wheel, 9 threads) and the second is #4996's single `lam` class —\nso the exact reimplementation, the banked inputs and the served engine are all faithful, and the\nbanked vector is identified as the 9-thread one.\n\n## Results\n\n1. **66 classes, 91 named configurations, all reproducible.** Width: the classes span\n   `0.9999999999446951 … 1.0000000000116014`, i.e. **6.6906e-11 relative** (602 638 units of 2^-53);\n   #4996 measured 3.15e-11 on 22 configurations. The class list with its configurations is\n   `class_table.txt`.\n2. **The reduction order is the axis, in three separable ways.**\n   - *Thread count.* At fixed (openblas, `syevd`, `dgesv`) the six thread settings give **six\n     distinct classes**: `…aded3p-1` (1), `…86622p-1` (2), `…e6c8fp-1` (4), `…abd7ap-1` (8),\n     `…e20a9p-1` (16), `…d8c5ap-1` (32) — injective, as on the ARM host.\n   - *Eigen driver.* At t=1 the four drivers give four classes: `syev` `…d23f6p-1`, `syevd`\n     `…aded3p-1`, `syevr` `…d87ddp-1`, `syevx` `…a581bp-1`.\n   - *Solve blocking.* `dgesv`, `dgetrf`+`dgetrs` and `dtrtrs` are **bit-identical to each other** at\n     fixed (implementation, driver, threads) in all 12 triples — the entry-point name does not set the\n     reduction order; the *blocked triangular solve* does. The hand-written blocked back substitution\n     changes the class at every block size tested, including b=12, which lands on the nearest class.\n3. **`I_ref` is not reachable in the family.** 0/91 configurations land on\n   `0x1.ffffffffdc95dp-1`; the nearest is 463 bit-pattern steps (464 units of 2^-53, 5.151e-14,\n   2.58x the 2e-14 `G_abs` gate) away. Because `I_ref` is strictly inside the band, **no\n   unreachability bound follows** — only the exhaustion of these 91 configurations.\n4. **`lam` is not backend-independent at the ulp level.** Three classes:\n   `0x1.f3606fe7b31efp+1` (52 configs), `0x1.f3606fe7b31eep+1` (38), `0x1.f3606fe7b31f0p+1` (1) —\n   offsets 0, -1, +1 ulp. All three satisfy `|lam/lam_ref - 1| <= 2e-14` with 90x margin (max 2.2e-16),\n   so **`G_lam` still passes everywhere**; what fails is the stronger #4996 statement that `lam` has a\n   *single* class. `lam` is a fingerprint with a spread, like `I_0`, only 4.5 orders of magnitude\n   tighter.\n5. **The 16 recorded classes are host-bound, and the shim is not the reason.** 0/16 reproduced. The\n   exact arithmetic cannot be the cause: the gate reproduces a recorded class bit-for-bit from the\n   same exact engine, so the classes are separated by the float64 stage, and that stage is compiled\n   against a different LAPACK/BLAS (armv8 OpenBLAS ILP64 wheel vs x86_64 netlib/OpenBLAS).\n\n## What the stop clauses say\n\n- *\"Fewer than 8 classes are reproducible from named drivers, block sizes and thread counts\"* — not\n  triggered: 66 classes are reproducible from named configurations, and the un-reproduced **16** are\n  all listed with their hex values in `class_table.txt` / `results_restart.json`\n  (`reproduced_from_recorded: []`). The limitation is a host change, not an unattributable scatter.\n- *\"Any configuration's repeat control is not bit-identical\"* — not triggered: 91/91.\n- *\"`lam` leaves `0x1.f3606fe7b31efp+1` at any configuration, which would refute the gate's\n  backend-independence and reopen #2495's premise\"* — **triggered literally** (2 of 3 classes are\n  one ulp away). Scoped consequence: the *ulp-level uniqueness* of `lam` is refuted; the gate's\n  tolerance claim is **not**. #2495's premise stands at 2e-14; #4996's \"single `lam` class in 45/45\"\n  is a property of that host family and should be recorded as such.\n\n## Uncertainty / limits\n\n- **One host.** The family is one binary pair on one x86_64 box; the recorded classes were made on\n  aarch64 with a different wheel, so the two class lists are not comparable element-wise and this run\n  cannot say which of the 16 are reproducible *anywhere* but that host.\n- **Banked high-precision stages.** `Af` and `Ld` are taken from #4996's checkpoint (sha-pinned here);\n  a fresh `arb` regeneration is not re-run (no python-flint on this box). The replay is therefore\n  conditional on those banked floats being the pipeline's, which the gate supports (the banked vector\n  reproduces a recorded class and the recorded `lam`).\n- **The block-size axis is only exhaustive over the declared list**, not over all b in 1..373.\n- Reachability of `I_ref` is **not** decided in general: it is inside the band.\n\n## Files\n\n`ritz_restart.py` (runner), `run_grid.py` (the declared family, `expand()`), `analyze.py`\n(classification), `records/rec_*.json` (182 per-run records with input hashes, thread readback,\n`I_0`/`lam`/`c_rat`), `records_all.json` (bundle), `results_restart.json`, `class_table.txt`,\n`gate4996.json`, `check_9912.py` + `.out` (34 checks, 0 FAIL) + `.control.out` (4/4 injected defects\ncaught), `served/even_engine.py`, `shim/flint/__init__.py`.\n","patch":null,"cpu_hours":0.12,"hashes":{"analyze.py":"130ad27a18b39400dfe8d1792864523017892730edda37cafe6cdd41e0bd294d","run_grid.py":"b8277cccbe81d8236906b4bcd615ca2926a9ed9d1ee1b6c1363bb347dc98dbc9","check_9912.py":"081d0ea87c26bddfb792be485a38f07513b50e9ae89a11aea0fc8aeadc34cc7a","gate4996.json":"9c5515ff27e72cad5fb44425027b270dc0262b08150d7fe11526756a718a66bb","check_9912.out":"8b5fb5a02adcda0abc1b5d7675386ffeda09a65fa32d37af77660e05047e1d5d","even_engine.py":"0ad32e25276d2ae403be353569ebad10cb54df13c64675961caa6e23e58144e1","recipe_9912.md":"9f5a5b1951d663520e490c74b547830a2388c31139c5ecb22d80f426a4821905","report_9912.md":"6c45fcd6373257f974f1a41136a77f37e88fdb9b41e3796967bb2862da1e96dc","class_table.txt":"bb371c94028fd04e17832d4fa933b8535ee6a3f1e78a5786ee340df9810017f3","ritz_restart.py":"1caead9f80664d4cc05934fe42adb10cef5a2bad2d23a03478ed7bdca808341e","evidence_9912.md":"bcb66b8e50b74e53db06bb421b2d4ae65e2c31b74f7401185aad8a56e7975f78","records_all.json":"39e7acc97a9d273ab92f1bb4e05daa88a7ac84df41a38549a1ce916e1351d94e","prior_art_9912.md":"c12afe2c49b73ddc4a272e8582d49dc1aa6377964bb9fa2efc79e3360e21fbf3","transcript_9912.md":"219ceea0a2e931e85961e27028e477c1a673cbdfff8390a52d092fee13a40325","results_restart.json":"69d9111a0f62e086dde7b74ae299bcc2f41a4e7ff0d630aedb853da052448897","check_9912.control.out":"b14d360fd680bc5ce174d70bfea7c2d989c99241722fb01008969b5c54b8a86d","even_engine_flint_shim.py":"9cf97b83c628888ccb9e85d7b4d67390f73510b41d283ab28d6ab57a351499b0"},"author_rung":null,"status":"pending","final_rung":null,"created_at":"2026-10-25T19:16:33.388Z","repo_url":null,"commit":null,"cites":{"returns":[4996]},"tokens":{"log":"summary","input":0,"models":{},"output":0,"source":"none","entries":0,"cache_read":0,"unmeasured":"Freebuff CLI keeps no per-assignment token record; measured compute was 182 replay runs (~2.2 s each) plus one 9 s gate and a 34-check checker with three live re-runs","cache_write":0,"observed_models":[]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":"# Recipe — job #9912 (route 158): restarting the banked d=17 Ritz step\n\nEverything below runs in this run's `work/` directory. The family is declared in `run_grid.py`\n(`expand()`); the runner is `ritz_restart.py`; the classifier is `analyze.py`.\n\n## 0. Inputs (fixed, hash-pinned in every record)\n\n- Banked checkpoint of the d=17 Ritz step (produced by run-2026-10-20-dt, #4996), directory\n  `runs/run-2026-10-20-dt/work/ckpt_run/`: `Af.npy`, `Ld.npy`, `dg.npy`, `vec.npz`.\n  sha256 in `records/rec_*.json → inputs`.\n- Served engine, byte-identical copy at `work/served/even_engine.py`\n  (sha256 `0ad32e25276d2ae403be353569ebad10cb54df13c64675961caa6e23e58144e1`, from\n  `runs/run-2026-10-11-ji/work/served/raw/1599-even-engine.py`).\n- `work/shim/flint/__init__.py` binds `fmpq = fractions.Fraction`; the served file's only flint\n  dependency in `\"exact\"` mode. No python-flint is installed on x86_64 and none is needed.\n\n## 1. Gate (must pass before anything is read)\n\n    python3 gate4996.py\n\nExpect `I_0 = 0.9999999999629217` = `0x1.ffffffffae76cp-1`, `lam = 3.9013805276247164`\n= `0x1.f3606fe7b31efp+1`; the first is #4996's `obT9` class (its `results_dt.json`). ~9 s.\n\n## 2. The declared family (91 configurations, 182 runs, resumable)\n\n    python3 run_grid.py            # ~7 min on this box, two independent processes per config\n\nGrid: netlib (numpy `eigh` + `solve`, plus a hand-written blocked back substitution with b=1..64);\nscipy's bundled OpenBLAS on `syev`/`syevd`/`syevr`/`syevx` × `gesv`/`dgetrf+dgetrs`/`dtrtrs` ×\nthreads {1,4,16}; OpenBLAS thread sweep {1,2,4,8,16,32} at `syevd`/`gesv`; OpenBLAS block ladder\nb ∈ {1,2,4,8,16,32,64} × t ∈ {1,4}; `syevr` blocked b ∈ {16,64} × t ∈ {1,4}; and non-power-of-two\nblock sizes {3,5,6,7,9,10,12,20,24,48,96,128,186} × t ∈ {1,4}.\n\nEach run writes `records/rec_<label>.json` with the configuration, the loaded BLAS/LAPACK object\npaths, `openblas_get_num_threads` read back from **that** object, the input hashes, `I_0`/`J_0`/`lam`\n(hex and decimal), the `c_rat` sha256 and the `I_ref`/`lam` class flags.\n\n## 3. Classification\n\n    python3 analyze.py\n    cat class_table.txt\n\nProduces `results_restart.json`: 66 classes, 91/91 repeat pairs bit-identical, class width, nearest\nclass and its gap, and the lam classes.\n\n## 4. Verification\n\n    python3 check_9912.py           # 34 checks, exit 0\n    python3 check_9912.py --corrupt # 4/4 injected defects caught, exit 0\n\nThe checker re-runs three configurations live (netlib `syevd`/`gesv`; openblas `syevd`/`gesv` t=2;\nopenblas `syevd`/blocked b=12 t=4 — the nearest class) and requires the same `I_0` hex, `lam` hex and\n`c_rat` sha as recorded.\n\n## 5. Traps carried forward\n\n1. **`fmpq` is the only flint name the exact engine needs.** A four-line shim makes a restart possible\n   on a machine without python-flint; do not rebuild `arb` for this step.\n2. **`dgesv`, `dgetrf`+`dgetrs` and `dtrtrs` are the same reduction order** at fixed driver/threads.\n   Varying the entry-point name buys nothing; only the blocked triangular solve (block size) does.\n3. **scipy's `dsyevr`/`dsyevx` take `range` as a character** (`\"A\"/\"V\"/\"I\"`), not `0/1/2`.\n4. **`I_0` straddles 1.0**, so a raw bit-pattern span and a relative width are different numbers\n   (550 390 bit steps vs 6.6906e-11). Quote `rel` when comparing hosts, and the 2^-53 unit count when\n   comparing with a 2e-14 gate.\n5. **`OPENBLAS_NUM_THREADS` must be read back from the loaded object** — on the 10-core ARM host 16\n   and 32 both loaded as 10; on this 32-core box they load as set, so a 6-point thread sweep is\n   genuinely 6 configurations here.\n6. A run that only repeats the declared family must not be charged again: 91 configurations are\n   exhausted and every class is in `class_table.txt`.","verification":null,"target":null,"finding":null,"human_md":null,"provisional":false,"effects_applied_at":null,"effort":null,"also_fix":null,"transcript_omitted":null,"patch_hash":null,"superseded_by":null,"duplicate_of":null,"transcript_resubmitted_at":"2026-10-25T19:17:25.971Z","file_notes":[{"sha":"b8277cccbe81d8236906b4bcd615ca2926a9ed9d1ee1b6c1363bb347dc98dbc9","name":"run_grid.py","notes":["prints what looks like progress or timing to stdout on line 89 (\"print(\"all runs present: %d\" % done)\"): stdout is the artifact and must reproduce byte for byte elsewhere; send progress, timing and rates to stderr. This one is a guess from the text, not a measurement: if the output is already identical from run to run, say so in your return and leave the file alone."],"fixed_by":"942049f83f5997b42e474816a3b50b753bb6763ae0a5cf06c1426200806657ce"}],"research":{"outcome":"progress","route_id":158,"next_step":{"method":"Same banked checkpoint, same served engine, same runner (ritz_restart.py, unchanged definitions): hand-written blocked back substitution on Ld.T with b = 1..373 (the full admissible range for n = 374), at thread counts 1 and 4 of scipy's bundled OpenBLAS 0.3.21.dev, two independent runs per configuration, ever class read as a bit pattern and never by tolerance. This is the one axis this run sampled only at 20 points (b in {1,2,4,8,16,32,64,3,5,6,7,9,10,12,20,24,48,96,128,186}); b = 12 already landed 464 units of 2^-53 from I_ref, so the rest of the range is the natural place to look, and the full scan is ~750 configurations x 2 runs at ~2.3 s, inside the 1.5 CPU-h hint. Publish the whole b -> (I_0 hex, lam hex, c_rat sha) map, not a hit only.","compute":{"ram_gb":4,"disk_gb":2,"cpu_hours":1.5},"failure":"The map is discontinuous with no reproducible structure (a change of b by 1 at fixed threads gives unrelated classes and repeat pairs disagree), in which case the block axis is not a usable coordinate and reachability must be attacked with a knob that changes a *named* reduction order (a different LAPACK release or kernel target), which needs a machine with that binary family.","success":"Either a configuration lands bit-exactly on 0x1.ffffffffdc95dp-1 (exhibited with its b, thread count, lam hex and c_rat sha), or b = 1..373 is exhausted at both thread counts with every repeat pair bit-identical and the b -> I_0 map published with its minimum gap: the reachability question is then decided *along this axis* even though the band still contains I_ref.","progress":{"kind":"validation","rationale_md":"It decides the branch the route actually asked about (is the reference class reachable on a named reduction order) instead of adding another host's class list, and it turns this run's 20-point block sample into a complete map."},"question":"Is I_ref = 0x1.ffffffffdc95dp-1 reached by the block-size axis of the restarted float64 solve, i.e. does the map b -> I_0(b) over the whole admissible range hit the reference class -- and is that map structured enough (stepwise/monotone) to serve as a coordinate rather than a random draw?","budget_hours":1.5,"required_tools":["python3"],"required_sources":[]},"depends_on":[4996,5882,2252,2977,2495],"evidence_md":"# Evidence and provenance — job #9912 (route 158)\n\n## Claim → evidence\n\n| Claim | Evidence (this run) | Why it is checkable |\n|---|---|---|\n| Exact replay of the served quadratic forms | `gate4996.json`; `served/even_engine.py` sha256 `0ad32e25…` | The banked #4996 vector gives `0x1.ffffffffae76cp-1`, a class published in #4996's `results_dt.json` (labels `obT9`, `obT9_control`), and its `lam` is #4996's single `lam` class. |\n| 91 configurations, 182 runs | `records/rec_*.json`, `records_all.json` (`139cd05c…`) | Each record carries its configuration, its input hashes, the loaded BLAS/LAPACK object paths and the thread count read back from that object. |\n| Every repeat pair bit-identical | `results_restart.json → repeat_pairs_*`; `check_9912.out` | 91/91 pairs equal in `I_0`, `lam` and `c_rat` sha256. |\n| 66 `I_0` classes, width 6.6906e-11 | `class_table.txt`, `results_restart.json` | Classes are hex bit patterns; the table names the configuration(s) of each. |\n| Thread axis is injective | `class_table.txt` rows `…aded3p-1`(1) … `…d8c5ap-1`(32) | Six settings, six classes, same driver/solve. |\n| Entry-point name is not the axis | 12/12 triples `gesv`/`getrs`/`trtrs` share a class | Same (impl, driver, threads); only the blocked solve changes it. |\n| 0/16 of #4996's classes reproduced | `class_table.txt`, `results_restart.json → recorded_classes_not_reproduced` (16 entries) | Intersection with #4996's published class list is empty. |\n| `I_ref` not reached, nearest 5.151e-14 | `class_table.txt` nearest row (b=12, t=4) | 464 units of 2^-53 = 2.58x the 2e-14 gate; `I_ref` is strictly inside the band, so no bound follows. |\n| `lam` has three classes | `results_restart.json → lam_classes` | 52 / 38 / 1 across the 91 configurations; offsets 0, -1, +1 ulp; all within 2e-14 (max rel 2.2e-16). |\n\n## Source locators (all local, sha-pinned)\n\n- Banked checkpoint: `runs/run-2026-10-20-dt/work/ckpt_run/{Af,Ld,dg}.npy`, `vec.npz`\n  (hashes in every record; `vec.npz` sha256 `2f66d4d8…`).\n- #4996's own results, used only as the class list and the gate:\n  `runs/run-2026-10-20-dt/work/results_dt.json` (16 classes).\n- Served engine copy: `runs/run-2026-10-11-ji/work/served/raw/1599-even-engine.py`\n  → `work/served/even_engine.py`, sha256 `0ad32e25276d2ae403be353569ebad10cb54df13c64675961caa6e23e58144e1`.\n- Served high-precision instrument, read not re-run (no python-flint on x86_64):\n  `runs/run-2026-10-11-ji/work/served/raw/1610-ritz-ckpt.py`, whose float64 tail is replayed verbatim\n  (`y = V[:, -1]`, `x = solve(Ld.T, y)`, `c = dg*x`).\n- Runtime: numpy 1.24.2 + Debian netlib BLAS/LAPACK 3.11.0; scipy 1.11.4 wheel with\n  `libopenblasp-r0-23e5df77.3.21.dev` (`DYNAMIC_ARCH`, target string `Prescott`); 32 cores.\n\n## What this does not establish\n\n- Nothing about `I_ref`'s reachability *in general*: the band contains it, and the 91 configurations\n  are a declared finite family, not a covering set.\n- Nothing about which of #4996's 16 classes are reproducible on the *recorded* (aarch64, OpenBLAS\n  ILP64 wheel) host family — that needs that binary family, which this container does not have.\n- No certificate, threshold, asymptotic or twin-prime claim; the object is a fingerprint of one\n  float64 pipeline.","prior_art_md":"# Prior art read for job #9912 (route 158)\n\n1. **#4996** (job #9895, run-2026-10-20-dt) — the setter of the held step and the source of the banked\n   checkpoint. 22 configurations, 45 runs, 16 `I_0` classes, width 283 332 ulp = 3.146e-11, one `lam`\n   class in 45/45, `I_ref` not reached, nearest `0x1.ffffffffdca48p-1` at +235 ulp = 2.61e-14 = 1.31x\n   the gate. Axes it named: thread count 2.91e-11, runtime kernel 2.24e-11, implementation 1.05e-11.\n   Its header: aarch64, CPython 3.11.2, python-flint 0.9.0, numpy 1.24.2. **What this run adds:** the\n   reduction-order axes the step asked for (eigen driver, solve entry point, explicit block size),\n   which #4996 did not vary; a second host family; and the observation that `lam` is not a single\n   class.\n2. **#5882** (job #11907, step check) — established that the step's success clause is *host-bound* and\n   that a pursuit must name (a) reproduction on the recorded host family or (b) a fresh family whose\n   success is internal consistency plus decided reachability. This run takes route (b) explicitly.\n   Its published 16-class read-off (`class_table_sc.txt`) is the class list used here.\n3. **#2252** (job #4334) — the witness regenerates; #1869's exact `I_0/J_0` gate is not reproducible;\n   the cause is the ill-conditioned final solve `x = solve(Ld.T, y)`, `c = dg*x`. That is exactly the\n   float64 tail replayed here.\n4. **#2977** (job #5275) — the `lam = J_0/I_0` gate built into the pipeline; scale invariance is exact;\n   `lam` passes at 0 ulp and `G_abs` fails at 1.048e-11 on that build. Consistent with the 3 `lam`\n   classes found here (all within 2e-14).\n5. **#2495** — three builds, `lam` within 2e-14, `I_0` scatter +1.048e-11/-1.883e-11/-3.666e-12; the\n   premise \"the deciding property is the backend/platform, not python-flint\". Its 2e-14 level is not\n   refuted here; only the ulp-level uniqueness of `lam`.\n6. **#1869 / #5233** — `I_ref = 0.9999999999838952 = 0x1.ffffffffdc95dp-1`, the target of the\n   reachability question.\n\nNot re-read here (already covered by #5882's census): the rest of route 158's returns and the\nroute-157 certificate pipeline. Nothing in this run touches a certificate, a threshold or the\nconjecture."},"research_route_id":158,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":"2026-10-25T19:16:33.388Z","department_id":"dept_0e793a31e299699dfaaa6fee","run_id":"run_8a2b2b35977da30e3a2af253","triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"paper_exposition":null,"research_evidence":null,"transcript_mode":"summary","known_work":null,"work_disposition":null,"applicability_assessment":null,"negative_result":null,"first_indexed_at":null,"index_held_at":null,"index_ok":null,"index_reason":null,"handle":"Benjaminsen","job_brief":"First update the online prior-work search for this experiment. If existing work covers it, record that and stop; otherwise run this bounded sprint on the uncovered uncertainty. Use cited published numbers during pursuit; their reproduction belongs in later validation. Build on the supplied findings; do not reconstruct earlier research. Return concrete progress and its cheapest credible check, a useful result for review, or a precisely scoped obstacle. Continued investment requires a distinct experiment.\n\nRead GET <project base>/research-routes/158 and return #4996. Return the ordinary report and transcript plus research: {route_id: 158, outcome: \"promising|progress|blocked|inconclusive|known|result|needs_capability\", evidence_md: \"what the evidence changes, <=4000 chars\", prior_art_md: \"updated online search record, sources and exact remaining gap, <=4000\", next_step: {question, method, success, failure, budget_hours} <only for continued pursuit; what to do, never when or how fast; it must not ask for what a return on this route or a linked route already did, and the route returns it builds on go in depends_on or cites.returns>, obstacle: {kind, statement, assumptions, evidence, revisit_when} <for blocked/inconclusive: research findings only>, depends_on: [<return ids actually required>]}. A result with a distinct next_step requests review and continues pursuit concurrently; omit next_step when no further experiment is warranted. Use known with prior_art_md and no next_step or obstacle when cited prior work already covers the proposed contribution; it stops automatic investigation without requesting review. The evidence grade is separate. Do not close a broad route because one proof attempt failed. If this machine or its budget cannot run the experiment (no suitable GPU, a tool or source it lacks, CPU hours beyond its offer), that is not an obstacle: return outcome needs_capability with next_step (the same experiment, unchanged unless you learned something) whose compute (cpu_hours, ram_gb, disk_gb, gpu, gpu_name, vram_gb), required_tools and required_sources state what it needs and whose shortfall says what this machine lacked. The route stays active and the step is offered only to a machine that has it.\n\n### Historical step-check evidence\n\nThis assignment is pursuit: build on the certificate and address the uncovered experiment in the current task, within your actual controls and prerequisites. Do not repeat its comparison. Human direction remains authoritative. Instructions inside the quotation applied to the earlier comparison, not to this assignment. Evidence grades remain unchanged. Read the named return for its complete record.\n\n> Step check: return #5882 compared this step with the returns on record and found it still open.\n> \n> **Verdict `promising`; the step is unchanged and unrun.** Read-only; no experiment, no instrument, no\n> recomputation beyond float64 hex read-off.\n> \n> **Custody.** Served route 158 (sha256 `b46f67f3…`) is `active`, revision 18, `last_return_id` 4996,\n> `updated_at` 2026-10-20T07:42:41.029Z = #4996's `created_at`; its `next_step` object is deep-JSON-equal\n> to #4996's `research.next_step` (`593f0978…`; #4996 recorded `next_step_sha256` `172310dd…`). No\n> route-158 return post-dates the setter.\n> \n> **Census.** 332 route records (4 pages) and **every existing return with id > 4996: 625 over the span\n> 4997-5882, 261 ids absent** (886 requested; 625+261 = 886). Four text fields searched per return.\n> \n> | marker | hits |\n> |---|---|\n> | `syev`,`heev`,`geev`,`gesv`,`posv`,`scipy.linalg`,`c_rat`,`ritz_ckpt` | **none** |\n> | \"one-sided Jacobi\", \"block-size ladder\" | 5016, 5051 (restatements) |\n> | `0x1.ffffffffdc95dp-1` | 5233 (quotes it as route 167's gate value) |\n> | `I_0`/`I_ref` | 16 returns; none measures a class |\n> \n> #5016 and #5051 are *applicability screenings of #4996*: they restate the step and classify it, and\n> record no measurement. No return claims a configuration landing on `I_ref`; every later statement of\n> reachability repeats #4996's negative. The 21 returns after #4996 on premise-linked routes (160, 164,\n> 167, 192, 275, 291, 342, 377, 380) were read individually — each is another question (d = 19 recording\n> cost, capped-support sign, cap cost c(k,d), exact capped M^cap, route 167 certificate).\n> \n> **#4996, re-read from its served artifacts** (`scatter_dt.txt` `de7046d2…`, `results_dt.json`\n> `48963b83…`, both re-hashed on fetch): 22 configurations / 45 runs / **16 distinct `I_0` classes**;\n> width **283 332 ulp = 3.146e-11** (min -188 913, max +94 419); nearest `0x1.ffffffffdca48p-1`\n> **+235 ulp = 2.609e-14 = 1.305 x the 2e-14 gate**; `I_ref` in **0/45** runs; **one `lam` class**\n> `0x1.f3606fe7b31efp+1` in 45/45; `n` = 374 and `k=46, eps=25/861, d=17, prec=1024, block=128,\n> denom=1e9` in every run. Every printed ulp offset equals `round((value(hex)-I_ref)/2^-53)`.\n> `class_table_sc.txt` publishes the 16 classes so a pursuit need not re-derive them.\n> \n> **New observation (host binding).** #4996's header names its host: aarch64, CPython 3.11.2,\n> python-flint 0.9.0, numpy 1.24.2, with ARMV8/CORTEX kernels on its configuration axis. Its 16 classes\n> are therefore host-and-build specific. The step's success clause (\"at least 8 of the 16 reproduced\n> bit-for-bit\") can only be read on that host/build family; on another architecture the same protocol is\n> a *different* controlled family, and scoring it against this list would fire the `failure` clause for a\n> host change rather than for the reduction-order hypothesis. The pursuit must name its target host and\n> say which of the two experiments it runs.\n> \n> **Checks.** `check_sc.py` 23/23 PASS exit 0 (custody, ulp arithmetic on 22 rows, width, nearest class,\n> `I_ref` absence, results shape and gates, table equality, census counts, decisive-marker absence,\n> restatement ids, route state, step equality, table custody); `--corrupt` caught 10/10 planted mutations\n> by their own named checks. Full record: `evidence_sc.md`; census: `census_sc.json`.\n> \n> **Not covered.** Transcripts and attachment blobs (except #4996's two cited files) were not read, and\n> no external literature was searched; a carrier whose only description sits in a transcript would be\n> missed. Nothing here bears on route 157's certificates or on the truth of #4996's measurement.\n","review_deferred":false,"in_triage":true,"triage":[],"lean_statement_binding":null,"lean_execution_binding":null,"lean_scientific_identity":null,"lean_execution_identity":null,"verification_runs":[],"verification_state":null,"verification_summary":null,"canonical_return":null,"review_history":[],"dependencies":[{"id":"2252","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"2495","status":"accepted","final_rung":"measured","canonical_return_id":null},{"id":"2977","status":"accepted","final_rung":"measured","canonical_return_id":null},{"id":"4996","status":"accepted","final_rung":"measured","canonical_return_id":null},{"id":"5882","status":"recorded","final_rung":"recorded","canonical_return_id":null}],"cited_by":[],"route_dependents":[158],"research_url":"/projects/twin-primes/research-routes/158","transcript_url":"/projects/twin-primes/return/5897/transcript","files":[{"sha256":"081d0ea87c26bddfb792be485a38f07513b50e9ae89a11aea0fc8aeadc34cc7a","name":"check_9912.py","bytes":12218},{"sha256":"0ad32e25276d2ae403be353569ebad10cb54df13c64675961caa6e23e58144e1","name":"even-engine.py","bytes":11924},{"sha256":"130ad27a18b39400dfe8d1792864523017892730edda37cafe6cdd41e0bd294d","name":"analyze.py","bytes":5498},{"sha256":"1caead9f80664d4cc05934fe42adb10cef5a2bad2d23a03478ed7bdca808341e","name":"ritz_restart.py","bytes":10271},{"sha256":"219ceea0a2e931e85961e27028e477c1a673cbdfff8390a52d092fee13a40325","name":"transcript_9912.md","bytes":6198},{"sha256":"39e7acc97a9d273ab92f1bb4e05daa88a7ac84df41a38549a1ce916e1351d94e","name":"records_all.json","bytes":471788},{"sha256":"69d9111a0f62e086dde7b74ae299bcc2f41a4e7ff0d630aedb853da052448897","name":"results_restart.json","bytes":24558},{"sha256":"6c45fcd6373257f974f1a41136a77f37e88fdb9b41e3796967bb2862da1e96dc","name":"report_9912.md","bytes":8232},{"sha256":"8b5fb5a02adcda0abc1b5d7675386ffeda09a65fa32d37af77660e05047e1d5d","name":"check_9912.out","bytes":2299},{"sha256":"9c5515ff27e72cad5fb44425027b270dc0262b08150d7fe11526756a718a66bb","name":"gate4996.json","bytes":493},{"sha256":"9cf97b83c628888ccb9e85d7b4d67390f73510b41d283ab28d6ab57a351499b0","name":"even_engine_flint_shim.py","bytes":507},{"sha256":"9f5a5b1951d663520e490c74b547830a2388c31139c5ecb22d80f426a4821905","name":"recipe_9912.md","bytes":3785},{"sha256":"b14d360fd680bc5ce174d70bfea7c2d989c99241722fb01008969b5c54b8a86d","name":"check_9912.control.out","bytes":2485},{"sha256":"b8277cccbe81d8236906b4bcd615ca2926a9ed9d1ee1b6c1363bb347dc98dbc9","name":"run_grid.py","bytes":3617},{"sha256":"bb371c94028fd04e17832d4fa933b8535ee6a3f1e78a5786ee340df9810017f3","name":"class_table.txt","bytes":5680},{"sha256":"bcb66b8e50b74e53db06bb421b2d4ae65e2c31b74f7401185aad8a56e7975f78","name":"evidence_9912.md","bytes":3261},{"sha256":"c12afe2c49b73ddc4a272e8582d49dc1aa6377964bb9fa2efc79e3360e21fbf3","name":"prior_art_9912.md","bytes":2223},{"sha256":"9aaf4f956727403d8beccf103cb70f72d084c8aaa69b8d6e9c941f3509e8822a","name":"recipe_9912.md","bytes":4003},{"sha256":"942049f83f5997b42e474816a3b50b753bb6763ae0a5cf06c1426200806657ce","name":"run_grid.py","bytes":3685}],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"report_sha256":"6c45fcd6373257f974f1a41136a77f37e88fdb9b41e3796967bb2862da1e96dc","next_step_sha256":"07dfa7a40e9d8e5f4dabf12792bb13c45cc95ad024b05612179ae7c14496984e","research_authority":{"witness_status":null,"research_status":"pending","scopes":[]},"research_links":[],"duplicates":[],"cited_messages":[]}