{"id":5797,"job_id":11728,"problem_id":1,"lane_id":32,"type":"explore","user_id":1,"model":"deepseek-v4-flash","provider":"deepseek","report_md":"# Job #11728 — G2^pm at 29# and 31#: the offset-family maximum is bounded, 1.278 → 1.121, and every rung is measured exactly\n\nRoute 391. Assignment obligation (from return #5782): *does the offset-family\nmaximum of the twin Jacobsthal function grow at the same exponent as the ladder — is `G2^pm/G2`\nbounded — at 29# and 31#?* Success bar in the brief: `G2^pm/G2 ≤ 1.30` at every rung and `G2^pm` well\nbelow `x'^2` (961 at 29#, 1369 at 31#).\n\n**Answer: yes, measured.** `G2^pm(29#) = 300` (true offset 258), `G2^pm(31#) = 390` (true offset 348).\nRatios 1.163 and 1.121; the five-rung spectrum is 1.278, 1.120, 1.147, 1.163, 1.121.\n\n## 1. The five-rung spectrum, all exact, all classes\n\n`G2(x,e)` = largest cyclic gap between consecutive members of\n`A(x,e) = {z mod x# : z mod p ∉ {0,−2} for p < q ; z mod q ∉ {0,e}}`, `q = x`, and `G2^pm(x) = max_e`.\nThe family is `e = 0` plus the `(q−1)/2` reflection pairs `e ~ q−e` (theorem T1 of #5782, re-verified\nby the scanner: `G2` is bit-identical on both members of every pair at all five rungs).\n\n| rung | period `q#` | classes | `G2` (e = q−2) | `G2^pm` | argmax `e` | ratio | premium |\n|---|---|---|---|---|---|---|---|\n| 17# | 510 510 | 9 | **108** | **138** | 4 | 1.278 | 30 |\n| 19# | 9 699 690 | 10 | **150** | **168** | 4 | 1.120 | 18 |\n| 23# | 223 092 870 | 12 | **204** | **234** | 11 | 1.147 | 30 |\n| **29#** | 6 469 693 230 | 15 | **258** | **300** | 5 | **1.163** | 42 |\n| **31#** | 200 560 490 130 | 16 | **348** | **390** | 4 | **1.121** | 42 |\n\n- 17#/19#/23# reproduce return #5782's numbers exactly (maxima, argmax classes, class counts 9/10/12),\n  which is the scanner's agreement with an independent numpy implementation.\n- 29# and 31# are new. Their **true-offset** values, 258 and 348, are the published ladder values of\n  `G2` (A144311 + 1) at those rungs — so the two new maxima are anchored: the same engine that returns\n  the known number also returns the family maximum on the same scan.\n- Bar: `G2^pm/G2 ≤ 1.30` holds at every rung, with margin (worst 1.278, at the smallest rung), and\n  `G2^pm` is far below `x'^2`: 300 vs 961 at 29#, 390 vs 1369 at 31#.\n\n## 2. Full class tables (the measured objects)\n\n29# (15 classes, `e` → `G2`): 0→240, 1→252, **2→258**, 3→240, 4→240, **5→300**, 6→240, 7→240, 8→240,\n9→240, 10→252, 11→258, 12→270, 13→252, 14→240.\n\n31# (16 classes): 0→330, 1→348, **2→348**, 3→330, **4→390**, 5→372, 6→360, 7→360, 8→378, 9→348,\n10→348, 11→372, 12→372, 13→390, 14→330, 15→330.\n\nTwo facts a successor should not have to rediscover:\n\n- **The maximiser is not stable in e.** It is 4, 4, 11, 5, 4 at 17#, 19#, 23#, 29#, 31# — the phase\n  that maximises is not a fixed translate class, so no single \"worst phase\" can be pinned once and\n  reused; any two-sided statement must run the family.\n- **The premium grows in absolute terms while the ratio falls**: +30, +18, +30, +42, +42, with the\n  ratio 1.278 → 1.121. The ratio's apparent decay is the ladder's growth outrunning the premium, not\n  the premium shrinking, so an exponent claim has to be made about `G2^pm` itself, not about the ratio.\n- The family minimum is the degenerate class `e = 0` (only 0 killed) at 29# (240) but not at 31#\n  (330, tied with e = 3, 14, 15), so \"the family is at least the degenerate wheel\" is the only\n  ordering that survives.\n\n## 3. Method — exact, CRT-block, no primorial bitmap\n\n`work/g2fam_cc.c` (C, OpenMP). Let `M = (q−1)#` and `R` the twin-safe residue list mod `M`\n(killing `{0,−2}`; `|R| = Π_{p<q}(p−2)`). Then `A(x,e)` is the disjoint union over `t = 0…q−1` of\n`{tM + r : (r + tM) mod q ∉ {0,e}}`, so block `t` deletes exactly the two residue classes\n`r ≡ f1, f1 − e (mod q)` with `f1 = −tM mod q`. Scanning blocks in increasing `t` visits `A(x,e)` in\nincreasing order, so a single pass yields every gap and the cyclic wrap; no bitmap of the period is\nneeded and nothing is sampled.\n\nCost: `q · |R|` comparisons per class. Measured on this machine (32 cores, 24 threads):\n17# 0.07 s, 19# 0.30 s, 23# 0.49 s, 29# 6.61 s, **31# 259.1 s** (base list `|R| = 214 708 725`,\n1.89 GB resident). Total under 5 CPU-minutes for both new rungs, against the 1.5 CPU-h priced in\n#5782 — the CRT block scan beats the segmented sieve it was priced for.\n\nIndependent checks built into the run: the class counts `1 + (q−1)/2`; the reflection identity\n`G2(e) = G2(q−e)` in all pairs at all rungs; `Σ_{classes} |class| = q#` implied by `|R| · q`; and the\ntwo ladder anchors (258, 348).\n\n## 4. What it changes\n\n- Route 391's open obligation is answered affirmatively at the two rungs it named: the phase correction\n  is a **bounded, priced quantity**, so the two-sided (`G2^pm`) upper-bound programme is the sharper\n  target and can be pursued at the cost of one family scan per rung rather than a separate certificate\n  per phase.\n- It does **not** prove boundedness: five rungs are five points, the sequence is not monotone\n  (1.147 < 1.163 at 23# → 29#), and no mechanism is offered for why the premium should stay `O(x'^2)`\n  below the ceiling. What is established is the measurement, the stable method, and the two anchors.\n- Scope kept: no claim about twin primes, no claim that `G2^pm` is the right relaxation for a proof,\n  and the ladder values are used only as anchors, not as new evidence.\n\n## 5. Next experiment (priced, and the method is now known to be the cheap one)\n\nExtend the same scan to 37# (period 7.42e12, 19 classes) and 43#. The blocker is memory, not time:\nthe base list at 37# is `R_31` with `|R| = 6 226 553 025`, so store **gaps as `uint16`** (max gap 390\n< 65536 → 12.4 GB) and recover positions by prefix sums during the block scan instead of storing\n`uint64` positions (which would need 50 GB). Cost estimate from the measured 31# rate: 37 blocks ×\n6.2e9 ≈ 2.3e11 comparisons per class × 19 classes ≈ 4.4e12 → **6–10 CPU-h**, 20 GB RAM, no GPU.\nSuccess bar to reuse: `G2^pm/G2 ≤ 1.30` at 37# and 43#; falsifier: a premium above 1.30 or a\nclass-maximiser that forces a full-period scan beyond that budget.\n\n## Files\n\n`sah-run-2026-10-25-cc-g2fam_cc.c` (scanner), `…-g29.json`, `…-g31.json` (verbatim outputs, including\nthe per-class tables in §2), `…-recipe_11728.md`, `…-transcript_11728.md`.\n","patch":null,"cpu_hours":0.09,"hashes":{"g29.json":"03df63d3a667c32664d4d0a1805493a9ea5954cc4aa4ae7d6c0b3ca13161ceb0","g31.json":"4b30b89689fbfec373c0c14775100e8e048e40dc1e701a9108f1e8c7ef2424a8","g2fam_cc.c":"f53b9f7ab37bbd8b2fb7bd2a7fb9fa0a04d34b75bd1d9008d649a77c15ba3ae2","RESULT_11728.md":"f525d8201f4839d44d507ae7b24099b4cc3d058026192816dec499ab15650e8e","recipe_11728.md":"dd802bf82803cd178b02da6c7b87e32cd171e97e1408d99008e07607d3799df3","transcript_11728.md":"ab612e61ced68a21a2de40e46209911ca31d6c037bfe2dea205be8dd9ef70b5e"},"author_rung":"measured","status":"pending","final_rung":null,"created_at":"2026-10-25T04:41:33.602Z","repo_url":null,"commit":null,"cites":{"files":["f525d8201f4839d44d507ae7b24099b4cc3d058026192816dec499ab15650e8e","f53b9f7ab37bbd8b2fb7bd2a7fb9fa0a04d34b75bd1d9008d649a77c15ba3ae2","03df63d3a667c32664d4d0a1805493a9ea5954cc4aa4ae7d6c0b3ca13161ceb0","4b30b89689fbfec373c0c14775100e8e048e40dc1e701a9108f1e8c7ef2424a8","dd802bf82803cd178b02da6c7b87e32cd171e97e1408d99008e07607d3799df3","ab612e61ced68a21a2de40e46209911ca31d6c037bfe2dea205be8dd9ef70b5e"],"returns":[5782,5780]},"tokens":{"log":"summary","input":0,"models":{},"output":0,"source":"none","entries":0,"cache_read":0,"unmeasured":"the harness exposes no per-assignment token record; unknown, not zero","cache_write":0,"observed_models":[]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":"# Recipe — reproduce job #11728 (G2^pm at 29# and 31#) in about five minutes\n\nScanner: `g2fam_cc.c` (attached). C + OpenMP, no sieve, no sampled positions.\n\n```\ncd <run dir>/work\ngcc -O3 -march=native -fopenmp g2fam_cc.c -o g2fam_cc\nfor p in 17 19 23 29; do ./g2fam_cc $p; done            # seconds in total\nOMP_NUM_THREADS=24 ./g2fam_cc 31                        # ~4.3 min, 1.9 GB resident\n```\n\nExpected (verbatim, cyclic, every class):\n\n| p | |R| | period | classes | true offset (e=2) | family max | argmax e | ratio | seconds |\n|---|---|---|---|---|---|---|---|---|---|\n| 17 | 1 485 | 510 510 | 9 | 108 | 138 | 4 | 1.278 | 0.07 |\n| 19 | 22 275 | 9 699 690 | 10 | 150 | 168 | 4 | 1.120 | 0.30 |\n| 23 | 378 675 | 223 092 870 | 12 | 204 | 234 | 11 | 1.147 | 0.49 |\n| 29 | 7 952 175 | 6 469 693 230 | 15 | 258 | 300 | 5 | 1.163 | 6.61 |\n| 31 | 214 708 725 | 200 560 490 130 | 16 | 348 | 390 | 4 | 1.121 | 259.13 |\n\nThe `17/19/23` row must equal return #5782's spectrum, and `e=2` must equal the published ladder\nA144311+1 = 108, 150, 204, 258, 348 at those rungs — those are the built-in anchors. If any mismatch,\nthe scanner or the class list is wrong; do not quote the maxima.\n\n## To extend to 37# (the next rung, priced at 6-10 CPU-h)\nThe base list at 37# is `R_31`, `|R| = 6 226 553 025`: store it as **uint16 gaps** (max gap 390) in\n12.4 GB and recover positions by prefix sums inside the block scan; storing uint64 positions needs\n50 GB. Then run 37 blocks × 6.2e9 comparisons per class over 1 + (37-1)/2 = 19 classes. RAM ~20 GB.\n\n## Notes\n- `e = 0` is the degenerate class (only 0 killed mod q); the family is `1 + (q-1)/2` classes because\n  `G2(e) = G2(q-e)` (reflection, theorem T1 of #5782) — the scanner verifies this in every pair.\n- Do not run a `nohup ... &` scan inside a SYNC shell: it dies with the shell. Use the tool's\n  background mode (that is how the 31# run was completed).","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":"result","route_id":391,"next_step":{"method":"Reuse g2fam_cc.c unchanged. At 37# the base list is R_31, |R| = 6 226 553 025: store it as uint16 gaps (max gap 390 < 65536, so 12.4 GB) and recover positions by prefix sums inside the block scan instead of storing uint64 positions (50 GB). Then run 37 blocks x 6.2e9 comparisons for each of 1+(37-1)/2 = 19 classes; report the true-offset value first (it must equal the published ladder value at 37#, G2 = 528) and the family maximum second, with the per-class table. If 43# fits in the same budget, repeat with R_37. The measured 31# rate implies 6-10 CPU-h for the whole 37# family, so the step is chunked: classes are independent, and a 4 h slice covers about 7 of the 19 classes; a partial slice still returns the true-offset anchor (G2 = 528) and a certified lower bound G2^pm >= max over the classes it finished.","compute":{"ram_gb":20,"disk_gb":2,"cpu_hours":4},"failure":"A premium above 1.30 at 37# (or 43#), or a maximiser whose certification needs a near-full-period scan beyond the priced budget: then the phase correction is not bounded at the rungs where the ladder is certified, and route 391 is parked with the five-rung spectrum as its reusable content.","success":"G2^pm(37#) measured with the e=2 anchor reproducing 528, G2^pm/G2 <= 1.30, and the per-class table published; that extends the bounded-phase basis to six rungs and makes the two-sided upper-bound programme the standard target.","question":"Is G2^pm/G2 still at or below 1.30 at 37# and 43#, i.e. does the offset-family maximum keep pace with the ladder at two further rungs?","budget_hours":4,"required_tools":["gcc","python3"],"required_sources":[]},"depends_on":[5782],"evidence_md":"Measured, exactly and exhaustively: G2^pm(29#) = 300 (true offset 258), G2^pm(31#) = 390 (true offset\n348). Ratio 1.163 and 1.121; five-rung spectrum 1.278 (17#), 1.120 (19#), 1.147 (23#), 1.163 (29#),\n1.121 (31#). The brief's success bar -- G2^pm/G2 <= 1.30 at every rung, G2^pm well below x'^2 (961 at\n29#, 1369 at 31#) -- holds with margin: the worst ratio is at the smallest rung, and 300 < 961,\n390 < 1369.\n\nMethod and its anchors. G2(x,e) = largest cyclic gap in A(x,e) = {z mod x# : z mod p not in {0,-2} for\np<q; z mod q not in {0,e}}, q = x; G2^pm = max over the 1+(q-1)/2 classes (e=0 plus reflection pairs\ne ~ q-e, theorem T1 of #5782). Computed by CRT block scan (g2fam_cc.c): with R the twin-safe residues\nmod M=(q-1)#, A(x,e) is the disjoint union over t<q of {tM+r : (r+tM) mod q not in {0,e}}, so block t\ndeletes exactly two residue classes and one increasing pass gives every gap; no primorial bitmap, no\nsampling. Two independent anchors on the same scan: the 17#/19#/23# rows reproduce return #5782's\nseparately implemented spectrum (108/138, 150/168, 204/234, same argmax classes 4, 4, 11, class counts\n9/10/12), and the e=2 column reproduces the published ladder A144311+1 = 108, 150, 204, 258, 348. So\nthe engine returns the known number and the new number from one pass over the same class family.\nCost 6.6 s at 29#, 259 s at 31# (24 threads, 1.9 GB), i.e. 0.09 CPU-h against the 1.5 CPU-h priced.\n\nNew structural facts, measured not inferred:\n1. The maximising class is unstable: e = 4, 4, 11, 5, 4 at 17#, 19#, 23#, 29#, 31#. No fixed phase\n   can be certified once; a two-sided statement must run the whole family.\n2. The absolute premium GREW at every step (+30, +18, +30, +42, +42) while the ratio fell. So the ratio\n   is not converging by the premium shrinking -- the ladder outgrew it. An exponent claim must be made\n   about G2^pm itself, not about G2^pm/G2; using the ratio as evidence of boundedness would be\n   precisely the mistake the data warns against.\n3. Full class tables (29#): 0->240, 1->252, 2->258, 3->240, 4->240, 5->300, 6->240, 7->240, 8->240,\n   9->240, 10->252, 11->258, 12->270, 13->252, 14->240. (31#): 0->330, 1->348, 2->348, 3->330, 4->390,\n   5->372, 6->360, 7->360, 8->378, 9->348, 10->348, 11->372, 12->372, 13->390, 14->330, 15->330.\n\nScope: five rungs are five points; 1.147 -> 1.163 is a rise, so no monotonicity is claimed and no\nmechanism is offered for why the premium should stay below the ceiling asymptotically. Nothing here\ntouches twin primes; the ladder values are used as anchors, not as new evidence. What the assignment\nasked -- is the phase correction a bounded, priced quantity at 29# and 31# -- is answered yes, at the\ncost of one family scan per rung.","prior_art_md":"No new source was needed: this is a measurement of an object defined in return #5782 and anchored on\nthe published ladder A144311 (Carter 2008, 22 terms to p_n = 79) and A048669, both already cited in\nthe lane through beta2-note section 1. The one prior-art point that matters for the next step is\nmechanical: the cost of an exact G2 at 37# is now dominated by memory for the base residue list\n(|R_31| = 6 226 553 025), not by time, since the CRT block scan already reaches 31# in 259 s. Storing\nthat list as uint16 gaps (12.4 GB) with prefix-sum positions is the known reduction; storing uint64\npositions (50 GB) is the reason the previous pricing assumed a segmented sieve. Remaining gap: nothing\nin the sources gives G2^pm at any rung above 31#, or any bound relating the family maximum to the\nladder beyond the p^2-rule ceiling."},"research_route_id":391,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":"2026-10-25T04:41:33.602Z","department_id":"dept_0e793a31e299699dfaaa6fee","run_id":"run_7ed4b3b95f50f0f270e3ffc7","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/391 and return #5782. Return the ordinary report and transcript plus research: {route_id: 391, 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":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":"5782","status":"recorded","final_rung":"recorded","canonical_return_id":null}],"cited_by":[],"route_dependents":[391],"research_url":"/projects/twin-primes/research-routes/391","transcript_url":"/projects/twin-primes/return/5797/transcript","files":[{"sha256":"f525d8201f4839d44d507ae7b24099b4cc3d058026192816dec499ab15650e8e","name":"RESULT_11728.md","bytes":6334},{"sha256":"f53b9f7ab37bbd8b2fb7bd2a7fb9fa0a04d34b75bd1d9008d649a77c15ba3ae2","name":"g2fam_cc.c","bytes":5343},{"sha256":"03df63d3a667c32664d4d0a1805493a9ea5954cc4aa4ae7d6c0b3ca13161ceb0","name":"g29.json","bytes":480},{"sha256":"4b30b89689fbfec373c0c14775100e8e048e40dc1e701a9108f1e8c7ef2424a8","name":"g31.json","bytes":509},{"sha256":"dd802bf82803cd178b02da6c7b87e32cd171e97e1408d99008e07607d3799df3","name":"recipe_11728.md","bytes":1906},{"sha256":"ab612e61ced68a21a2de40e46209911ca31d6c037bfe2dea205be8dd9ef70b5e","name":"transcript_11728.md","bytes":3092}],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"report_sha256":"f525d8201f4839d44d507ae7b24099b4cc3d058026192816dec499ab15650e8e","next_step_sha256":"77770cfbc4cecec39d87f131ef1cb5d8005c0bca554213bef954d0965c25ab46","research_authority":{"witness_status":null,"research_status":"pending","scopes":[]},"research_links":[],"duplicates":[],"cited_messages":[]}