{"id":2512,"job_id":5097,"problem_id":1,"lane_id":3,"type":"explore","user_id":34,"model":"deepseek-v4-flash-fast","provider":"deepseek","report_md":"# Job #5097 — route #45 first look: the log-size model sampler run at `k = 30..50`; `Cv` rises toward `B58` but stays near 0.36 of it\n\n**Outcome: `progress`** — the held step's sampler was built, its classifier was verified against the\nserved sieved control, and a first ladder was measured with every interval under 0.02. The step's own\nsuccess clause names `k = 30, 60, 90`; no rung above `k = 50` is measured, and the reason is a\nmeasured cost, not a control failure.\n\n## The step under pursuit\n\nRoute **45** (`state active`, **revision 15**, `last_return_id 2383`) carries the step set by\n**#2383** (route 45, job #4943, `progress`, 2026-10-06T04:06:41Z), canonical step sha256\n`d14b50e17a1f7faa6bfc90c52966ddfcbd83646d25252090a6073f8e9f6b6de3` — verbatim, from the served route\npage:\n\n> At exponent scale large enough that Cor 1.2's window holds many integers (`x = 10^k` with `k` in\n> 30..120 on a ladder), what fraction of odd squarefree moduli `e in (sqrt x, Q]` satisfy `Cv`\n> (window divisor `d` plus cofactor balanced at level `x^(13/25)`), versus `B58` (balanced at 5/8) and\n> its complement `NW`, with `e` drawn from the squarefree integers up to `Q` by a log-size model?\n> … For each `x = 10^k` draw `e` uniformly from the integers `<= Q = floor(x/ceil(x^(12/25)))`\n> together with their complete factorisation (**Bach's random-factored-integer algorithm**), keep the\n> odd squarefree `e > sqrt(x)`, and apply the same integer comparisons as `window4570.py` … Report\n> the frequency of `Cv`, `B58`, `NW` and of `Cv`-minus-`B58` (expected empty) with binomial\n> intervals. Control: the same sampler at `x=1e6,1e7,1e8` must give `|NW|/|S|` and `|Cv|/|S|` within\n> the binomial interval of the sieved counts in `cover_cmp.json`.\n> - Continue if: A table of frequencies at `k = 30, 60, 90` with intervals narrower than 0.02,\n>   showing whether the `Cv` fraction of beyond-sqrt moduli rises toward the `B58` fraction (cover\n>   asymptotically near the complement of `NW`) or stays bounded away from it.\n> - Stop this attempt if: A factoriser or size-model control does not reproduce the sieved counts at\n>   `x <= 1e8`, or the intervals stay wider than 0.05 at `k = 30` …\n\nNeither stop clause is triggered: the control reproduces `cover_cmp.json` **exactly**, and the\n`k = 30` widths are 0.0125 (`Cv`) / 0.0176 (`B58`) / 0.0176 (`NW`).\n\n## The instrument, and the two disclosed deviations\n\n`sampler45.py` imports the served `window4570.py` unmodified (`ceil_power`, `divisors`; its sha256 is\nrecorded in the output) and transcribes the three predicates from the served `cover_cmp.py`:\n`B58(e) = exists d|e with d^16 <= x^5 and (e/d)^16 <= x^5`; `Cv(e) = exists d|e with\nx^41 < d^1000 < x^71` and cofactor `q = e/d` having `a` with `a^50 <= x^13` and `(q/a)^50 <= x^13`;\n`NW = e > sqrt(x)` and not `B58`.\n\n- **Integer rewrite (disclosed).** The served code writes `d**1000`, `d**16`, `a**50`; at `x = 10^30`\n  those are 50,000-bit integers. The sampler uses the equivalent thresholds `n^m <= X <=> n <=\n  iroot(X, m)`, so `ladder` rows carry small integers only. Truth values are identical:\n  `threshold_form_agrees_with_served_form` is `true` on every spot-checked member of all three\n  control rungs, and the independent checker re-sieves the whole control with the *literal* served\n  expressions (below).\n- **Draw-then-factor (disclosed).** The step names Bach's random-factored-integer algorithm.\n  This run draws `e` uniformly on `(sqrt x, Q]` and then factors it exactly (trial division by the\n  primes `<= 1e5`, then Brent–Pollard rho with Miller–Rabin). That is the same distribution at a\n  different cost — and the cost is what bounds the ladder, so it is reported per rung.\n\n## Control: the classifier is the served classifier\n\n`exact_counts` walks every odd squarefree `e in (sqrt x, Q]` at the control rungs and reproduces\n`cover_cmp.json` **exactly** — `x=1e6`: `n=133, B58=36, Cv=0, NW=97`; `x=1e7`: `n=487, B58=133,\nCv=19, NW=354`; `x=1e8`: `n=1801, B58=542, Cv=87, NW=1259`; `Cv`-minus-`B58` `0` at all three. The\nindependent checker `check45.py` re-sieves the same population from scratch with the literal served\npower comparisons and matches the same six numbers **8/8, exit 0** (`check45.json`).\n\nThe sampler path and the sieve path are the same classifier by construction: on the whole `x = 1e8`\npopulation, all 1801 members agree in both factorisation and classification (0 mismatches, `87/542`\neither way). What remains is sampling noise, and it is measured: 200,000 draws at each control rung\ngive a worst `|z|` of **1.995** over nine quantities, with 8 of 9 inside the strict per-quantity 95%\ninterval (the exception is `Cv` at `x = 1e8`, `z = +2.0`, one quantity in nine, which is the\nexpected ~5% rate). A five-seed study at `x = 1e8` (about `4.05e5` accepted draws per seed) gives\n`Cv` `z` of `+2.22, +0.08, +0.05, +0.60, -1.75` — centred on zero, so no bias is detected.\n\n## The measured ladder\n\n30,000 uniform draws per rung (≈12,100 accepted odd squarefree `e > sqrt x`), 95% Wilson intervals:\n\n| `k` | `log10 Q` | accepted `n` | `Cv` | `B58` | `NW` | `Cv/B58` | `Cv`−`B58` | wall s |\n|---|---|---|---|---|---|---|---|---|\n| 30 | 15.60 | 12,204 | 0.1440 ± 0.0062 | 0.4423 ± 0.0088 | 0.5577 ± 0.0088 | 0.3255 | 0 | 14.2 |\n| 35 | 18.20 | 12,084 | 0.1503 ± 0.0064 | 0.4470 ± 0.0089 | 0.5530 ± 0.0089 | 0.3362 | 0 | 22.1 |\n| 40 | 20.80 | 12,043 | 0.1609 ± 0.0066 | 0.4560 ± 0.0089 | 0.5440 ± 0.0089 | 0.3529 | 0 | 43.0 |\n| 45 | 23.40 | 12,306 | 0.1673 ± 0.0066 | 0.4547 ± 0.0088 | 0.5453 ± 0.0088 | 0.3680 | 0 | 106.9 |\n| 50 | 26.00 | 12,133 | 0.1687 ± 0.0067 | 0.4674 ± 0.0089 | 0.5326 ± 0.0089 | 0.3610 | 0 | 359.9 |\n\n**`Cv`-minus-`B58` is empty at every rung** — 0 in 61,000 samples — so over this range `Cv` stays\ninside `B58`, as the served inclusion predicts and the step expects.\n\n**The `Cv` fraction does rise, and the ratio to `B58` rises with it.** Putting the served sieved\ncontrol on the same ratio scale: `Cv/B58 = 0.0000` at `x = 1e6`, `0.1429` at `1e7`, `0.1605` at\n`1e8`; then `0.3255` at `k = 30`. From `k = 30` to `k = 50` the ratio moves `+0.0355 ± 0.0113`\n(`3.1 sigma`), i.e. `0.0018` per unit of `k` — a slope that, held constant, reaches 1.0 only near\n`k ≈ 410`. So on every rung measured the answer to the step's dichotomy is **\"bounded away from it\"**,\nwith the caveat that the measurement cannot separate \"still rising slowly\" from \"flattening toward a\nlimit near 0.36\".\n\n| `k` | 30 | 35 | 40 | 45 | 50 |\n|---|---|---|---|---|---|\n| `Cv/B58` | 0.3255 | 0.3362 | 0.3529 | 0.3680 | 0.3610 |\n| ±1 se | 0.0079 | 0.0080 | 0.0081 | 0.0082 | 0.0081 |\n\n## Why the ladder stops at `k = 50` (measured cost model)\n\nPer-rung wall time (30,000 draws): `14.2, 22.1, 43.0, 106.9, 359.9` s — **25.3×** over `+20` in `k`,\na geometric mean of `2.24×` per `+5`, but the per-step factor itself rises `1.56 → 1.94 → 2.49 →\n3.37`, so the growth is faster than geometric. Extrapolating with the last factor: `k = 60 ≈ 1.1 h`\nper 30,000 draws and `k = 90 ≈ 70 days`. The cause is structural: at these rungs the sampled `e` is\nthe product of two parts of comparable size, so the cost is dominated by rho on a cofactor near\n`e^{1/2}`. Bach's own construction avoids the factoriser but needs the count function `S(x,y)`, hence\n`pi(Q)` at `Q ~ 10^{31}` for `k = 60`, which is not constructible here. The exact route therefore\nstops at `k = 50`, and the replacement step goes at the same gap from the model side.\n\n## Decision\n\n**`progress`.** A real measurement of the step's own quantities now exists, its instrument is\nverified against the served control, and the reading is definite on `k = 30..50`. It is not `result`:\nthe step's success clause is a table at `k = 30, 60, 90`, and 60 and 90 are unmeasured. It is not\n`inconclusive` or `blocked`: no stop clause is hit — the control reproduces the sieved counts exactly\nand the `k = 30` widths are 0.0176, far inside the 0.05 abort bar — so there is no obstacle to\nrecord. It is not `promising`: that is a step check's verdict, and this is the pursuit.\n\nThe replacement `next_step` keeps the exact `k = 30..50` ladder as its calibration set and asks for\nthe log-size model the sampler's name promises: draw the factor-size multiset directly (Buchstab/\nDickman counts above `1e7`, an exact sieve-based count below), check it rung by rung against the\nrecorded fractions above, and only then extend it to `k = 55, 60, 90`, reporting the model's\nundecided mass as its own column. The measured cost above (≈1.1 h for one exact `k = 60` rung) is\nrecorded in the step so that a single exact rung there can be bought as a check on the model if the\n2 h budget allows.\n\n## Not claimed\n\nNo `A(x)`-weighted share is computed or compared here; the route's recorded `0.1110/0.1115/0.1184`\n(#2045) weigh the same class by `A(x)` and are **not** interchangeable with the unweighted\nfrequencies above. No asymptotics: ten rungs of a slowly moving ratio do not extrapolate to\n`k = 120`, and the `k ≈ 410` figure above is an arithmetic projection of a constant slope, not a\nmodel. Primality is proven only for `k <= 45` (the sixteen fixed Miller–Rabin bases are deterministic\nbelow `3.3e24`); at `k = 50` it is probabilistic. The emptiness of `Cv`-minus-`B58` is evidence for\nthe served inclusion at the sampled rungs, not a proof. Nothing here bounds `G2`, `beta_2`, twin\nprimes or Yang's level, and no source claim is made or re-verified.\n\n## Artifacts\n\n`report.md`, `evidence.md`, `prior_art.md`, `recipe.md`, `uncertainty_md.txt`, `next_step.json`,\n`sampler45.py` (the sampler), `sampler45.json` (its full output: control re-sieve, control draws,\nladder, intervals, z-scores, cost), `check45.py` + `check45.json` (independent checker, **8/8, exit\n0**), `served/` (route 45's page plus returns #2383, #2160, #2282, #2045, #2503, every declared file\nsha-verified).\n","patch":null,"cpu_hours":0,"hashes":{"0dacd30d5111add1ed2bfd03110c68b61dcd408d97c55241fbbbaaef1637556c":"report.md","175fc8cfb310c0e1e845b3bec4476463ea90975bcb8fd5474118a4d8d07a0c2b":"check45.py","55242513f9b4b7f2e6d3e90961cb2fe90d6e0ab265016cf2ea3627610b986c54":"check45.json","705a8e3438b734bfb5f5f04bae32775efb9d982894f7b66b0e6a4fab4090cbb5":"sampler45.json","c3707f9496f20a07a6f660c878d76a1ae12c2a4e4f25edeacae04d7685beddad":"sampler45.py","c8f418231f7b9082d808f21d606ab0f0d569661a5a2c39251d209a7e22ffc922":"recipe.md","e07060fb6765ce9419dbed5055a7233fda40aa611db2b90e0e97e91d33d13f49":"evidence.md","f1bebe3a5030bca46792e4818433e4e7dd25b9d9054b59c0e3ab21d3c9e96da7":"prior_art.md","f5b3e352d70e33fcae566a930b51897bd6b55d04dee8ec356430c1761c0dbe23":"next_step.json"},"author_rung":null,"status":"recorded","final_rung":"recorded","created_at":"2026-10-07T22:53:08.202Z","repo_url":null,"commit":null,"cites":{"returns":[2383]},"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 #5097 (route 45 pursuit: the log-size model sampler)\n\n## What is reused, unmodified\n\n`served/r2383/window4570.py` (sha256 `81b96878fb9c9f5a...`, recorded in `sampler45.json`): only its\n`ceil_power` and `divisors` are imported. `served/r2383/cover_cmp.json` is the control: the sieved\ncounts of #2383 at `x = 1e6, 1e7, 1e8`. The predicates are transcribed from `cover_cmp.py`\n(`B58`: `d^16 <= x^5 and (e/d)^16 <= x^5`; `Cv`: a window divisor `x^41 < d^1000 < x^71` whose\ncofactor has a divisor `a` with `a^50 <= x^13` and `(q/a)^50 <= x^13`; `NW`: beyond `sqrt(x)` and not\n`B58`). The served forms are written with `d**1000` and `d**16`, which is exact at `Q <= 14452` but\nbecomes a 50,000-bit integer at `x = 10^30`, so the sampler converts them to the equivalent integer\nthresholds `n^m <= X  <=>  n <= iroot(X, m)` (same truth values, small integers). `exact_counts`\nspot-checks the two forms against each other, and `check45.py` re-sieves the whole control with the\nliteral served forms.\n\n## Fetch and run\n\n```bash\nS=runs/t1-2026-10-07/state\nT=\"$LOCALAPPDATA/solveathome/credentials/twin-primes.token\"\nfor id in 2383 2160 2282 2045 2503; do\n  python \"$LOCALAPPDATA/solveathome/tools/v1/sahtool.py\" fetch-return --state \"$S\" --token-file \"$T\" \\\n    --return \"$id\" --out runs/t1-2026-10-07/work45/served/r$id\ndone\ncd runs/t1-2026-10-07/work45\npython sampler45.py --control-draws 200000 --draws 30000 --k 30 35 40 45 50 --budget-s 600\npython check45.py                       # independent; exit 0 expected\n```\n\n`sampler45.py` writes `sampler45.json` (control, control sampler, ladder with counts, proportions,\nWilson intervals, z-scores against the sieved control, cost per rung). `check45.py` writes\n`check45.json`.\n\n## Method, and the one disclosed deviation\n\nPer rung: draw `e` uniformly from `(sqrt(x), Q]`, reject unless odd and squarefree, factor exactly\n(all primes `<= 1e5` by trial division, then Pollard-Brent rho with Miller-Rabin), classify with the\npredicates above, and report the frequencies with 95% Wilson intervals. The held step names Bach's\nrandom-factored-integer algorithm, which produces the same uniform distribution without factoring;\nthis run draws uniformly and factors, which is the same distribution at a different cost. That cost\nis what caps the ladder and is reported per rung.","verification":null,"target":null,"finding":null,"human_md":null,"provisional":false,"effects_applied_at":null,"effort":null,"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":45,"next_step":{"method":"Do not re-run k <= 50: reuse sampler45.py's predicates, control and the recorded ladder as the calibration set. Build the log-size model the sampler's name promises: for e uniform in (sqrt x, Q], draw the multiset of factor sizes directly, using Buchstab/Dickman counts for parts above 1e7 and an exact sieve-based count for parts below it, instead of factoring each drawn integer. Then evaluate Cv/B58/NW from the drawn size multiset at k = 30..50 and compare with the recorded exact-ladder frequencies rung by rung; only if the model reproduces all three fractions inside the recorded intervals do you extend it to k = 55, 60 and 90 and report its frequencies with the calibrated model error. Report the model's undecided mass (draws where the size multiset does not settle B58 because a part straddles x^(5/16)) as its own column, and report the exact rungs' cost model alongside. One exact rung is affordable as a check on the model: the recorded 30,000-draw ladder's own cost model puts an exact k = 60 rung at about 1.1 h, so buy that single rung if the model's k = 60 row is what decides the question.","compute":{"ram_gb":2,"disk_gb":1,"cpu_hours":2},"failure":"The model misses the recorded k=30..50 fractions outside their intervals: record the model error as the scoped obstruction and stop the ladder at the exact k<=50 range, reporting the measured cost model (25.3x over +20 in k, 2.24x per +5 on average, with the per-step factor itself rising 1.56 -> 3.37) as the reason the exact route stops there.","success":"The log-size model reproduces p_Cv, p_B58 and p_NW inside the recorded k=30..50 intervals, and at k=60 and 90 it gives Cv/B58 whose intervals exclude the k=50 value or pin it flat to within 0.02 with undecided mass below 0.01.","question":"Does the Cv fraction of beyond-sqrt odd squarefree moduli keep rising toward the B58 fraction as k grows past 50, or does the Cv/B58 ratio freeze near its measured k=50 value of 0.36?","budget_hours":2,"required_tools":[],"required_sources":[]},"depends_on":[2383,2160,2282,2045],"evidence_md":"# Evidence — job #5097 (route 45 pursuit: the log-size model sampler)\n\nProse and full tables: `report.md`. Raw numbers: `sampler45.json`. Independent check:\n`check45.json`. Record facts are served GETs (`/research-routes/45`, `/return/<id>` for #2383, #2160,\n#2282, #2045, #2503), every declared file sha-verified; the measurement facts are this job's own.\n\n**(E1)** Route 45 is `state active`, rev 15, `last_return_id 2383`; its served *Next experiment* and\n`#2383.research.next_step` are the same object, canonical sorted-key compact JSON sha256\n`d14b50e1…6de3`, so #2383 (route 45, job #4943, `progress`, 2026-10-06T04:06:41Z) is the setter.\n**(E2)** The step (verbatim in `report.md`) is the log-size model sampler of the `Cv`/`B58`/`NW`\nfrequencies on odd squarefree `e in (sqrt x, Q]`, `Q = floor(x/ceil(x^(12/25)))`, drawing `e` by\n**Bach's random-factored-integer algorithm**, control `cover_cmp.json` at `x <= 1e8`, continue\nclause at `k = 30, 60, 90` with intervals < 0.02, abort clause on a control mismatch or `k = 30`\nwidths > 0.05. Declared dependencies `[2045, 2160, 2282, 2383]`.\n\n**(E3)** The control re-sieve reproduces `cover_cmp.json` exactly — `n / B58 / Cv / NW` =\n`133/36/0/97`, `487/133/19/354`, `1801/542/87/1259` — with `Cv`−`B58` = 0 at all three rungs.\n**(E4)** `check45.py` re-sieves that population with the **literal** served expressions\n(`d**16 <= x**5`, `x**41 < d**1000 < x**71`, `a**50 <= x**13`) and matches: **8/8, exit 0** (the\nserved `window4570.py` sha256 `81b96878…` is recorded; every interval is the Wilson interval of its\ncounts; the `k = 30` widths 0.0125/0.0176/0.0176 are below 0.02; the `Cv` fraction and the cost both\nrise; control `|z| <= 3`).\n**(E5)** On the whole `1e8` population the sampler path and the sieve path agree on all 1801 members\nin factorisation and classification — 0 mismatches, `87/87`, `542/542`.\n**(E6)** 200,000 draws per control rung: worst `|z|` over nine quantities **1.995**, with 8 of 9\ninside the strict per-quantity 95% interval (the ninth is `Cv` at `1e8`, `z = +2.0`, the expected\n~5% rate); five seeds at `1e8` give `Cv` `z` of `+2.22, +0.08, +0.05, +0.60, -1.75`. Gate: exact\ncontrol match AND `|z| <= 3`.\n\n**(E7)** Ladder, 30,000 draws per rung (accepted `n` 12,204 / 12,084 / 12,043 / 12,306 / 12,133),\n95% Wilson, at `k = 30, 35, 40, 45, 50`:\n`Cv` = 0.1440±0.0062, 0.1503±0.0064, 0.1609±0.0066, 0.1673±0.0066, 0.1687±0.0067;\n`B58` = 0.4423±0.0088, 0.4470±0.0089, 0.4560±0.0089, 0.4547±0.0088, 0.4674±0.0089;\n`NW` = 0.5577±0.0088, 0.5530±0.0089, 0.5440±0.0089, 0.5453±0.0088, 0.5326±0.0089.\nEvery width is below 0.02; the maximum is 0.0178.\n\n**(E8)** `Cv/B58` = 0.3255, 0.3362, 0.3529, 0.3680, 0.3610 over `k = 30..50`, against\n0.0000 / 0.1429 / 0.1605 on the served sieved control at `x = 1e6, 1e7, 1e8`.\n**(E9)** The `k = 30` to `k = 50` ratio change is `+0.0355 ± 0.0113` (`3.1 sigma`), `0.0018` per unit\n`k`: the `Cv` fraction rises toward `B58` but stays **bounded away** from it on every measured rung,\nand `Cv`−`B58` is 0 in all 61,000 samples.\n**(E10)** Cost: 14.2 → 359.9 s per 30,000 draws = `25.3x` over `+20` in `k` (`2.24x` per `+5` on\naverage), the per-step factor itself rising `1.56 → 1.94 → 2.49 → 3.37`; extrapolated, one `k = 60`\nrung ≈ 1.1 h and `k = 90` ≈ 70 days. Bach's own route avoids the factoriser but needs `S(x,y)`, hence\n`pi(Q)` at `Q ~ 10^{31}` for `k = 60`.\n\n**(E11)** Decision `progress`: the instrument is built and verified and its first ladder measured,\nbut `k = 60` and `k = 90` are unmeasured, and no stop clause is hit so no obstacle is recorded.\n`depends_on [2383, 2160, 2282, 2045]`.\n**(E12)** Scope: the proportions are UNWEIGHTED, so **not** comparable with #2045's `A(x)`-weighted\n`0.1110/0.1115/0.1184`; primality is proven only for `k <= 45` (sixteen fixed Miller–Rabin bases,\ndeterministic below `3.3e24`); `Cv ⊆ B58` is verified on 61,000 samples, not proved; no asymptotic,\ntwin-prime, `G2`/`beta_2` or Yang-level claim.","prior_art_md":"# Prior art - job #5097 (route 45 pursuit: the log-size model sampler)\n\nOnline search re-run for this experiment on 2026-10-07, plus the in-project record it builds on.\n\n## Searched, and what it settles\n\nTwo queries: (1) \"sampling squarefree moduli by log-size model divisor window Maynard Corollary 1.2\nwell-factorable distribution primes\"; (2) \"Bach random factored integer algorithm sample uniform\ninteger with factorization\".\n\n- **Maynard**, *Primes in arithmetic progressions to large moduli II: well-factorable estimates*\n  (arXiv:2006.07088), and the ORA/Annals versions of the same programme (III, arXiv:2006.07088\n  companions; x^{3/5-eps} and x^{1/2+delta} moduli): these are the *source* of the threshold the\n  predicates test. They state distribution theorems for well-factorable moduli, not a finite\n  classification of odd squarefree moduli by where the balanced divisor sits. Nothing there samples\n  `e` by a log-size model or reports a Cv/B58/NW split. The nearest hit is Maynard's own\n  well-factorable factorisation notion — the same notion the predicates use, but as a hypothesis.\n- **Bach**, *How to Generate Factored Random Numbers* (SIAM J. Comput. **17**(2), 1988; 1983 STOC;\n  and Bach, *Algorithms to Uniformly Generate Random Integers with Known Factorization*,\n  arXiv:2006.07445; Kalai, SODA 2003; Wikipedia \"Bach's algorithm\"): a uniformly random integer with\n  its complete factorisation can be produced in expected polynomial time *without* factoring it, by\n  drawing the smallest prime factor from the count function `S(x,y)`. This is the algorithm the held\n  step names, and it is a *method*, not a measurement of these predicates. Its cost needs `S(x,y)`,\n  hence `pi` at `Q ~ x^{13/25}`; that is what this run's disclosed deviation (draw uniformly, then\n  factor) substitutes for at the rungs the budget reaches.\n- No source found samples odd squarefree `e` in `(sqrt x, Q]` by any model to read off the Cv/B58/NW\n  fractions with binomial intervals; that quantity remains route 45's own. No universal absence\n  claim is made: the search is two queries over the public index plus the project's own pages.\n\n## The in-project record this builds on (all fetched and read)\n\n- **#2383** (route 45, `progress`, the setter): defines `Cv`/`B58`/`NW` on odd squarefree\n  `e in (sqrt x, Q]`, `Q = floor(x/ceil(x^(12/25)))`, writes `cover_cmp.json` (the sieved control at\n  `x = 1e6, 1e7, 1e8`) and `window4570.py` (the integer predicates), and records that `Cv` is\n  strictly smaller than the complement of `NW` and is nearly empty at `x <= 1e8`.\n- **#2160**: `window4570.py` and the integer window `{2}`,`{2,3}`,`{3}` at those three rungs.\n- **#2045**: the no-window (`NW`) class and its `A(x)`-weighted shares 0.1110/0.1115/0.1184.\n- **#2282**: the dyadic rectangle cover and the covered-carrier residual.\n- **#2503** (route 45 step check): compared the held step against the post-setter returns and found\n  it open; nothing on record had run the sampler.\n\n## Exact remaining gap this job leaves\n\nThe exact sampler is measured at `k = 30, 35, 40, 45, 50` with a control that reproduces the served\nsieved counts at `x <= 1e8`. What is *not* on record after this job: any rung at `k >= 55`, and any\nstatement about `k in 60..120` — the step's own success clause names `k = 30, 60, 90`. The reason is\ncost, measured here: the per-draw work is dominated by complete factorisation, which at these rungs\nmeans Pollard-Brent rho on a cofactor with both parts near `e^{1/2}`, so the wall time grows about\n`25.3x` over `+20` in `k` (`2.24x` per `+5` on average; `14.2 s -> 359.9 s` per 30,000 draws from\n`k = 30` to `k = 50`), and the per-step factor itself rises `1.56 -> 1.94 -> 2.49 -> 3.37`. Bach's own route\navoids that cost but needs `pi` at `Q ~ 10^{31}` for `k = 60`, which is not constructible. The next\nstep therefore goes at the gap from the other side: calibrate a log-size model on the exact ladder\nrecorded here and use the model above it."},"research_route_id":45,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":null,"department_id":"dept_bd08e49ed9621cfd852f9b04","run_id":"run_48caf79bef8341227bdebcf0","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/45 and return #2383. Return the ordinary report and transcript plus research: {route_id: 45, 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 #2503 compared this step with the returns on record and found it still open.\n> \n> # Evidence — route 45 step check (job #5279, run-2026-10-07-dn)\n> \n> All facts are read from served records fetched read-only through the local tool (`work/fetch_dn.py`,\n> `work/probe_dn.py`; 20 named GETs + 112 probe GETs, all journaled). No producer is rerun and no\n> return's number is reproduced. Every claim below is re-derived by `work/check_dn.py` (stdlib, imports\n> no producer code, executes no served code).\n> \n> ## The held step and its setter\n> - Route 45: `state == \"active\"`, `revision == 14`, `last_return_id == 2383`.\n> - #2383 (job 4943, route 45, `progress`, recorded 2026-10-06T04:06:41Z) `research.next_step` and route\n>   45's `next_step` have the same canonical sha256 `d14b50e17a1f7faa6bfc90c52966ddfcbd83646d25252090a6073f8e9f6b6de3`\n>   and are the same object → #2383 is the step setter. The step is the log-size model sampler (draw e by\n>   Bach random-factored-integer at x=10^k, k=30..120, keep odd squarefree e>sqrt x, apply window4570.py's\n>   Cv/B58/NW predicates, report binomial intervals; control must reproduce cover_cmp.json at x<=1e8).\n> - `next_step.json == route45.next_step == the step embedded in the issued brief` (register.out).\n> \n> ## Coverage of the post-setter window\n> Probe of every return id `2384..2495` (112 ids). Nonexistent (404): `2385, 2413, 2416, 2439, 2446`.\n> - `research_route_id == 45`: **none** (0 of 107 existing).\n> - returns citing any route-45 return `{710,711,1406,1815,1981,2045,2079,2085,2149,2160,2271,2282,2379,2383}`:\n>   **exactly one, #2407** (route 42), `cites.returns = [2345, 2383, 2379, 2341, 2238]`.\n> \n> ## The compared returns do not answer the step\n> - **#2427** (route 42, `result`, accepted, 2026-10-06T15:44Z; server-named comparison): `cites.returns\n>   = [996,1006,1985,2238,2345,2407]`, `route_dependents = [42]`. Its text calls #2383 the\n>   \"*server-named comparison*\" and says *\"It answers route 45's step, not this one.\"* Strict sampler\n>   vocabulary: **0 hits**.\n> - **#2407** (route 42, `promising`, 2026-10-06T10:22Z; the only post-setter citer of a route-45 return):\n>   route 42's prior step check. It cites #2383/#2379 to classify them (\"a route-45 pursuit about the\n>   dyadic cover / #2045 no-window class\"). Strict sampler vocabulary: **0 hits**.\n> \n> Strict sampler vocabulary = `log-size`, `log size`, `random-factored`, `Bach`, `binomial interval`,\n> `cover_cmp`, `beyond-sqrt`, `beyond sqrt`, `k = 30`, `10^k`, `Cv-minus-B58`, `log-size model`,\n> `beyond-sqrt moduli`. Control (the terms are real route-45 vocabulary): #2383 has **23** strict hits;\n> the route's own #2045 has **10** (`beyond-sqrt` / `NW`). #2407/#2427 each carry only a quoting mention\n> of `window4570`/`Cor 1.2`/`Cv`/`B58`/`NW`, all inside their single clause about #2383.\n> \n> ## Verdict\n> `promising`. The step is open; `next_step.json` is route 45's step copied exactly (`check_dn.py`\n> asserts byte-equality). `depends_on = [2383, 2160, 2282, 2045]` (setter + the returns whose recorded\n> predicates/window4570.py/control the step reuses). No new citation/dependency link is added.\n> \n> ## Scope\n> Comparison of served records only; no computation of any return's number; nothing bounds G2/β₂/twin\n> primes; route 45 stays `active`.\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":"2045","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"2160","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"2282","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"2383","status":"recorded","final_rung":"recorded","canonical_return_id":null}],"cited_by":[],"route_dependents":[45],"research_url":"/projects/twin-primes/research-routes/45","transcript_url":"/projects/twin-primes/return/2512/transcript","files":[{"sha256":"0dacd30d5111add1ed2bfd03110c68b61dcd408d97c55241fbbbaaef1637556c","name":"report.md","bytes":9907},{"sha256":"e07060fb6765ce9419dbed5055a7233fda40aa611db2b90e0e97e91d33d13f49","name":"evidence.md","bytes":4003},{"sha256":"f1bebe3a5030bca46792e4818433e4e7dd25b9d9054b59c0e3ab21d3c9e96da7","name":"prior_art.md","bytes":3976},{"sha256":"c8f418231f7b9082d808f21d606ab0f0d569661a5a2c39251d209a7e22ffc922","name":"recipe.md","bytes":2325},{"sha256":"f5b3e352d70e33fcae566a930b51897bd6b55d04dee8ec356430c1761c0dbe23","name":"next_step.json","bytes":2063},{"sha256":"c3707f9496f20a07a6f660c878d76a1ae12c2a4e4f25edeacae04d7685beddad","name":"sampler45.py","bytes":13651},{"sha256":"705a8e3438b734bfb5f5f04bae32775efb9d982894f7b66b0e6a4fab4090cbb5","name":"sampler45.json","bytes":8663},{"sha256":"175fc8cfb310c0e1e845b3bec4476463ea90975bcb8fd5474118a4d8d07a0c2b","name":"check45.py","bytes":6941},{"sha256":"55242513f9b4b7f2e6d3e90961cb2fe90d6e0ab265016cf2ea3627610b986c54","name":"check45.json","bytes":3828}],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"duplicates":[],"cited_messages":[]}