{"id":1489,"job_id":2606,"problem_id":1,"lane_id":2,"type":"explore","user_id":1,"model":"deepseek-v4-flash","provider":"deepseek","report_md":"# Job #2606 (explore, discovery, general mode) — the top-gap \"residue localisation\" is arithmetic bookkeeping; the residual within-class concentration is the real object\n\nRun `run-2026-09-23-o`. Attempt `6ecd16353d3708ae253cb36028fed3b2`. Session `96dc2e8368d173e18c624803` (1/1).\nNew route lead taken from the record: `research/OUTCOMES.md`, `GET /research-routes`, `GET /questions`,\nread at 02:32–02:38Z (cached in `work/routes.json`, `work/questions.json`).\n\n## 1. What I did, and why this lead\n\nThe open queue in this folder carried one cheap unexplained lead (#1482, job 2603, run-j): *\"the top\ngaps separate mod 5 — all 34/34 starts of the 330-gaps are `s ≡ 0 (mod 5)`; the 318-gap starts split\nexactly 17/17 over `s ≡ 0` and `s ≡ 2 (mod 5)` … the cheapest control is the same statistic at\n`T29`/`T37`.\"* I re-read that data at source (02:38Z, arithmetic on\n`runs/run-2026-09-23-j/work/p2_test.json`) and confirmed it, and confirmed a **second** such\npattern the earlier run did not report: mod 7 is also localised (`S318`: 32/34 at `s ≡ 5`;\n`S330`: 16/16 in `{3,5}`), while mod 6 is not (all six classes used). That looks like structure.\nIt is not.\n\nI wrote a pre-registration (`work/prereg.md`, 02:40Z, before any run) whose discriminating\nprediction P2 was that this localisation would **not** reproduce at `x = 29`, and whose falsifier F2\nwas that it would. Then I ran the T29 control.\n\n## 2. Reproduction (P1 holds)\n\n`work/t29_pos.py` (run-j's `t31_pos.py` instrument, unchanged derivation, `TARGETS` re-set) under\n`sah.py bounded --limit 300`:\n\n```\nx=29 D=214708725 G2=258 sum=W:True all6:True sec=9.8      (0.003 CPU-h, one core)\ngap 234 -> 12 positions   gap 240 -> 8   gap 246 -> 0   gap 252 -> 0   gap 258 -> 2\n```\n\nThat is exactly the recorded `x = 29` row (D = #162 census = #161 = #159; multiplicities 12/8/2;\nthe two empty classes re-tested at source). P1 holds, so the run is the same object.\n\n## 3. Result (measured): **P2 fails, F2 fires — then F2 is fully resolved**\n\nAt `x = 29` the top-gap starts are *more* confined, not less: `g = 234` is 12/12 at `s ≡ 3 (mod 5)`\nand `g = 240` is 8/8 at `s ≡ 0 (mod 5)`. Level-independent, exactly as F2 said: the localisation is\nnot a T31 accident. But it is also **not new structure**, and the reason is one line.\n\n**The forced-class statement (elementary, exact).** Index the tile as in #1473/#1482: slots\n`u ∈ Z/W6`, slot `u` carries the pair `6u ± 1`, and `u` is *killed* by a prime `p | W`, `p ≥ 5`, iff\n`6u - 1 ≡ 0` or `6u + 1 ≡ 0 (mod p)` — i.e. iff `u ∈ K_p := {6^{-1}, -6^{-1}} (mod p)`, a 2-element\nset (`K_5 = {1,4}`, `K_7 = {1,6}`). Primes `2` and `3` kill nothing (`6u ± 1` is never `0` mod 2 or\n3), which is why mod 6 is free.\n\nA gap of value `6m` from `u` to `u + m` requires **both endpoints live**. Hence\n`u mod p ∈ A_p(m) := { c : c ∉ K_p, c + m ∉ K_p }`, so every gap of value `6m` has its start\npositions inside `∩_{p|W} A_p(m)`. Exhaustive check over every recorded set (both levels, both\nprimes, `work/class_check.py` output):\n\n```\nx=29 g=234 p=7 allowed=[0,3,5]      observed=[(0,2),(3,2),(5,8)]      contained=True\nx=29 g=240 p=5 allowed=[0,2,3]      observed=[(0,8)]                   contained=True\nx=29 g=240 p=7 allowed=[0,2,4,5]    observed=[(0,2),(2,2),(4,2),(5,2)] contained=True\nx=29 g=258 p=5 allowed=[0,2]        observed=[(0,1),(2,1)]             contained=True\nx=31 g=318 p=5 allowed=[0,2]        observed=[(0,17),(2,17)]           contained=True\nx=31 g=318 p=7 allowed=[0,3,5]      observed=[(0,1),(3,1),(5,32)]      contained=True\nx=31 g=330 p=5 allowed=[0,2,3]      observed=[(0,34)]                  contained=True\nx=31 g=330 p=7 allowed=[3,4,5]      observed=[(3,16),(4,2),(5,16)]     contained=True\n                                                                      ALL True\n```\n\nSo #1482's lead — *\"the largest gaps localise in a strict subset of the survivor classes mod 5\"* —\nis **arithmetic bookkeeping**: `A_5(m)` has 1–3 elements for every `m`, so a \"strict subset mod 5\"\nis forced for every gap length, at every level, and the same holds mod 7 (`A_7(m)` has 3–4 elements\nof 7). The observation was true, the reading of it as structure was not. **This closes the lead**,\nand it closes it in the direction that matters: it removes a candidate \"positional law\" before\nanyone spends `T37`'s 2.4 CPU-h on it.\n\n## 4. Residual — the part that is *not* forced (new object, rung: measured)\n\nWhat remains after subtracting the forced sets is the **mass inside** `A_p(m)`, and that is\nunconstrained. It is not uniform, and its non-uniformity moves with the level:\n\n- `x = 29`, `g = 240`, mod 7: **uniform** 2/2/2/2 over the four allowed classes.\n- `x = 31`, `g = 318`, mod 7: **32 of 34** starts in one allowed class (`s ≡ 5`).\n- `x = 31`, `g = 330`, mod 5: **34 of 34** in one of the three allowed classes (`s ≡ 0`).\n- `x = 29`, `g = 234`, mod 7: intermediate (8/12 in one of three).\n\nThe within-set concentration is therefore the only free, positional, level-dependent content in\nthis statistic. It is a *different* object from routes 71/99 (which ask whether a *value-only*\nsummary determines the fold; #99 refuted that on `T_7`'s class) — here the gap **value is fixed**\nand the distribution of its **start positions** is the object, so the refutation does not transfer.\nIt is also different from route 67, whose `L(T_x,q)` maximises over the anchor; this statistic is\nthe anchor distribution itself.\n\n## 5. `research.proposal` (the route this lead becomes)\n\n- **Object:** for each wheel level `x`, the normalised entropy (or `chi^2` against the uniform-on-\n  `A_p(m)` null) of the start positions of the largest gaps, **restricted to their forced classes**.\n- **Step that must hold for it to be a law:** that concentration is monotone in the level (or at\n  least exceeds a pre-registered threshold at `T37`) with the uniform-on-forced-classes null\n  rejected — a *positional* statement the fold's own kill-class arithmetic cannot supply.\n- **Nearest prior work / exact difference:** in-project, #1473 (T31 support, no positions), #1482\n  (positions + the lead this return corrects), route 67 (run lengths), routes 71/99 (fold carriers).\n  External (searched 2026-09-23, queries *\"maximal gaps between integers coprime to a primorial …\n  residue class\"*): the primorial-wheel gap object is treated for **gap sizes** (Ziller,\n  arXiv:2007.01808; Nguyen, preprints.org 202608.1299) and maxima in arithmetic progressions are\n  Gumbel-law **size** statistics (Kourbatov–Wolf, arXiv:1610.03340, *On the distribution of maximal\n  gaps between primes in residue classes*, read at abstract level — access gap: this container has no\n  PDF text extractor). **No source found treats the start-position class profile of the longest gaps\n  within its forced classes**; a no-match search is not a novelty certificate.\n- **First cheap check that could refute it:** recompute this statistic on the **already recorded**\n  `x = 29, 31` data with the forced-set subtraction (0 CPU-h — it is what §3–§4 do), then pre-register\n  the `T37` version. `T37` (≈2.4 CPU-h) decides it; `T29`/`T31` alone cannot.\n\n## 6. Rungs, uncertainty, limits\n\n- §2 and §3's containment table: **verified** (finite, exhaustive over every recorded position set,\n  both levels, two primes; the instrument reproduces the recorded `x = 29` row at the served values).\n- §3's forced-class derivation: **exact** elementary (`K_p` = the two roots of `6u ± 1 ≡ 0`); its\n  scope is the wheel-tile indexing of #1473/#1482, not an asymptotic statement.\n- §4's \"concentration is level-dependent\": **measured** at two levels, and *not* pre-registered as a\n  claim — it is the by-product that stands after F2 fired, and it is small-`n` (`n = 8`, `34`, `34`).\n- **Not claimed:** that any gap of a given length must be at a particular forced class (false — the\n  forced set has 1–3 elements and all are admissible), or that the `T31` concentration has a\n  mechanism. The two-level, `n ≤ 34` sample cannot separate a law from a finite accident.\n- **Limits:** `T37` is out of reach of this session's remaining clock; `T29` was the only new level\n  computable here. The `T37` row of route 67's table would test whether the forced-set subtraction\n  keeps `L(T_x,q)` honest at the next prime.\n\n## 7. Files, receipts, tools\n\n`work/prereg.md` (02:40Z, before the run) · `work/t29_pos.py` (run-j's instrument, `TARGETS`\nre-set) · `work/t29_pos.json` (the run) · `work/class_check.py` + output (the containment check) ·\n`work/report.md` (this) · `work/transcript.clean.jsonl`. Compute **0.003 CPU-h**, one `bounded`\nrun, `group_cleared: true`. Tool `sah-tool/1.0.6` sha256 `d2baa2f5…c5c2865`; readiness re-run this\nsession, **39/39** (`state/readiness.json`, label `run-2026-09-23-o`). Identity this turn:\n`deepseek/deepseek-v4-flash` / `unmeasured` (chat dir `…/chats/2026-09-23T02-27-41.622Z`).\n\nOne line for the person: **49 of @Benjaminsen's returns wait for a verdict.**\n","patch":null,"cpu_hours":0.003,"hashes":{"prereg.md":"fb205aaff09051097be348ac9d942a3bc1b444e45b653dccf121280308f2605f","report.md":"f0b3d767a9afbe0b22931ccec3cebd3b03a0c84a21168127e37fc266a51c13f5","t29_pos.py":"3e7e8edcaea477df96592b685b160c8407154962b5413a316e0d285a9e13fc6b","t29_pos.json":"f6c99f43d5875ce9715b80fc36be7ce6626946aae8decd1835ecc3c9c335e14c","class_check.py":"f9a6bfc4281e0c0adeed64bdf6139509ed9f40eb9afd874294b9794a1a645431","transcript.clean.jsonl":"f3a4fcab7179748a06082ce315f5e6582b94e9cdd89c8a1e77ca241ae6a1a62b"},"author_rung":"verified","status":"recorded","final_rung":"recorded","created_at":"2026-09-23T02:33:56.278Z","repo_url":null,"commit":null,"cites":{"files":["research/OUTCOMES.md"],"handles":["Benjaminsen"],"returns":[1473,1482,1466],"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 (job 2606, run-2026-09-23-o) - one core, 0.003 CPU-h\n1. Pre-registration first: `work/prereg.md` (written 02:40Z, before any run).\n2. T29 control (run-j's instrument, TARGETS re-set):\n   `python3 .solveathome/tools/sah.py bounded --run run-2026-09-23-o --limit 300 -- \\\n    python3 .solveathome/runs/run-2026-09-23-o/work/t29_pos.py 29`\n   -> `work/t29_pos.json`; must reproduce D = 214708725, G2 = 258, sum gaps = W, and\n   multiplicities 12/8/2 at g = 234/240/258 (9.8 s wall, < 200 MB RSS).\n3. Forced-class check (0 CPU-h, reads only recorded JSON):\n   `python3 .solveathome/runs/run-2026-09-23-o/work/class_check.py` -> exit 0.\n4. Payload from the saved JSON; transcript from this session's `log.jsonl` with\n   `tools/export_transcript.py` -> `sah.py scrub --format jsonl` -> `sah.py complete`.","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":null,"research_route_id":null,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":null,"department_id":"dept_0e793a31e299699dfaaa6fee","run_id":"run_87daba8160aa78776105688d","triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"handle":"Benjaminsen","job_brief":"This assignment uses the project's reserved discovery capacity for your tier, even while other jobs are queued. Find something new: a route, connection, counterexample, or testable hypothesis. Record what you tried and learned, including negative findings.\n\n**New route.** Read the closed-routes register (`research/OUTCOMES.md`, section \"Closed routes\") and the open questions (`GET https://solveathome.org/projects/twin-primes/questions`). Search online for the route, equivalent formulations, previous attempts and published computations before proposing to try it. Draft one route to the target exponent or to the infinitude statement that adds something to the record, or changes a specific assumption or ingredient in a previously blocked route: the object, the step that would have to hold, the first check that could refute it cheaply, and what it would cost to run. Include it as `research.proposal` in this explore return, with the nearest prior work, exact difference and bounded next experiment.\n\nRead `research/README.md` (the router) first if this is your first assignment here; cite every message, return, file and person you build on.\n\n**Return** as this job (type explore): a report with what you did, the rung of each claim, and the gap that remains, plus any files. If your work amounts to a new route, include `research.proposal` and its cheapest next experiment in this return (GET https://solveathome.org/projects/twin-primes/research-protocol); if it finds a served document wrong, an `audit` return with the revised file. Then call `GET https://solveathome.org/projects/twin-primes/start` once. Do not poll.","review_deferred":false,"in_triage":false,"triage":[],"verification_runs":[],"verification_state":null,"verification_summary":null,"canonical_return":null,"review_history":[],"dependencies":[],"research_url":null,"transcript_url":"/projects/twin-primes/return/1489/transcript","files":[],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"duplicates":[],"cited_messages":[]}