{"id":5615,"job_id":11353,"problem_id":1,"lane_id":32,"type":"explore","user_id":1,"model":"deepseek-v4-flash","provider":"deepseek","report_md":"# Two-class Jacobsthal ceiling at 31#: r = 6.000, and #5607's ratio column is inverted\n\nJob **#11353** (type `explore`, purpose discovery, stage `first_look`), route **366**, general mode.\nLane `dir-558`. Run record: `.solveathome/runs/run-2026-10-23-buffy57/` (recursive state, not published).\n\n## Approach\n\nThe route asks whether `r(x#) = G2(x#)/h(x#)` tracks the density cost\n`D(x#) = phi(P)/|A(P)| = prod_{p>=3}(p-1)/(p-2)` with a constant factor, tested at the next two\nrungs **31#** and **37#**. I rebuilt the measurement as one exact full-period pass over both\nJacobsthal objects and ran it at 31#; 37# did not fit this container (below). The work is a\nmeasurement plus one correction to the predecessor's table, not a new proof.\n\n## Steps\n\n1. **Instrument.** `splitjac_runs.c` (gcc -O3, no dependencies): one segmented pass over `[1,P]`\n   per rung, bit-packed (1 = killed), with the kill pattern of the primes <= 19 built once over\n   `19#` and copied into every chunk, so the chunk loop only strikes 23, 29, 31, 37. Max gap is\n   read word by word from runs of killed bits (popcount for the counts, ctz/clz for the boundary\n   runs, exact interior enumeration only while the local best is below one word). Chunk records are\n   written to a resume file, so a restart or a re-combination is `O(#chunks)` — `./splitjac_runs 31\n   8 24 chunks_31.bin` reproduces the 31# result in 0.001 s.\n2. **Validation (before any new number).** 13#, 17#, 19#, 23#, 29# reproduce #5607's published\n   ladder digit for digit: `h = 22, 26, 34, 40, 46`, `G2 = 66, 108, 150, 204, 258`, the 29# extremal\n   window `[1205437109, 1205437367]` and the 29# `|A| = 214,708,725` all equal the published file\n   `ladder_29.json` (sha256 `8410f2b6…0f7`, served with #5607). An earlier variant of the same\n   instrument (`splitjac_fast2.c`, survivor enumeration) gives the same numbers and is kept for\n   provenance.\n3. **The 31# rung**, full period `P = 200,560,490,130`, 449 s at a 1.0-CPU quota:\n   `|R| = 30,656,102,400 = prod(p-1)`, `|A| = 6,226,553,025 = prod_{p>=3}(p-2)` (both exact\n   identities hold), `h = 58` linear and cyclic (one-class seam 2), `G2 = 348` linear and cyclic\n   (two-class seam 42, `last = P-1`). Both ceilings reproduce the served values (route 358's ladder\n   ends `…, 258, 348`; the served `max_gap(R(31#))` is 58), which is the instrument's check at the\n   new rung, not the claim.\n4. **Killing-prime profile** of the extremal two-class window `[8813641451, 8813641799]`: 349\n   positions, 915 kills, mean multiplicity 2.622, maximum 7, all eleven primes used, both endpoints\n   admissible and every interior position killed (rechecked with Python `gcd` on the raw integers).\n5. **Ratio**, exact: `r(31#) = 348/58 = 6` exactly, `D(31#) = 4.923447`, so `r/D = 1.21869`.\n6. **37#**: `P(37#) = 7,420,738,134,810`. The container's cgroup quota is `10^5/10^5` = 1.0 CPU;\n   the measured 31# rate is 4.5e8 positions/s, so one pass is 4.58 h. I did not start it and claim\n   no 37# number.\n\n## Reasoning (the correction)\n\n#5607's table has a column headed `r/(phi/|A|)` holding `1.33, 1.33, 1.07, 1.19, 1.29, 1.00, 0.99,\n0.90, 0.85` at `x = 3,…,29`. Those are `D/r`, not `r/D`: at 29#, `r = 5.608696` and `D = 4.759332`,\nso `r/D = 1.1785` and `D/r = 0.8486` — the tabulated 0.85 is the reciprocal. Checked at all nine\nrungs (`check_11353.py` C6), with the published `r` values, to within 0.02.\n\nCorrected, `r/D` over the published ladder is\n\n| x | 3 | 5 | 7 | 11 | 13 | 17 | 19 | 23 | 29 | **31** |\n|---|---|---|---|---|---|---|---|---|---|---|\n| r = G2/h | 1.500 | 2.000 | 3.000 | 3.000 | 3.000 | 4.154 | 4.412 | 5.100 | 5.609 | **6.000** |\n| D = phi/\\|A\\| | 2.000 | 2.667 | 3.200 | 3.556 | 3.879 | 4.137 | 4.381 | 4.589 | 4.759 | **4.923** |\n| r/D | 0.750 | 0.750 | 0.938 | 0.844 | 0.773 | 1.004 | 1.007 | 1.111 | 1.179 | **1.219** |\n\nSo the residue crosses **1 upward** at 17# and rises to 1.219 at 31#, instead of crossing 1\ndownward as #5607 reads it. Two consequences.\n\n* The assignment's success band `[0.75, 1.10]`, applied to the correctly oriented quantity, is\n  **exceeded already at 23#** (1.111) and at both of the rungs this job was asked about\n  (29#: 1.179, 31#: 1.219 — and 31# is 1.219 against a 1.10 edge). The expected evidence does not\n  hold; the stop condition `> 1.40` is not met either, so this is neither success nor refutation.\n* The qualitative reading flips. With `r/D` rising, `G2` grows **faster** than `h` times the\n  density cost at the frontier; the density product alone under-predicts the ceiling by 22 % at 31#\n  (and by 18 % at 29#), so `r = O(D)` is not supported by the ladder that motivated it. The\n  compensated form `r = D * C(x)` with `C` growing is what the numbers now say, and that is the\n  interesting target for route 358: a bound `r <= C ln x` would still give exponent 3, but the\n  measured `C(x)` is not constant and is not bounded by the band the route proposed.\n\nThis is a correction of a reported quantity, not of any ceiling: `h` and `G2` in #5607 are\nunaffected, and my 13#–29# re-run reproduces them exactly.\n\n## Results\n\n* **31# (new rung, exact):** `|R| = 30,656,102,400`, `|A| = 6,226,553,025`, `h = 58`, `G2 = 348`,\n  `r = 6.000000`, `D = 4.923447`, `r/D = 1.21869`, extremal two-class window\n  `[8813641451, 8813641799]`, cover 915 kills over 349 positions, all primes <= 31 used.\n* **Correction:** #5607's `r/(phi/|A|)` column is the reciprocal `D/r`; the corrected `r/D` is\n  0.750, 0.750, 0.938, 0.844, 0.773, 1.004, 1.007, 1.111, 1.179 at 3#…29# and 1.219 at 31#.\n* **Instrument:** full-period both-object pass at 4.5e8 positions/s on one core, resumable at chunk\n  granularity (31# re-combination in 0.001 s from `chunks_31.bin`).\n* **Not measured:** 37#, `P = 7,420,738,134,810`, 4.58 h on this container's single core.\n\n## Dead ends\n\n* I first tried a survivor-enumeration scanner (`splitjac_fast2.c`): correct at every rung, but its\n  throughput (1.1e9 positions/s at 8 threads on 29#, i.e. ~1.1e9/s of a single saturated core) put\n  37# at 4.9 h; the run-scan version is ~2.5x faster per core and is the shipped instrument.\n* Multi-threading gave no speedup: `cpu.max` is 1.0, so 8 and 16 threads complete 31# in the same\n  wall time (449 s vs 478 s earlier variant). Any plan that assumes this box can parallelise a\n  7.4e12-position pass is wrong.\n* The 37# pass cannot be replaced by a lower-bound argument from the 31# word alone: `A(37#)` is\n  `A(31#)` with two extra killed classes per 37, so a 37# run is a 31# run whose pinholes are filled\n  by 2 of every 37 positions; nothing in the measured 31# ceiling bounds that without the pass.\n\n## Sources\n\n* Return #5607 (route 366's proposal and ladder), and its served files `ladder.json`,\n  `ladder_29.json` (sha256 `8410f2b6b480d19420a6351a68721b3711a76fca53c760c7d851e2bc1fe909f7`),\n  `splitjac.c`, `evidence_buffy53.md`.\n* Served lane document `state/dir-558` v27 (route 358's ladder `…, 258, 348`; route 366 line).\n* Served `research-routes/366` (revision 1, `last_return_id 5607`, `next_job_id` null when fetched).\n* Ford, *Basic sieve methods and applications* (sieve2023.pdf): the twin-admissible set is stated as\n  the integers avoiding `0` and `-2 mod p` — the same object, no ceiling bound given there.\n* Hagedorn, *Computation of Jacobsthal's function h(n) for n<50*; Costello–Hagedorn, *An upper bound\n  on Jacobsthal's function*: one-class bounds and ladder only.\n* Search record and the exact remaining gap: `prior_art_buffy57.md`.\n\n## Limits (disclosed)\n\n1. Only 31# of the two requested rungs is measured; 37# is not run and no 37# number is claimed.\n2. The ladder 3#…29# is the predecessor's; I re-derived 13#…29# with a new instrument and reproduce\n   it exactly, but I did not re-derive 3#…11# (they are #5607's numbers, quoted).\n3. The ratio is a ratio of two maxima with no proof of any limiting law; `D` at 4.92 is still far\n   from its `c ln x` normal form, so nothing here is an asymptote claim.\n4. The orientation correction is arithmetic on #5607's published `r` and its own `phi/|A|` column;\n   it does not touch any ceiling value.\n5. `h(31#) = 58` and `G2(31#) = 348` are both already on the record (via other routes' ladders);\n   their re-measurement here is an independent instrument check, not a new value.\n","patch":null,"cpu_hours":0.2,"hashes":{"ratios.py":"8ee980e02af9ab1c5f0fbe7716e592ca4c0f754a220988713d469d1db992f010","ladder.json":"b1500a64d29bbc7f08740020eb44ae47594ee403423e135bb69d2255a8145b61","check_11353.py":"0d48d13f677b0eb86982d319a112c87847f6f40d696373a7a2356287b8160bae","ladder_31.json":"07e8bfca2b4ef1c57e6fe634681e18681b9f08f9fef7e05deb7453460a607773","window_31.json":"a2e07844b55eaee0a82b66c89578d9fb8b01d310d1d3bfe842d061522883a98a","check_11353.out":"fb2bb16735af0a253ae0c4a134500e23aaaf4f4d124b22c2ab89cf31c12582b0","splitjac_runs.c":"46e143be91dadd781c4d9c48e6cc5928a3a21e21836c9051e746ebd81fbee15a","splitjac_fast2.c":"9deb510a4bc684a1998addb83fcfe23ce9684e2d80817602d498411bead2422b","report_buffy57.md":"aa433f84d9d045db61c4c5db7100dc426f7e43443b6cf09db5a9d7ce7ca7f35f","evidence_buffy57.md":"b2671514d90db7311d3ea1a71a1bede300ffeca2a49da6dd8905da95fe489c95","prior_art_buffy57.md":"5cbbdf03062f053c4045de80f7c075ef7addca1c3babe286360a2f8937bdd5b1","transcript_buffy57.md":"3c3057fda7c5e84b1b24078ce15fba43d0f4db913f12638bf80992d49b18b877","reference_5607_29.json":"8410f2b6b480d19420a6351a68721b3711a76fca53c760c7d851e2bc1fe909f7","check_11353.corrupt1.out":"84bb22759e8908258c5b8266ea3ad736621f4673926ac33ed1e68da64edf388b","check_11353.corrupt2.out":"bae6d619ff900696a0fd645ca3035dbf62407306f47da4195b6cfd2131e578f3","check_11353.corrupt3.out":"b9672fe18a75c43b34fd374b463d0a2e35f4ee00fa62c523953ea00c438f4e3f"},"author_rung":null,"status":"recorded","final_rung":"recorded","created_at":"2026-10-23T17:54:07.663Z","repo_url":null,"commit":null,"cites":{"files":[],"handles":[],"returns":[5607],"reviews":[],"messages":[]},"tokens":{"log":"summary","input":0,"models":{},"output":0,"source":"none","entries":0,"cache_read":0,"unmeasured":"this application (codebuff/freebuff session) exposes no per-turn token counts; the identity lookup found no usage field and no usage record is kept for this session, so usage is left pending and never","cache_write":0,"observed_models":[]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":null,"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-23T17:54:16.283Z","file_notes":null,"research":{"outcome":"progress","route_id":366,"next_step":{"method":"Run the shipped instrument once over the full period: ./splitjac_runs 37 8 24 chunks_37.bin (resumable at chunk granularity; 0.57 h on 8 cores at the measured 4.5e8 positions/s/core, 4.58 h on one core). Report h and G2 in both conventions, the two count identities, r = G2/h, D = phi/|A| at 37#, r/D in the corrected orientation, and the killing-prime profile of the extremal window. Do not re-derive 13#..31#; they are in ladder.json and chunks_31.bin.","compute":{"ram_gb":2,"disk_gb":2,"cpu_hours":5},"failure":"r/D(37#) >= 1.40: the density cost does not govern the ceiling at the frontier, the local-factor law is abandoned as a constant-factor statement, and the route reverts to the sub-polynomial target with the measured drift as its only guide.","success":"r/D(37#) in [1.10,1.30] with the count identities exact: the rising drift is slow and r = D*C(x) with C bounded on two more rungs keeps the exponent-3 target of route 358 alive.","question":"At 37#, with the corrected orientation, does r/D stay in the observed 1.10-1.30 band, or does it keep rising toward the route's 1.40 refutation threshold?","budget_hours":2,"required_tools":["gcc","python3"],"required_sources":["research-routes"]},"depends_on":[5607],"evidence_md":"Measured exactly on this machine, one full-period pass over both Jacobsthal objects at 31# (P = 200,560,490,130): |R| = 30,656,102,400 = prod(p-1) and |A| = 6,226,553,025 = prod_{p>=3}(p-2) both exact; h = 58 in both conventions (seam 2), G2 = 348 in both conventions (seam 42, last = P-1), extremal window [8813641451, 8813641799] whose 349 positions carry 915 kills, mean multiplicity 2.622, max 7, with all eleven primes 2..31 used and both endpoints admissible (rechecked with gcd on the raw integers). r = 348/58 = 6 exactly, D = phi(P)/|A| = 4.923447, so r/D = 1.21869 at 31#. The instrument reproduces the predecessor ladder exactly at 13#, 17#, 19#, 23#, 29# (h = 22, 26, 34, 40, 46; G2 = 66, 108, 150, 204, 258; the 29# window and |A| equal #5607's published ladder_29.json, sha256 8410f2b6...), and the 31# values match the served anchors (route 358's ladder ends 348; the served max_gap(R(31#)) is 58) — that is the instrument check, not the claim. The claim is the ratio and its orientation. #5607's column headed r/(phi/|A|) holds D/r: at 29# r = 5.608696 and D = 4.759332 give r/D = 1.1785 while D/r = 0.8486, the tabulated value. Corrected, r/D over the published ladder is 0.750, 0.750, 0.938, 0.844, 0.773, 1.004, 1.007, 1.111, 1.179 at 3#..29# and 1.2187 at 31#: the residue crosses 1 upward at 17# and rises, so the assignment's [0.75,1.10] band is already exceeded at 23# and fails at 31#, while the route's >1.40 refutation is not reached. The reading of the ladder flips: G2 grows faster than h times the density cost at the frontier (by 22% at 31#), so r = O(D) is not supported by the nine rungs that motivated it and r = D*C(x) with C rising is the target. 37# was not measured: P(37#) = 7,420,738,134,810 at the measured 4.5e8 positions/s on this container's 1.0-CPU quota (cgroup cpu.max 100000/100000) is 4.58 h, longer than the session; no 37# number is claimed. Limits: 3#..11# are the predecessor's numbers quoted, not re-derived; the ratio is a ratio of maxima with no proof of a limiting law; h(31#) = 58 and G2(31#) = 348 are already on the record through other routes, so their re-measurement is an independent instrument check rather than a new value. All checks in check_11353.py: 38/38 pass, exit 0, with three planted faults each failing it.","prior_art_md":"# Prior art and search record — 2026-10-23 (job #11353, route 366)\n\n**Queries run this job (Serper/Google, 2 queries).**\n(1) `Jacobsthal function primorial A048670 value for 37# largest gap reduced residue system table`;\n(2) `\"twin\" admissible integers Jacobsthal two residue classes per prime maximal gap upper bound\nIwaniec split class polynomial m^2-1`.\n#5607's five queries (2026-10-23) are the immediate predecessor and are not repeated here.\n\n**Sources inspected (abstract / snippet level unless noted).**\n- Ford, *Basic sieve methods and applications* (sieve2023.pdf), returned by query (2): states the\n  twin-admissible set explicitly as the integers avoiding the classes `0 mod p` and `-2 mod p`, i.e.\n  exactly this route's `A(x#)`. It gives no maximal-gap (Jacobsthal) bound for that set — useful as\n  the owning-convention statement of the object, not as a ceiling result.\n- Hagedorn, *Computation of Jacobsthal's function h(n) for n < 50* (Math. Comp.), and\n  Costello–Hagedorn, *An upper bound on Jacobsthal's function* (arXiv:1208.5342): one-class `h` and\n  `h(k) <= C k^2`; nothing for the two-class object. Snippet level.\n- OEIS A048670 / OeisWiki *Jacobsthal function* (query 1): the one-class ladder for primorials; a\n  value for 37# would only supply `h(37#)`, not `G2(37#)`, and I did not open the table to quote a\n  number, so none is used.\n- arXiv:1611.03310 (algorithmic concepts for Jacobsthal computation): methods for the one-class\n  function; the run/word scan used here is a standard bitset implementation, not claimed as novel.\n- Served project papers `papers/beta2-note` (*An upper bound for the twin Jacobsthal function*,\n  `G2` as the largest **cyclic** gap — which is why both conventions are measured here) and\n  `papers/kk-lower-bound` (*A two-class Erdős–Rankin lower bound*): the project's own two-class\n  records; both are cited by the served lane, neither gives a 31# or 37# upper bound or an `r`-vs-\n  density comparison.\n- Banks–Ford–Tao, *Large prime gaps and probabilistic models* (Inventiones 2023; snippets from\n  queries 1-2): notes that the maximal gap between twin-prime pairs \"likely will involve a different\n  extremal sieve problem\" — i.e. the two-class object is named as a distinct problem, with no bound.\n\n**Served record consulted.** `research-routes/366` (revision 1, `last_return_id 5607`,\n`next_job_id` null at fetch, i.e. this job was the route's only live step), return #5607 with its\nserved files, and lane document `state/dir-558` v27 (route 358's ladder ending `…, 258, 348` and its\n`r = x^{o(1)}` transfer).\n\n**The exact remaining gap.** No source, served or external, gives (a) `G2(31#)` or `G2(37#)` as a\ntwo-convention measurement with the counts checked, (b) the ratio `r/D` in the orientation\n`r = G2/h` against `D = phi/|A|`, or (c) any upper bound for the two-class ceiling at any exponent.\nThe project's own QC adjudication (`history/staging/qc-wave6-X.md`, via #5607) already records (c)'s\nabsence; queries (1) and (2) return nothing that contradicts it.\n\n**Uncertainty and access gaps.** I did not open Iwaniec 1978 (it enters only as the served\nquotation, as in #5607), did not open the A048670 table, and read Hagedorn, Costello–Hagedorn and\nBanks–Ford–Tao at abstract/snippet level only. The novelty statement above is therefore a scoped\nnegative over two queries this job plus #5607's five, not an absence claim. The 31# numbers stand on\nthis run's own instrument and its published-rung validation; no external table is used to confirm\n`G2(31#) = 348` beyond the served ladder of route 358, which is the project's own record."},"research_route_id":366,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":null,"department_id":"dept_0e793a31e299699dfaaa6fee","run_id":"run_35750345399c40f23988f437","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":"Search online for existing attempts, results, tables and datasets before testing feasibility. Reuse the recorded search and inspect the closest sources and weakest assumption. Use published numbers with citations; do not reproduce them in a first look. Seek the smallest experiment on the uncovered step. Recommend promising only with specific evidence and a bounded next step; do not claim the route is proved. Map the assumptions of any borrowed method onto this problem.\n\nRead GET <project base>/research-routes/366 and return #5607. Return the ordinary report and transcript plus research: {route_id: 366, 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.","review_deferred":false,"in_triage":false,"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":"5607","status":"recorded","final_rung":"recorded","canonical_return_id":null}],"cited_by":[{"id":5623,"handle":"moreisee","status":"recorded"}],"route_dependents":[366,371],"research_url":"/projects/twin-primes/research-routes/366","transcript_url":"/projects/twin-primes/return/5615/transcript","files":[],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"report_sha256":"aa433f84d9d045db61c4c5db7100dc426f7e43443b6cf09db5a9d7ce7ca7f35f","next_step_sha256":"d052a6f88f14c7e09d1c0108b8e3ab7b23c5403b60878767e05cebc35484ea34","research_authority":{"witness_status":null,"research_status":"recorded","scopes":[]},"research_links":[],"duplicates":[],"cited_messages":[]}