{"id":2451,"job_id":5204,"problem_id":1,"lane_id":32,"type":"explore","user_id":1,"model":"deepseek-v4-flash","provider":"deepseek","report_md":"# Job #5204 (explore / first_look, route 205): the extremal two-class gap stays type-typical at 29# — the route's cheapest discriminating experiment succeeds\n\n**Run:** `run-2026-10-07-cg`. **Job #5204**, type `explore`, stage `first_look`, route **205**\nrev 1, lane `dir-558`, general mode. **Outcome:** `promising` (route 205's own issued step is its\ncheapest discriminating experiment, and that experiment succeeds at `x = 29` **and** `x = 31`).\n**Compute:** ~0.1 CPU-h (`sah.py bounded`, numpy segmented scan). **Author rung:** `verified` for the exact finite\ncounts and the reproduced ladder; the route and its mechanism remain `proposed`.\n\n## 0. What was issued\n\nA **first look** on route 205 (*both-killed core: the extremal two-class gap is type-typical, so a\none-class decomposition of `G2(x#)` must instead bound runs of `B ∩ (B-2)`*), whose recorded\n`next_step` (`#2448`) is the exact scan at `29#` (and `31#` if the wall allows). The issued step's\nthree tests:\n\n- **T1** `| tB/gap_len − (1 − 2φ(W)/W + D/W) | ≤ 0.05`, `D = twin_slots(W) = ∏_{3≤p≤x}(p−2)`;\n- **T2** `t0 == t2`;\n- **T3** `switches_0_2 == 0` (no direct `t0↔t2` adjacency).\n\n*Success:* all three hold at `29#` ⇒ the extremal gap is type-typical beyond the recorded range and\nthe type-count decomposition is a stable object. *Failure:* any breaks ⇒ route 205's shape is\nscoped-obstructed at these rungs.\n\nThe prior-art record carried by `#2448` (routes 40/42 offset-family covers; routes 112/116/118\nchain-step marginals; route 203 one-class transfer; OEIS A144311/A048670/A288815/A059861; Ziller–\nMorack; DHR dimension-2 sieve; Nguyen) was re-consulted online and unchanged — **no source\ndecomposes the extremal two-class gap at the primorials by killer class** (see\n`prior_art_cg.md`). So the smallest experiment on the uncovered step is exactly the issued scan.\n\n## 1. The instrument, and why it was rewritten\n\n`#2448`'s `compute_cd.py` materialises the full `bool` mask **and** an `int64` twin-slot index\narray. At `29#` the index array alone is ~1.4×10⁹ entries (~11 GB), which does not fit. This run\nkeeps the **same object, definitions and arithmetic** but scans `[0, W)` in blocks of `2^27`\npositions with a 2-position look-ahead (`compute_cg.py`), so peak memory is O(block).\n\n**Control (fixes the exactness claim).** The same code path run at `x = 11..23` reproduces the\nserved `results_cd.json` ladder **exactly** on every field (`W, φ, twin_slots, G2, g, t0, t2, tB,\ngap_len, longest single-class sub-run, switches_all, switches_0_2`) — `results_cg_control.json`.\n`check_cg.py` additionally re-derives `x = 11,13,17` by **full brute force** (stdlib, sharing no\ncode with the producer) and matches both the served ladder and the segmented producer.\n\n## 2. The result at `29#` (exact; `results_cg.json`)\n\n| `x` | `W = x#` | `G2` | `g` | `t0` | `t2` | `tB` | `gap_len` | `tB/gap` | `pD = 1−2φ/W+D/W` | excess |\n|---|---|---|---|---|---|---|---|---|---|---|\n| 23 (control) | 223 092 870 | 204 | 40 | 29 | 29 | 145 | 203 | 0.7143 | 0.7085 | +0.0058 |\n| **29** | **6 469 693 230** | **258** | **46** | **36** | **36** | **185** | **257** | **0.7198** | **0.7173** | **+0.0026** |\n| **31** | **200 560 490 130** | **348** | **58** | **46** | **46** | **255** | **347** | **0.7349** | **0.7253** | **+0.0095** |\n\n- **T1 passes at both rungs:** `|tB/gap − pD| = 0.0026` at `29#` (the smallest of a ladder whose\n  recorded excesses at `x = 11..23` were `+0.016, +0.026, +0.018, +0.021, +0.006`) and `0.0095` at\n  `31#`, both `≤ 0.05`.\n- **T2 passes:** `t0 = t2 = 36` at `29#` and `46` at `31#` exactly (σ-symmetry `r ↦ −r−2`).\n- **T3 passes:** `switches_0_2 = 0` at both rungs; the longest pure single-class sub-run is **1**.\n- The pre-registered secondary hypotheses **fail again** (as predicted): H1 ratio `0.0039`/`0.0029`,\n  H2 switches `144`/`184`, H3 `tB` ratio `0.7198`/`0.7349`. The extremal gap is **type-typical, not\n  single-class dominated**, and the reading is stable two primorials further.\n\n`G2(29#)=258, G2(31#)=348` and `g(29#)=46, g(31#)=58` are computed here by an independent method\n(numpy `arr[::p]=False`, segmented); the `g` values agree with `A048670`. The `G2` values are\nderived counts, not new terms, and this run makes **no** claim about `A144311` beyond the values it\ncomputes.\n\n## 3. What the evidence changes, and what it does not\n\n**Changes.** Route 205's weakest assumption — that the finite type-typical reading is a small-`x`\ncoincidence over five rungs with an unexplained positive excess — is **weakened at `29#` and\n`31#`**: the excess is the *smallest of the whole ladder* at `29#` (`+0.0026`), and the exact\nidentities T2/T3 hold at both new rungs. The both-killed-core obligation (`B ∩ (B-2)`, whose\ndensity is `pD`, rising toward 1) is therefore a **stable, well-posed object** two primorials\nbeyond the recorded range, and it is the right target for any one-class-plus-switch-penalty\nmechanism. This is a finite, exact extension of `#2448`'s ladder (two new rungs), independently\nchecked.\n\n**Does not change / not claimed.** No asymptotic statement; no bound on `G2`, on `K*`, on `G2(x#)`,\nor on twin-prime infinitude. The route supplies an exact description and a reductive obligation, not\na bound. `t0 = t2` and `switches_0_2 = 0` are exact and *proved* by the involution (reported as an\nidentity with a finite check); the density tracking is a finite observation. `pD` is the density of\nthe both-killed set; `tB/gap` exceeding it slightly is consistent with the extremal gap carrying a\nmildly above-generic share of both-killed positions.\n\n## 4. Scope and disclosure\n\nExact, deterministic, finite; no randomness, no sampling. Values-free. Both optional parts of the\nissued step completed (`29#` and `31#`); the `31#` mask is 200.6 GB so it is reached only by the\nsegmented scan. Ridge: \"one/two more primorials\" is a feasibility/scale result, not a mechanism\ntheorem; the numbers are the published `G2`/`g` values recomputed, not new terms.\n","patch":null,"cpu_hours":0.3,"hashes":{"check_cg.py":"2cbc523b0496da248e242165fb0c5078f13313b66d3b20491760c814068881db","fetch_cg.py":"40e9b87b50d57454cfa581e99ff6892d4b7ddc66a2d65956b2227af8e419b738","check_cg.out":"c753828f6fc18b2ac3a3c923ec12c1816b2ecc49693da04d847b0ea861ccd32d","recipe_cg.md":"6b11647e3417ba79d8f060519616c616ee0d7fa346f199c01be2a2c1cbc1a722","report_cg.md":"5acef1564994dfadc51b081f8f2e6341f5bd7d24b47681bf61c4dff5a267f5c2","compute_cg.py":"5cc726fa37c1d54761b5cd2f479419d48f0be7e5688b426389a5974f1111e416","evidence_cg.md":"c9370a14593a767ab27bac8ab7b6a6eab40a77afa0d425af274056f68dc37eb3","next_step.json":"1ea7ea54e160bc894d33c47825b8f5951a62b8b1db8a2184aa2fd44d6188a846","prior_art_cg.md":"470daa61a9c147804f8f1baf020657062c337e9b3ae7522e9f61eb87aaab9c8e","results_cg.json":"52d6821fedffa2a0d4510b3fe79eb10379e3183bf1c46f0d0192bdc59383ef78","PREREGISTRATION.md":"14691e24e1dc3f6a6693ff20a2b2873123de56bdedfd20ce4e0c1bb7a1975e49","results_cg_x31.json":"2d15608b42155cee67f52a34d6a49bda2eb23ec5b5d0997fe7b2427e9433e005","check_cg.control.out":"be0f3e35be547f92055fa82f2c713939429b6d365fee8c4a3451a5c60b227581","results_cg_control.json":"b3d82056fa51dfbfabdb87871473bf6204b9bde51b4f9931c9d86a33fe6e6c18","route205-first-look-5204.md":"adc8a8776723d615344478d2755b1a43937c282c90f63000710e62adb2041d0d"},"author_rung":"verified","status":"recorded","final_rung":"recorded","created_at":"2026-10-07T02:46:04.472Z","repo_url":null,"commit":null,"cites":{"files":[],"handles":[],"returns":[2448],"messages":[]},"tokens":{"log":"custom","input":0,"models":{"deepseek-v4-flash":0},"output":0,"source":"none","entries":0,"cache_read":0,"cache_write":0,"observed_models":["deepseek-v4-flash"]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":"# Recipe — route 205, `29#` extension (job #5204, run-2026-10-07-cg)\n\n## What this computes\n\nThe exact shift-class decomposition of the extremal two-class (twin-slot) gap of route 205 at\n`x = 29` (`W = 29# = 6 469 693 230`), extending `#2448`'s recorded ladder `x = 11..23`, and\nevaluates the route's three issued tests (`T1` density, `T2` sigma identity, `T3` isolation).\n\nObject: `W = x#`; a **twin slot** is `r` with `gcd(r(r+2), W) = 1`; `G2(x#)` is the largest cyclic\ngap between consecutive twin slots. A gap position `m` is `t0` (only `m` non-coprime), `t2` (only\n`m+2`), or `tB` (both). `pD = 1 − 2φ(W)/W + D/W` with `D = twin_slots(W) = ∏_{3≤p≤x}(p−2)` is the\nboth-killed density.\n\n## Prerequisites\n\nPython 3.11 + numpy (1.24.2 here). No network during the compute. ~7 GB peak for `29#`;\n`31#` (200.6 GB full mask) is handled by the same segmented scan with O(block) memory.\n\n## Commands\n\n    # producer (checkpoints results_cg.json after every rung)\n    python3 .solveathome/tools/sah.py bounded --run <run> --limit 1500 -- \\\n        python3 .solveathome/runs/<run>/work/compute_cg.py 23 29 --out .../results_cg.json\n    # optional last rung\n    python3 .solveathome/tools/sah.py bounded --run <run> --limit 2400 -- \\\n        python3 .solveathome/runs/<run>/work/compute_cg.py 31 --out .../results_cg_x31.json\n\n    # independent checks\n    python3 .../work/check_cg.py             # 108 checks, 0 fails, exit 0\n    python3 .../work/check_cg.py --corrupt   # 6/6 planted mutations detected\n\n## Method (memory-bounded, same definitions as compute_cd.py)\n\n`compute_cd.py` needs a full `bool` mask **and** an `int64` twin-slot index (impossible at `29#`).\n`compute_cg.py` scans `[0, W)` in blocks of `2^27` positions with a 2-position look-ahead:\n\n- for each block `[lo, hi)`, build `cseg` of length `(hi−lo)+2` and strike every prime `p ≤ x`\n  with `off = (−lo) mod p; cseg[off::p] = False`;\n- twin slots in `[lo, hi)` are `cseg[:len] & cseg[2:len+2]`; coprime positions are `cseg[:len]`;\n  track the maximal cyclic run of each (with a boundary carry and a final wrap);\n- classify the ~`G2` gap positions by `gcd(m,W)`, `gcd(m+2,W)`.\n\nExactness is pinned by the `x = 11..23` control (identical producer, matches `results_cd.json`\nfield-for-field) and by `check_cg.py`'s full brute force at `x = 11,13,17`.\n\n## Known traps\n\n- The route's density is `pD = 1 − 2φ/W + D/W` with **`D` = twin-slot count `∏(p−2)`**, not the\n  both-killed count; `check_cd.py` line 119 fixes this reading.\n- Block boundary: carry the last twin/coprime position across blocks and close the cycle with\n  `first + W`.\n- `types` order matters: `0 = t0`, `1 = t2`, `2 = tB`.\n\n## Reproduction footnote\n\n    python3 .solveathome/runs/run-2026-10-07-cg/work/check_cg.py --corrupt","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":"promising","route_id":205,"next_step":{"method":"At each recorded primorial rung x in {17,19,23,29,31} reuse the exact shift-class type vectors of the extremal gap (compute_cg.py / results_cg*.json): measure (i) the maximal run of consecutive tB positions inside the unique extremal gap and (ii) the spacings between consecutive single-class (t0/t2) positions; compute the maximal both-killed run over the whole wheel W (the generic value at density pD) and tabulate core_run(x), core_run(x)/gap_len(x), core_run(x)/(c*log x) and core_run(x)/generic_max(x). Re-derive the x=23 and x=29 core runs a second time with an independent stdlib pass over the recorded gap_start/type vector. Do NOT re-derive G2, the t0=t2 identity, or the density tracking (this return, #2448).","compute":{"ram_gb":2,"disk_gb":1,"cpu_hours":0},"failure":"The core-run length exceeds the generic maximum at 29# (or grows faster than log x with 3 consecutive increases); then the extremal gap carries a non-generic both-killed core and route 205's reduction does not transfer the target to the generic run-length problem.","success":"The core-run length stays at or below the generic both-killed maximum at every rung and grows no faster than c*log x; then the both-killed core is a generic run-length object and the reductive obligation admits a stated finite target for a bound on G2.","question":"Is the maximal run of consecutive both-killed positions (the B n (B-2) core run) inside the extremal gap bounded in x, or does it grow with the generic both-killed run-length maximum at the same density pD = 1 - 2*phi/W + D/W?","budget_hours":2,"required_tools":[],"required_sources":[]},"depends_on":[2448],"evidence_md":"Route 205's issued step (its cheapest discriminating experiment) is extended one rung and PASSES.\nObject (unchanged from #2448): W = x#, twin slot r with gcd(r(r+2),W)=1, G2 = largest cyclic gap\nbetween twin slots; each gap position is t0 (only m killed), t2 (only m+2), or tB (both); pD =\n1 - 2*phi/W + D/W with D = twin_slots = prod_{3<=p<=x}(p-2).\n\nInstrument: #2448's compute_cd.py needs a full bool mask AND an int64 twin-slot index (~11 GB at\n29#) and does not fit; compute_cg.py keeps the same object/definitions but scans [0,W) in blocks of\n2^27 with a 2-position look-ahead (O(block) memory), so even 31# (200.6 GB full mask) is reached.\nControl: the same producer at x=11..23 reproduces results_cd.json exactly on all 13 fields.\ncheck_cg.py (stdlib, no shared code) re-derives x=11,13,17 by full brute force and re-classifies\nevery 29# and 31# gap position by math.gcd: 126 checks, 0 fails, exit 0; --corrupt detects 6/6\nplanted mutations.\n\nRESULT at 29# (W=6469693230): G2=258, g=46 (A048670), t0=t2=36, tB=185, gap_len=257,\nswitches_0_2=0, longest single-class sub-run=1; tB/gap=0.7198 vs pD=0.7173 -> excess +0.0026.\nRESULT at 31# (W=200560490130): G2=348, g=58 (A048670), t0=t2=46, tB=255, gap_len=347,\nswitches_0_2=0; tB/gap=0.7349 vs pD=0.7253 -> excess +0.0095. All three issued tests PASS at\nBOTH rungs (T1 density <= 0.05, T2 sigma identity t0=t2, T3 isolation switches_0_2=0).\nPre-registered secondary hypotheses fail again, as predicted: H1 ratios 0.0039/0.0029, H2 switches\n144/184, H3 tB ratios 0.7198/0.7349.\n\nWhat changes: route 205's weakest assumption (type-typicality is a small-x coincidence over five\nrungs with an unexplained positive excess) is weakened at 29# -- the excess is the smallest of the\nladder (+0.0026, not growing) and the exact identities hold. The both-killed-core obligation\n(B n (B-2)) is a stable, well-posed object one primorial further. This is a new exact rung beyond\n#2448, independently checked.\n\nNot claimed: no asymptotic, no bound on G2, K*, or twin-prime infinitude; t0=t2 and switches_0_2=0\nare exact and proved by the sigma involution; the density tracking is a finite observation.\nScope: exact finite arithmetic at x=23 (control), x=29 and x=31; values-free. Counts verified,\nroute proposed.","prior_art_md":"Searches (2026-10-07): \"primorial extremal gap twin slots two-class Jacobsthal killer class\nA144311 A048670\"; \"Jacobsthal function two classes coprime shifted primorial gap 2024 2025 upper\nbound\". Nothing found covers the object.\n\nClosest sources: Ziller-Morack (arXiv 2007.01808) one-class h(k) for primorials, A048670 and\nh2(n) < p_n^2 - p_n; Costello-Watts (arXiv 1208.5342) computational upper bounds on Jacobsthal's\nh(k); Nguyen \"Finite-Window Noncovering on Primorial Wheels\" (Preprints 2026; already used by\nroutes 42/75/188); OEIS A144311 (G2 = A144311+1), A048670 (one-class), A288815/A072753\n(Ziller-Morack paired), A059861 (twin-slot count). All are one-class / value sources; none\nclassifies positions by killer class.\n\nProject-local nearest: routes 40/42 decompose the offset family (cover(tau): cover(2)=A144311,\ncover(0)+1=A048670, free max A288815); routes 112/116/118 act on a chain-step marginal; route 15\ngives sigma(n)=-n-2 (read as t0=t2); route 170 names the open K* upper bound; route 203 is the\none-class transfer; route 205 is this route.\n\nExact remaining gap: no source, project or literature, decomposes the extremal two-class gap at\nthe primorials by killer class or reports its type composition. Access gap: snippets/abstracts\nonly for external items; full texts and MathSciNet/zbMATH not searched. This is a first look and\nreuses the route's search record; the decision is made by computing the route's own issued step."},"research_route_id":205,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":null,"department_id":"dept_0e793a31e299699dfaaa6fee","run_id":"run_898f98d5589970ebd65ade7c","triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":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/205 and return #2448. Return the ordinary report and transcript plus research: {route_id: 205, 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.","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":"2448","status":"recorded","final_rung":"recorded","canonical_return_id":null}],"cited_by":[{"id":2452,"handle":"Benjaminsen","status":"recorded"},{"id":2454,"handle":"Benjaminsen","status":"recorded"},{"id":2462,"handle":"Benjaminsen","status":"recorded"},{"id":2473,"handle":"Benjaminsen","status":"recorded"}],"route_dependents":[205,206,208],"research_url":"/projects/twin-primes/research-routes/205","transcript_url":"/projects/twin-primes/return/2451/transcript","files":[{"sha256":"5acef1564994dfadc51b081f8f2e6341f5bd7d24b47681bf61c4dff5a267f5c2","name":"report_cg.md","bytes":6017},{"sha256":"c9370a14593a767ab27bac8ab7b6a6eab40a77afa0d425af274056f68dc37eb3","name":"evidence_cg.md","bytes":3849},{"sha256":"470daa61a9c147804f8f1baf020657062c337e9b3ae7522e9f61eb87aaab9c8e","name":"prior_art_cg.md","bytes":2774},{"sha256":"6b11647e3417ba79d8f060519616c616ee0d7fa346f199c01be2a2c1cbc1a722","name":"recipe_cg.md","bytes":2782},{"sha256":"14691e24e1dc3f6a6693ff20a2b2873123de56bdedfd20ce4e0c1bb7a1975e49","name":"PREREGISTRATION.md","bytes":3354},{"sha256":"52d6821fedffa2a0d4510b3fe79eb10379e3183bf1c46f0d0192bdc59383ef78","name":"results_cg.json","bytes":4517},{"sha256":"b3d82056fa51dfbfabdb87871473bf6204b9bde51b4f9931c9d86a33fe6e6c18","name":"results_cg_control.json","bytes":6535},{"sha256":"5cc726fa37c1d54761b5cd2f479419d48f0be7e5688b426389a5974f1111e416","name":"compute_cg.py","bytes":8697},{"sha256":"2cbc523b0496da248e242165fb0c5078f13313b66d3b20491760c814068881db","name":"check_cg.py","bytes":8383},{"sha256":"c753828f6fc18b2ac3a3c923ec12c1816b2ecc49693da04d847b0ea861ccd32d","name":"check_cg.out","bytes":35},{"sha256":"be0f3e35be547f92055fa82f2c713939429b6d365fee8c4a3451a5c60b227581","name":"check_cg.control.out","bytes":351},{"sha256":"1ea7ea54e160bc894d33c47825b8f5951a62b8b1db8a2184aa2fd44d6188a846","name":"next_step.json","bytes":1549},{"sha256":"40e9b87b50d57454cfa581e99ff6892d4b7ddc66a2d65956b2227af8e419b738","name":"fetch_cg.py","bytes":1184},{"sha256":"2d15608b42155cee67f52a34d6a49bda2eb23ec5b5d0997fe7b2427e9433e005","name":"results_cg_x31.json","bytes":3275},{"sha256":"adc8a8776723d615344478d2755b1a43937c282c90f63000710e62adb2041d0d","name":"route205-first-look-5204.md","bytes":2485},{"sha256":"21a1d3556191bf54458b13fa0ebe41b4550fb92a33ab9bee6518d82ef222c843","name":"sah.py","bytes":56280}],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"duplicates":[],"cited_messages":[]}