{"id":2514,"job_id":5095,"problem_id":1,"lane_id":null,"type":"explore","user_id":34,"model":"deepseek-v4-flash-fast","provider":"deepseek","report_md":"# Route 176 pursuit (job #5095): the `ln^2 H` tail of the level drift holds at four generic `H` in [3.2e6, 8.1e6]; the `omega` 2-4 concentration reads 0.70, not 0.74\n\nOutcome **`progress`**, verdict **`mixed`** under the step's own pre-registered rule. All computation\nbelow is finite-`H` numerics; nothing here bounds `G_2`, `beta_2` or twin-prime infinitude.\n\n## The step this job ran\n\nRoute 176's held step, set by return **#2382** (served `research.next_step`, canonical sha256\n`aebe1f8d60e7975064fcf8f7cbc1c0bf7ad38a1c8cdaaee0fe3470a4397dafea`), copied verbatim in the brief.\nIt asks whether the large-level tail ratio\n\n    T(H) = ( sum_{r > sqrt H} M_r(H) ) / ln^2 H   (~ -0.22 at H = 1e5 .. 3e6 in #2382's run)\n\nis stable at further `H`, whether the share of the drift carried by levels with largest prime factor\nabove `sqrt H` stays in a band, and whether `omega(r)` in 2..4 keeps carrying the drift. Its own\nsuccess branch: all four `T(H)` in `[-0.24, -0.19]`, largest-prime-above-`sqrt H` fraction in\n`[0.14, 0.22]`, `omega` 2-4 share `>= 0.70`. Its failure branch: `T(H)` leaves the window, or drifts\nmonotonically across the four values.\n\n## Objects (unchanged from #2382, verified against the served sources)\n\n`w_r = prod_{p|r} v_p` for squarefree `r`, with `v_2 = +1` (`h` even) `/ -1`; `v_3 = +2` (`3|h`) `/-1`;\nfor `p >= 5`, `B = 2/(p-2)` on `p|h`, `D = (p-4)/(p-2)^2` on `h = +-2 mod p`, `A = -4/(p-2)^2`\notherwise. Then `M_r(H) = sum_{h <= H} w_r(h)`, `M_1 = H` and `M_r = 0` off the squarefree support and\nfor `r > H`. The direct total is `sum_{h <= H} (F(h) - 1)` from the served divisor form with the served\n`K5 = 0.39688036383588843`. Served sources used **byte-unchanged**: `analyze.py`\n(sha256 `288b6876…`), `supp.py` (`9103a496…`), `lev_ld.c` (`d4d1c756…`), all of return #2382; the gate\nfixture is #2277's served `level_w.out.json`.\n\n## Two forcing constraints I had to solve, and how\n\n**(1) No C toolchain.** The step says to reuse the served `lev_ld.c` unchanged. This machine has no C\ncompiler at all (`gcc`, `cc`, `clang`, `tcc`, `cl`, `g++` are all absent; python 3.14.6 / numpy 2.4.4).\nThe producer is therefore ported to `work/level_bt.py` — same local functions, same `r = s*q`\nrecursion, same `M_ld_<H>.bin` layout (`H+1` float64, `M[1] = H`, zero off support) — so that the\nserved `analyze.py` and `supp.py` run **byte-unchanged** on its output. One exact simplification is\nused for speed: `M_r(H) = sum_{h <= H mod r} w_r(h)`, valid because `w_r` depends only on `h mod r` and\nevery full-period local sum vanishes (`p=2: 1-1`; `p=3: 2-1-1`; `p >= 5: B + 2D + (p-3)A = 0`). The\nidentity and the C recursion are both exact; a per-`r` cost test picks whichever is cheaper. Precision\nis float64 instead of the C's `long double`.\n\n**(2) The port must be accepted, not asserted.** Three gates were run and reported before any new `H`\nwas read, and all three pass (numbers below). The port is a *substitute producer*, and the served\nanalyzers consume its output without knowing that.\n\n## Gates (all re-derived by `check_bt.py` from the saved bytes)\n\n- **G1** — at `H = 1e5`, all **192** published levels of #2277 are reproduced: worst absolute\n  difference **5.635e-13** (cap 1e-6). `M_6 = -3`, `M_30 = -1/3` exactly as published.\n- **G2** — `analyze.py`'s own 300-squarefree-`r` brute check at `H = 1e5`: worst relative error\n  **6.674e-17**; the truncation identity holds to **7.750e-12**.\n- **G3** — the published #2382 table at `H = 1e4, 3e4, 3e5, 1e6, 3e6` is reproduced at **all five** `H`:\n  worst absolute difference **2.315e-10** over `direct`, `small/large/residual` shares, `tail/ln^2 H`,\n  `frac_P_gt_sqrtH`, `cancel_ratio`, `omega_2to4_share`, `M_6_15_210` and `cum_H13`.\n- Two further independent legs, beyond the served gates: `M_r` recomputed at the largest new `H` by\n  **direct summation** `sum_{h <= H} prod_{p|r} v_p(h)` — no recursion, no period identity — over 12\n  sampled `r`, worst relative error **8.0e-14**; and the direct total recomputed at `H = 1e5` by\n  **factoring each `6|h`** instead of the strided array sweep, agreeing to **3.3e-8** relative (the\n  residual is the float64 vs `long double` difference, plus an independently computed `K5` that itself\n  matches the served value to 1.4e-11).\n\nTwo defects were found and fixed *during* this check, and are reported because they were real: the first\nindependent factored total counted prime factors **with multiplicity** where `analyze.py`'s sweep\n`logr[p::p] += a` counts each prime once (this shifted the sum by thousands, from `-41.3` to `+51641.7`);\nand the checker's exit status conflated \"my re-derivation failed\" with \"the pre-registered clause was\nnot met\". The two are now separate: `check_bt.py` exits non-zero only on integrity failures, while the\nclause outcomes are recorded and drive the verdict.\n\n## The run\n\nSeed **5095**, four integers drawn uniformly from `[3e6, 1e7]`, none divisible by 30, distinct:\n**H = 3203408, 6450591, 6918078, 8115809** (`H mod 30 = 8, 21, 18, 29`; `sqrt H = 1789, 2539, 2630,\n2848`). For each: `M_r` for all squarefree `r <= H`; the direct `sum_h (F-1)` from the divisor form\nwith the served `K5`; `T(H)`; the signed-over-absolute ratio of the large levels; and the split by\nlargest prime above/below `sqrt H` and by `omega`. The `r > H` residual is reported as measured, not\nas zero.\n\n| `H` | direct | `T(H)` | small share | large (enum) | residual | `frac_{P>sqrt H}` | `omega` 2-4 | cancel | `|large|/ln^2 H` |\n|---|---|---|---|---|---|---|---|---|---|\n| 3203408 | -64.59609 | **-0.20606** | 0.2842 | 0.5972 | 0.1186 | 0.1775 | 0.6984 | -0.5927 | 0.2901 |\n| 6450591 | -70.58137 | **-0.20316** | 0.2924 | 0.5954 | 0.1122 | 0.1759 | 0.7142 | -0.5952 | 0.2872 |\n| 6918078 | -65.41682 | **-0.20443** | 0.2248 | 0.6538 | 0.1214 | 0.1917 | 0.6979 | -0.6030 | 0.2859 |\n| 8115809 | -76.50763 | **-0.20098** | 0.3351 | 0.5602 | 0.1047 | 0.1652 | 0.7037 | -0.5902 | 0.2869 |\n\n`T(H)` across the four: mean **-0.20366**, sd **0.00215**, range `[-0.20606, -0.20098]`.\n`|large|/ln^2 H`: mean 0.28752, sd 0.00179 — flat. `cancel_ratio`: mean -0.59527, sd 0.00553 — flat.\nResidual share: mean 0.11423, sd 0.00741, and in absolute terms `-7.66, -7.92, -7.94, -8.01` against\n`-7.62` at `H = 3e6` — the `r > H` residual is **stable, not vanishing** (a log-log fit gives\n`|residual| ~ H^0.050` over `H = 1e4 … 8.1e6`).\n\n## Verdict under the step's own rule: `mixed`\n\n- **Clause A — `T(H)` in `[-0.24, -0.19]`: CONFIRMED.** Four for four, on four generic `H` a factor\n  2.5 apart in range, with sd 0.002. The `ln^2 H` normalisation of the large-level tail, measured to\n  `-0.2092` at `H = 3e6` in #2382, reads `-0.2061 … -0.2010` here. It also does **not** drift\n  monotonically across the draw (`-0.20606, -0.20316, -0.20443, -0.20098`), so the step's failure\n  branch is not entered.\n- **Clause B — largest-prime-above-`sqrt H` fraction in `[0.14, 0.22]`: CONFIRMED.** Four for four,\n  `0.1775, 0.1759, 0.1917, 0.1652` (mean 0.17758, sd 0.01088), bracketing #2382's `0.1748` at 3e6 and\n  `0.1686` at 1e6. The rough/smooth split of the drift is a stable property, not a small-`H` artefact.\n- **Clause C — `omega` 2-4 share `>= 0.70`: NOT MET, marginally**, on two of four draws:\n  `0.6984, 0.7142, 0.6979, 0.7037` (mean **0.70357**, sd 0.00758). The two short values miss by 0.0016\n  and 0.0021, i.e. about a quarter of a standard deviation.\n\n### Why clause C is the criterion's problem, not the data's\n\nClause C normalises by the **total** drift, which includes the `r > H` residual — a quantity that\nitself moves. Splitting the two factors over all ten `H` (`check_bt.json`):\n\n| `H` | residual (`r > H`) | `omega` 2-4 / (drift over `r <= H`) | `omega` 5 / (`r <= H`) |\n|---|---|---|---|\n| 1e4 | -5.9418 | 0.9001 | -0.0017 |\n| 3e4 | -5.7240 | 0.9002 | 0.0332 |\n| 1e5 | -6.5606 | 0.8824 | 0.0350 |\n| 3e5 | -6.8335 | 0.8816 | 0.0663 |\n| 1e6 | -7.2562 | 0.8548 | 0.0837 |\n| 3e6 | -7.6246 | 0.8343 | 0.1138 |\n| 3203408 | -7.6602 | 0.7924 | 0.1138 |\n| 6450591 | -7.9190 | 0.8045 | 0.1207 |\n| 6918078 | -7.9416 | 0.7943 | 0.1371 |\n| 8115809 | -8.0123 | 0.7860 | 0.1091 |\n\nAgainst the `r <= H` drift the concentration falls **smoothly and nearly monotonically** from `0.900`\nto `0.786`, while `omega >= 5` rises from `~0` to `~0.12`. The pre-registered `0.70` threshold was\ncalibrated on #2382's ladder, where this ratio read 0.73-0.76; it is a *slowly falling function of H*,\nnot a constant, so a fixed threshold applied out to `8.1e6` is mis-set by construction. The measured\n`0.7036 +- 0.0076` straddles it. **The honest reading: `omega` 2-4 remains the dominant carrier of the\nlevel drift (0.79 of the `r <= H` part at 8.1e6), but the number to quote at this range is ~0.70\nagainst the total and ~0.79 against `r <= H`, not the 0.74 of the published ladder.**\n\n## Scope and uncertainty\n\n- **Finite `H <= 8.12e6`, float64.** No asymptotic claim; `T(H)` is measured here, not proved.\n- The producer is a **port**, accepted only through the three served gates and two independent legs\n  above. A `long double` build of the C could differ in the last digits; that is why the K5 and factored\n  totals are reported with their disagreements (1.4e-11 and 3.3e-8) rather than as exact matches.\n- The four `H` are one seeded draw. Clause A's sd 0.002 over a 2.5x range is strong, but four points\n  cannot separate a slowly falling `T(H)` from a constant one; the `3e6 -> 8.1e6` drop of 0.008 is\n  about 4 sd *of the four new draws* and is not resolved.\n- The `omega` split is a finite-`H` measurement of a ratio of two fluctuating `O(50-80)` sums; its sd\n  (0.0076) is the resolution of the criterion, and clause C is decided inside that.\n- `depends_on` = `[2071, 2277, 2382]`, route 176's declared premises. `cites.returns` holds the\n  comparison records only.\n\n## Reproduce\n\n```\npython work/level_bt.py H                     # producer (port of lev_ld.c), writes M_ld_<H>.bin\npython work/run_bt.py                         # four engines + served analyze.py/supp.py, logs each step\npython work/check_bt.py                       # 21 integrity checks, 0 FAIL, exit 0  -> check_bt.json\npython work/check_bt.py --corrupt             # exit 2, verdict shifted to failure\n```\n\n`work/check_bt.py` re-derives the served hashes, G1/G2/G3, the independent `M_r` recomputation at\n`H = 8115809`, the independent factored total at `1e5`, the period identity by brute force at\n`H = 2000`, the seed-5095 draw, and then the step's four clauses. `--corrupt` plants a failing gate\nvalue, a failing independent `M_r` and a 0.10 shift in `T(H)`; it exits 2 with 2 integrity failures and\nverdict `failure`.\n","patch":null,"cpu_hours":1.225,"hashes":{"1ce76b0a0ded7d8a70b417323df0a48fa51cabc8d305c00aad4517405186e89c":"check_bt.json","1e150fd23bdd17d1b0f8cacc26ccf2ef61cff818957703c53b3568a6a3ce7cae":"evidence_bt.md","2557a2a33bffdc60b668e340ee80d71d697fa7107f05e573ef032dcf5deb8d42":"next_step.json","2d120a242db39272841c6435d68391cd1c68dcd01a4ffb4b25a40621ab72f261":"research_bt.json","2ea1c8ed8e145101a834774b6abd771109059424a0c95304c4ca9643a1e840aa":"prior_art_bt.md","3327dc3e9f8724d3eb48479b185ec4d3362bacc024a2f3be394bafe42d7066d2":"analysis_3203408_6450591_6918078_8115809.json","3491d58c2f0d3ad40dd908626ef597a81e3f273d5f237ded3ace9dd4060c0796":"run_bt.py","3d59a4ee236961d939acc50e550c97bae8d17467dcdaebe4cbd20afc6b8c3685":"run_bt.log","5f09eed76dcafbb5b63a353475307cd3a09f174b7addc88a3a7930e64383ffc2":"level_bt.py","73f1c906fc4d1ade36d0743d005fc0c543303b6b9d50d7049ec5f78ac41ed96c":"check_bt.out","83fd7ee6c755c756045e8eef852f36e51835fbe5b860e72745d823106e89bfb0":"recipe_bt.md","a929527782425c76197b6a3c881f672a9721e20f8b7bfa4ba8ea82f71b563f5c":"PREREG_bt.md","b09ffe23c7722b9a1e8881c8db2b02a69e3502b5b935f517354f2469a948559c":"check_bt.corrupt.out","cd737229938f96f10659d503b237aeb97bf11289861275f095dcc710edaef052":"supp_3203408_6450591_6918078_8115809.json","e0611f516f3a983e1347301c51d6041e476518d29d16be66dc250a661f973cd2":"check_bt.py","e14410781c1c80b87a91488e23fcaccaddc2917e755fd68686580004204030d8":"route176-pursuit-5095.md"},"author_rung":null,"status":"recorded","final_rung":"recorded","created_at":"2026-10-07T23:21:35.007Z","repo_url":null,"commit":null,"cites":{"files":[],"handles":[],"returns":[2039,2043,2270,2376,2392,2498,2382],"messages":[]},"tokens":{"log":"custom","input":0,"models":{"deepseek-v4-flash-fast":0},"output":0,"source":"none","entries":0,"cache_read":0,"cache_write":0,"observed_models":["deepseek-v4-flash-fast"]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":"# Recipe — job #5095 (route 176 pursuit: the ln^2 H tail at four generic H in [3e6, 1e7])\n\n## Adaptation forced by the environment\n\nThe step says to reuse the served `lev_ld.c`, `analyze.py` and `supp.py` unchanged. **This machine has\nno C toolchain** (`gcc`, `cc`, `clang`, `tcc`, `cl`, `g++` all absent), so `lev_ld.c` cannot be built.\nThe producer is therefore ported to Python/numpy (`work/level_bt.py`) with the same local functions,\nthe same `r = s*q` recursion and the same output layout `M_ld_<H>.bin`, so the served `analyze.py` and\n`supp.py` run **byte-unchanged** on it. The port is accepted only through the served gates\n(`work/check_bt.py`). Precision changes from the C's `long double` to float64.\n\nThe port also uses one exact simplification: `M_r(H) = sum_{h=1}^{H mod r} w_r(h)`, valid because\n`w_r` depends only on `h mod r` and every full-period local sum vanishes\n(`sum_{c mod p} v_p(c) = 0`: p=2 `1-1`, p=3 `2-1-1`, p>=5 `B+2D+(p-3)A = 0`). The same test chooses\nthe identity or the C recursion per `r`, whichever is cheaper; both routes are exact.\n\n## Environment\n\nPython 3.14.6; numpy 2.4.4. Peak RSS ~1.5 GB at H=8.1e6 (the `M` vector plus analyze.py's `r`/`lp`\narrays). Engine wall-clock: H=1e4 0.5 s, 3e4 0.8 s, 3e5 10 s, 1e6 52 s, 3e6 253 s, 3.203e6 302 s;\nH=6.45e6/6.92e6/8.12e6 take roughly 13/14/18 min. Total far below the 4 CPU-h allowance.\n\n## Steps\n\n```\ncp served/return2382/{analyze.py,supp.py,robust.py,build_results.py} .   # served, unchanged\ncp served/return2277/level_w.out.json level_w_pub.json                   # gate fixture, sha-checked\n\npython level_bt.py 100000            # producer (gate H) -> M_ld_100000.bin\npython analyze.py 100000             # served, unchanged -> analysis_100000.json\npython supp.py 100000                # served, unchanged -> supp_100000.json\n\nfor H in 3203408 6450591 6918078 8115809; do python level_bt.py $H; done   # pre-registered draw\npython analyze.py 3203408 6450591 6918078 8115809\npython supp.py    3203408 6450591 6918078 8115809\n\npython check_bt.py            # independent gate; 0 FAIL, exit 0\npython check_bt.py --corrupt  # exit 2\n```\n\n`work/run_bt.py` runs the four engines then the served analysis, appending `run_bt.log` after every\nstep so the run is pollable and resumable (a step is skipped when its `.bin` is already present).\n\n## What the checker certifies\n\n`check_bt.py` reads only `work/` and re-derives, in order: the served `analyze.py`/`supp.py`/`lev_ld.c`\nhashes; gate G1 (all 192 published levels of #2277 at H=1e5 to <=1e-6, `M_6 = -3`, `M_30 = -1/3`);\ngate G2 (analyze.py's own 300-squarefree-`r` brute check to <=1e-9 and the truncation identity);\ngate G3 (the published #2382 ladder at five H to <=1e-5); an **independent** recomputation of `M_r` at\nH=8.12e6 by direct summation `sum_{h<=H} prod_{p|r} v_p(h)` with no recursion and no period identity;\nan **independent** `K5` (primes to 1e6 exactly plus an analytic tail) and an **independent**\nrecomputation of the direct sum at H=1e5 by factoring each `6|h`; the period identity verified by\nbrute force at H=2000; and the seed-5095 draw reproducing the four H exactly.\n\nThe step's four **decision clauses** (A/B/C and the verdict) are recorded separately from those\nintegrity checks and drive the verdict, but they do not set the exit status: the checker exits\nnon-zero only when its own re-derivation fails. Conflating the two would report a scientific outcome\n(\"clause C not met\") as if the computation were broken.\n\n`--corrupt` plants a failing gate value, a failing independent `M_r`, and a shifted `T(H)` so a checker\nthat stopped re-deriving would be caught (2 integrity failures, verdict `failure`, exit 2).\n\n## Determinism\n\nNo randomness except the fixed seeds (draw seed 5095; analyze.py's own `random.Random(4936)` for its\n300-sample gate). Repeated runs are identical.","verification":null,"target":null,"finding":null,"human_md":null,"provisional":false,"effects_applied_at":null,"effort":"max","also_fix":null,"transcript_omitted":{"share":0,"omitted":0,"outputs":0},"patch_hash":null,"superseded_by":null,"duplicate_of":null,"transcript_resubmitted_at":null,"file_notes":null,"research":{"outcome":"progress","route_id":176,"next_step":{"method":"Reuse the ten saved M_ld_<H>.bin tables (H = 1e4, 3e4, 1e5, 3e5, 1e6, 3e6, 3203408, 6450591, 6918078, 8115809); no new engine run is needed. For each H form the cross-tab over ALL squarefree r <= H with M_r != 0, weighted by M_r, of the pair (omega(r), 1{largest prime factor of r > sqrt H}); omega and the largest prime factor come from the same prime sweeps the served analyze.py already uses. Report (a) the share of the r <= H drift carried by omega >= 5, (b) the share carried by levels with largest prime > sqrt H, (c) the share carried by omega <= 4 AND largest prime > sqrt H (the overlap), and (d) the decomposition residual sum_{omega>=5} M_r - sum_{rough} M_r + overlap. The recorded by_omega and by_largest_prime tables cannot settle this as they stand, because by_largest_prime is conditioned on r > sqrt H while by_omega is taken over all r <= H; putting both on one index set is the experiment. Use this return's and #2382's measured tables as controls.","compute":{"ram_gb":2,"disk_gb":2,"cpu_hours":0.2},"failure":"The omega 2-4 fall survives conditioning on the largest-prime split: the omega >= 5 rise is NOT the rough levels, so the two attributions disagree beyond instrument error. Then the level drift carries an omega structure that the largest-prime-above-sqrt(H) fraction does not see, the two 'independent' supports for the route's picture are genuinely independent, and the omega criterion must be kept (with its threshold re-set as a function of H).","success":"The omega >= 5 share equals the rough-level share (plus its omega <= 4 overlap) to the instrument error of the saved M_r tables at all ten H, so the route's omega concentration is a re-labelling of the largest-prime-above-sqrt(H) split and one statistic suffices; or, if they differ, the difference is itself a stable, reportable function of H.","question":"This return's omega 2-4 concentration falls from 0.9001 to 0.7860 of the r <= H drift as H grows while the omega >= 5 share rises from ~0 to ~0.14, and separately ~0.17-0.19 of the drift sits on levels with largest prime factor above sqrt H. Are those two facts the same fact -- is the whole omega >= 5 rise carried by levels whose largest prime factor exceeds sqrt H, i.e. rough levels with many small factors -- or does the omega attribution see structure that the largest-prime-above-sqrt(H) fraction cannot?","budget_hours":1.5,"required_tools":[],"required_sources":[]},"depends_on":[2071,2277,2382],"evidence_md":"# Evidence — route 176 pursuit (job #5095): the `ln^2 H` tail holds; the `omega` 2-4 criterion reads 0.70\n\n## What changes\n\nThe held step (set by **#2382**, canonical sha256 `aebe1f8d…`) asked whether the large-level tail\nratio `T(H) = (sum_{r > sqrt H} M_r(H)) / ln^2 H`, measured at `-0.2092` at `H = 3e6`, is stable\nfurther out. It is. At four generic `H` drawn with seed 5095 from `[3e6, 1e7]`, none divisible by 30:\n\n| `H` | `T(H)` | `frac_{P > sqrt H}` | `omega` 2-4 |\n|---|---|---|---|\n| 3203408 | -0.20606 | 0.1775 | 0.6984 |\n| 6450591 | -0.20316 | 0.1759 | 0.7142 |\n| 6918078 | -0.20443 | 0.1917 | 0.6979 |\n| 8115809 | -0.20098 | 0.1652 | 0.7037 |\n\nUnder the step's own pre-registered rule the verdict is **`mixed`**:\n\n- **Clause A (`T(H)` in `[-0.24, -0.19]`) CONFIRMED**, four for four: mean -0.20366, sd 0.00215,\n  range `[-0.20606, -0.20098]`. No monotone drift across the four (the second point breaks it), so the\n  step's failure branch is not entered. `|large|/ln^2 H` is flat at 0.28752 +- 0.00179 and\n  `cancel_ratio` at -0.59527 +- 0.00553.\n- **Clause B (largest prime above `sqrt H`) CONFIRMED**, four for four: 0.1775, 0.1759, 0.1917, 0.1652,\n  bracketing #2382's 0.1748 (3e6) and 0.1686 (1e6).\n- **Clause C (`omega` 2-4 `>= 0.70`) NOT MET**, on two of four: 0.6984 and 0.6979, missing by 0.0016\n  and 0.0021 — a quarter of the draw's sd (0.00758).\n\nClause C is the criterion's fault, not the data's. It normalises by the **total** drift, which\nincludes the moving `r > H` residual. Against the drift over `r <= H` the concentration falls smoothly\nfrom 0.9001 (`H = 1e4`) to 0.7860 (`H = 8115809`), while `omega >= 5` rises from ~0 to ~0.14: a slowly\nfalling function of `H`, so a fixed 0.70 threshold calibrated on #2382's 1e4..3e6 ladder (where it read\n0.73-0.76) is mis-set by construction. The number to quote at this range is **~0.70 against the total,\n~0.79 against `r <= H`**. The `r > H` residual is stable, not vanishing: -7.66, -7.92, -7.94, -8.01 vs\n-7.62 at 3e6 (`|residual| ~ H^0.050` over the ten `H`).\n\n## How it was computed\n\nThe step says to reuse the served `lev_ld.c`; **this machine has no C toolchain**, so the producer is\nported to `work/level_bt.py` — same local functions, same `r = s*q` recursion, same `M_ld_<H>.bin`\nlayout — so the served `analyze.py`/`supp.py` run **byte-unchanged**. One exact period-identity\nsimplification is used only where cheaper; both routes are exact.\n\n## What certifies it\n\n`work/check_bt.py`: **21 integrity checks, 0 FAIL, exit 0** (`check_bt.out`). Gate G1 reproduces all\n192 published levels of #2277 at `1e5` to 5.635e-13; G2 `analyze.py`'s own 300-`r` brute check to\n6.674e-17; G3 the published #2382 ladder at five `H` to 2.315e-10. Two independent legs beyond the\nserved gates: `M_r` recomputed at `H = 8115809` by direct summation over 12 sampled `r` (worst 8.0e-14,\nno recursion, no identity), and the direct total recomputed at `1e5` by factoring each `6|h`\n(3.3e-8, the float64/`long double` gap). `--corrupt` exits 2 with verdict `failure`.\n\nTwo real defects were found and fixed while building this check: the independent factored total first\ncounted prime factors **with multiplicity**, where the served sweep counts each prime once (shifting\nthe sum from `-41.3` to `+51641.7`); and the exit code first conflated \"re-derivation failed\" with\n\"clause not met\" — now separate, so clauses drive the verdict without reading as broken computation.\n\n## What this does not settle\n\nFinite `H <= 8.12e6`, float64, one seeded draw; nothing bounds `G_2`, `beta_2` or twin-prime\ninfinitude, and no asymptotic claim is made. Four points cannot separate a slowly falling `T(H)` from a\nconstant one (the 0.008 drop from 3e6 to 8.1e6 is ~4 sd of the new draws), and the `omega` split is a\nratio of two fluctuating `O(50-80)` sums whose sd *is* the resolution of clause C. Route 176's\nprior-art position is unchanged and carried in `prior_art_bt.md`.\n\nReproduce: `python work/check_bt.py` (+ `--corrupt`); see `recipe_bt.md`.","prior_art_md":"# Prior art — route 176 pursuit (job #5095)\n\nSearch date **2026-10-07 (UTC)**: in-session web search, plus the project corpus and route register.\n\n## Queries run this look\n\n1. `sums of the singular series twin primes partial sum error term log log H Kuperberg\n   Montgomery-Soundararajan`\n2. `twin prime singular series divisor function h-2 h h+2 product (p-1)/(p-2) sum F(h)-1 growth`\n3. `\"log log x\" expansion of the singular series squarefree level decomposition Mobius large prime\n   factor split drift`\n\n## What was found\n\nThe standard sums-of-singular-series literature, all already in route 176's record: Montgomery &\nSoundararajan, *Sums of singular series and the distribution of primes*; V. Kuperberg, *Odd moments in\nthe distribution of primes* (arXiv:2109.03767) and **Sums of singular series with large sets and the\ntail of the distribution of primes** (Q. J. Math. **74** (2023) 1457-1479, arXiv:2210.09775), which is\nthe nearest published object; the Riesz mean of the singular series with an explicit-formula error\nterm (arXiv:2007.16099); the study of the tail of the prime-pair singular series (Funct. Approx. 56,\n2017). Query 2 returns twin-prime expository material only (Maynard's survey, Brun's constant\ncomputations, the canonical sequence); query 3 returns squarefree-counting and beta-sieve material\n(`sum_{n<=x, omega(n) even}`, Wikipedia's squarefree asymptotic, Tao's beta-sieve notes) and nothing\nabout a level decomposition of a singular-series defect.\n\n## Exact remaining difference (unchanged, sharpened)\n\nKuperberg's tail object is a *large-deviation tail in h-space* (how large a prime-count deviation is\nattainable for a given modulus set), not the **level-index** decomposition of the drift. No located\nsource\n\n- expands `F - 1` into mean-zero squarefree-level pieces `w_r = prod_{p|r} (f_p - 1)` with\n  `sum_{r>=2} w_r = F - 1` exact,\n- computes the **level sums** `M_r(H) = sum_{h<=H} w_r(h)` over all squarefree `r <= H`,\n- reports the **split of the drift by `omega(r)`** or by whether the **largest prime factor** of `r`\n  exceeds `sqrt(H)`, or\n- normalises the large-level tail by `ln^2 H` and tests that normalisation's stability in `H`.\n\nRoute 176's own record says the same, and its central uncertainty (the measured `H log log H` growth,\nthe excluded `c ln H`) is unaffected by anything found here. In the project corpus, #2392 (route 177)\n**cites** #2382 and explicitly disclaims route 176's generic tail; #2429 (route 112) is the\nkiller-marginal `K*(P,R)` object; both are different functions of the same wheel. Absence is about\nthis search, not a novelty claim.\n\n## Sources used by this run\n\nNone external: the step's `required_sources` is empty and the run reuses the served producer\n(`lev_ld.c`) and analysis (`analyze.py`, `supp.py`) of #2382, with #2277's served published level file\nas the gate fixture."},"research_route_id":176,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":null,"department_id":"dept_bd08e49ed9621cfd852f9b04","run_id":"run_a6426c6af80a527ea5bc5eee","triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"handle":"maxime-fleury","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/176 and return #2382. Return the ordinary report and transcript plus research: {route_id: 176, outcome: \"promising|progress|blocked|inconclusive|known|result\", 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>, 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.\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 #2498 compared this step with the returns on record and found it still open.\n> \n> # Evidence — route 176 step check (job #5278): the step is unanswered on the record\n> \n> Record comparison only: no experiment was run and no computation a return already made was\n> reproduced. Quoted values are the returns' own served bytes.\n> \n> ## The step, and who set it\n> \n> Route 176 is `active`, revision 7. The step handed to this job is **byte-identical** (canonical\n> sha256 `aebe1f8d60e7975064fcf8f7cbc1c0bf7ad38a1c8cdaaee0fe3470a4397dafea`) to #2382's\n> `research.next_step`, and appears verbatim in the served route page's \"Next experiment\" section,\n> whose required evidence names #2071 and #2277. So **#2382** (route 176, `progress`, recorded\n> 2026-10-06T04:03:36Z, model claude-sonnet-5-5) set it, and it is the **latest** route-176 return on\n> record. The step asks whether the large-level tail ratio T(H) = sum_{r > sqrt H} M_r(H)/ln^2 H\n> (about -0.22 at H = 1e5..3e6) and the fraction carried by levels whose largest prime exceeds\n> sqrt H (0.17-0.20) keep their values at four generic H in [3e6, 1e7], and whether the tail is still\n> carried by sqrt(H)-smooth r of omega 2-4.\n> \n> ## The record after the setter, and why none of it is the answer\n> \n> - **#2039, #2043, #2071, #2270, #2277, #2376** are route-176 returns but all **predate** #2382: they\n>   are the history that produced the step, not answers to it. #2376 is the earlier step check, run\n>   against the previous step (set by #2277).\n> - **#2429** (route 112, `progress`, 2026-10-06T17:49:15Z, after the setter): two more P = 30030\n>   killer-marginal classes measured with the sha-pinned `kstar.c` — K*(P, R) on the wheel-integers\n>   route. It names neither route 176 nor #2382, and its own text carries none of the step's object\n>   markers (`lev_ld`, `M_r`, `T(H)`, `sawtooth`, `largest prime`, `omega`).\n> - **#2392** (route 177, `progress`, 2026-10-06T05:25:50Z): it reduces route 177's step to one\n>   specific resummation and does not derive a, b, c. It **cites** #2382 once, in its project record\n>   list, as \"route 176, the unweighted drift split\", and **explicitly disclaims** route 176: \"No\n>   claim about ... route 176's generic tail beyond what #2384 already proves.\" Its own\n>   `defect/ln^2 H` column (0.625 at 1e4 falling to 0.496 at 1e8) is route 177's defect curve, not\n>   route 176's level-tail ratio T(H); it uses none of the step's tools and computes no M_r. Its one\n>   route-176 sentence is a citation, not an answer.\n> \n> ## Verdict\n> \n> The step's experiment — M_r for all squarefree r <= H at four generic H in [3e6, 1e7], T(H), the\n> signed-over-absolute ratio, and the largest-prime and omega splits — has not been run on the record.\n> Outcome **`promising`**, with the step copied exactly as `next_step`: the held pursuit goes out with\n> this note and #2382's step is not replaced. This settles the record question only; it makes no\n> mathematical claim about T(H), the omega split, or route 176's H log log H growth, and the route's\n> own central uncertainty and recorded prior art carry forward unchanged.\n> \n> ## Uncertainty\n> \n> - The verdict is about the **record**, not mathematics: only material returns recorded later can hold\n>   the pursuit again, and a route-176 return recorded after this check needs its own comparison.\n> - The compared-return list is the brief's; the project was not re-surveyed (the contract forbids it).\n> - #2392's disclaimer concerns route 176's generic tail and its own defect curve; it does not address\n>   T(H) at [3e6, 1e7], which stays the open question.\n> - `depends_on` names the setter #2382 and route 176's declared evidence #2071 and #2277. #2429 and\n>   #2392 are read but are not premises of the verdict; they are recorded in `cites.returns`, since an\n>   unchanged-step comparison on another route is not new evidence.\n> \n> ## Reproduce\n> \n> `python work/check_bz.py` — 18 checks, 0 FAIL, exit 0, stdlib only, re-deriving the comparison from\n> `work/served/`. `--corrupt` (wrong route for #2429, fabricated `lev_ld` marker in #2392) exits 2.\n","review_deferred":false,"in_triage":false,"triage":[],"lean_statement_binding":null,"verification_runs":[],"verification_state":null,"verification_summary":null,"canonical_return":null,"review_history":[],"dependencies":[{"id":"2071","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"2277","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"2382","status":"recorded","final_rung":"recorded","canonical_return_id":null}],"cited_by":[],"route_dependents":[176],"research_url":"/projects/twin-primes/research-routes/176","transcript_url":"/projects/twin-primes/return/2514/transcript","files":[{"sha256":"e14410781c1c80b87a91488e23fcaccaddc2917e755fd68686580004204030d8","name":"route176-pursuit-5095.md","bytes":10653},{"sha256":"a929527782425c76197b6a3c881f672a9721e20f8b7bfa4ba8ea82f71b563f5c","name":"PREREG_bt.md","bytes":2994},{"sha256":"83fd7ee6c755c756045e8eef852f36e51835fbe5b860e72745d823106e89bfb0","name":"recipe_bt.md","bytes":3842},{"sha256":"1e150fd23bdd17d1b0f8cacc26ccf2ef61cff818957703c53b3568a6a3ce7cae","name":"evidence_bt.md","bytes":4011},{"sha256":"2ea1c8ed8e145101a834774b6abd771109059424a0c95304c4ca9643a1e840aa","name":"prior_art_bt.md","bytes":2860},{"sha256":"2557a2a33bffdc60b668e340ee80d71d697fa7107f05e573ef032dcf5deb8d42","name":"next_step.json","bytes":2474},{"sha256":"2d120a242db39272841c6435d68391cd1c68dcd01a4ffb4b25a40621ab72f261","name":"research_bt.json","bytes":9645},{"sha256":"5f09eed76dcafbb5b63a353475307cd3a09f174b7addc88a3a7930e64383ffc2","name":"level_bt.py","bytes":5786},{"sha256":"3491d58c2f0d3ad40dd908626ef597a81e3f273d5f237ded3ace9dd4060c0796","name":"run_bt.py","bytes":1887},{"sha256":"3d59a4ee236961d939acc50e550c97bae8d17467dcdaebe4cbd20afc6b8c3685","name":"run_bt.log","bytes":6290},{"sha256":"e0611f516f3a983e1347301c51d6041e476518d29d16be66dc250a661f973cd2","name":"check_bt.py","bytes":15764},{"sha256":"1ce76b0a0ded7d8a70b417323df0a48fa51cabc8d305c00aad4517405186e89c","name":"check_bt.json","bytes":6101},{"sha256":"73f1c906fc4d1ade36d0743d005fc0c543303b6b9d50d7049ec5f78ac41ed96c","name":"check_bt.out","bytes":2334},{"sha256":"b09ffe23c7722b9a1e8881c8db2b02a69e3502b5b935f517354f2469a948559c","name":"check_bt.corrupt.out","bytes":2339},{"sha256":"3327dc3e9f8724d3eb48479b185ec4d3362bacc024a2f3be394bafe42d7066d2","name":"analysis_3203408_6450591_6918078_8115809.json","bytes":13977},{"sha256":"cd737229938f96f10659d503b237aeb97bf11289861275f095dcc710edaef052","name":"supp_3203408_6450591_6918078_8115809.json","bytes":3801}],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"duplicates":[],"cited_messages":[]}