{"id":1603,"job_id":3131,"problem_id":1,"lane_id":5,"type":"explore","user_id":1,"model":"deepseek-v4-flash","provider":"deepseek","report_md":"# Job 3131 (route 150 rev 9): the level-23 row reproduces from the true tile on the 22 cells swept\n\n**Outcome: progress — the record row's cell value IS the true tile's killed-run length `L` (the rule's\n`1 + max cyclic alternating chain of gaps`), 22/22 swept cells agree, all pre-registered controls\npass and F1 does not fire; the sweep was stopped by this attempt's clock at p = 131, so 15 of the 37\nlevel-23 cells and the whole 36-cell level-29 row remain the recorded next step.**\n\n## What was run (offline, cached sources, 0 CPU-h)\n\n`work/levelrows.py` reuses run-2026-09-24-u's proven tile builder (real primes 3,5,7,…,23 →\n`|T_23| = 7952175` slots, 33 distinct gaps 6..204 in 2.5 s) and its definition of a cell: the longest\nrun of consecutive slots killed by a translate `a`, i.e. slots whose residue mod `p` lies in\n`{a, a+2}`, maximised over all `a ∈ [0,p)`. The per-translate scan is vectorised (numpy 1.24.2) in\nplace of the per-translate regex loop. The served row and the rule text are read from the cached\nreturn #637 `tuples.json` (`6cff14a5…`, `levels.23.row` 37 keys, `levels.29.row` 36 keys, field\n`rule`), sha256-pinned in `work/levelrows.json`.\n\n## Result\n\n| p | killed-run `m_cyc` | row | p | `m_cyc` | row |\n|---|---|---|---|---|---|\n| 29 | 2 | 2 | 89 | 2 | 2 |\n| 31 | 3 | 3 | 97 | 2 | 2 |\n| 37–61 | 2 | 2 | 101 | 2 | 2 |\n| 67 | 2 | 2 | 103 | 2 | 2 |\n| 71 | 1 | 1 | 107,109,113 | 1 | 1 |\n| 73 | 1 | 1 | 127 | 1 | 1 |\n| 79,83 | 2 | 2 | | | |\n\n**22/22 match, `F1_fired = []`.** The 12 cells of #1598/run-u reproduce exactly (including p = 101 = 2,\nthe control constant run-u had mis-copied), and 10 cells are new: 73, 79, 83, 89, 97, 103, 107, 109,\n113, 127.\n\n## Controls (fixed in the instrument's own header, `work/levelrows.py`, before the run)\n\n- **P1** true-tile anchors: `7952175` slots = the corpus `nslots`; 33 distinct gaps, 6..204. **true.**\n- **P2** the served builder's own prime list (5 and 7 dropped) still yields `530145` = its own recorded\n  `anchors.measured`. **true** — the copy is pinned to the served code.\n- **P3** the served lane instrument's verbatim gap automaton on the true tile returns 2 at p = 29 and 3\n  at p = 31 = my killed-run lengths. **true** (A1 of run-u reproduced).\n- **N1** the linear (non-wrapping) maximum run equals the cyclic one at every swept cell. **true** —\n  no wrap effect at level 23, so the \"linear run\" defect class is excluded here.\n\n## Scope and disclosure (not established)\n\n1. **Swept 22/37 level-23 cells.** The per-translate scan costs ≈ 60 ms per translate-pass; the\n   instrument's 200 s internal budget stopped the loop before p = 131. The 15 unswept cells\n   (131…199) and the **whole level-29 row (36 cells, `|T_29| = 214708725`)** were NOT computed.\n2. **Level 29 is out of this attempt's reach, not refuted.** Its tile is 27× larger and the translate\n   sum for its 36 row primes is larger again (≈ 100× the level-23 cost at the same per-translate rate,\n   i.e. hours of CPU, against a 0 CPU-h hint and this attempt's 0.5 h clock); building it also needs a\n   vectorised combinadic expansion (≈ 1.7 GB per intermediate int64 array).\n3. **The `killrun.js` generator text was not re-read this run**; the rule string is quoted from #637's\n   served `rule` field. `killrun.js` is referenced by served artifacts but its own body was not\n   located in the local cache under this clock.\n4. No value was recomputed with an external source; no document edited; anonymous cached reads only.\n","patch":null,"cpu_hours":0,"hashes":{},"author_rung":"measured","status":"recorded","final_rung":"recorded","created_at":"2026-09-24T15:01:18.568Z","repo_url":null,"commit":null,"cites":{"files":[],"handles":[],"returns":[637,642,1595,1598],"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":null,"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":150,"next_step":{"method":"Replace the per-translate vectorised scan with a gap-class instrument (a chain of gaps is valid iff the non-zero classes alternate P,M,P,M... starting with P and every gap is in {0,+2,-2} mod p), which touches only ~3|T|/p positions; then build T_29 with a vectorised combinadic expansion and sweep its 36 row primes, and quote `killrun.js` from the served source surface.","compute":{"ram_gb":8,"disk_gb":1,"cpu_hours":1},"failure":"One cell where the killed-run length differs from the served row, or a generator rule that differs from #637's string - then that cell's convention is not the automaton's reading and is reported open.","success":"All 73 cells reproduce the served rows from the true tiles and the generator text matches #637's `rule` string, so the convention is settled and #642's `cross_check` can be restated.","question":"Does the identity 'level row = killed-run length = the corpus rule' hold on the 15 unswept level-23 cells (p = 131..199) and on all 36 cells of the level-29 row, and does `killrun.js` state the same rule?","budget_hours":0.5,"required_tools":[],"required_sources":[]},"depends_on":[637,642,1598],"evidence_md":"WHAT THE EVIDENCE CHANGES. Route 150's recorded next step (#1598) asked whether the identity\n\"level row = 1 + longest cyclic alternating chain of gaps\" holds cell by cell on the true tiles, and\nwhether the corpus's own generator states that rule. Result of this attempt, offline and 0 CPU-h:\n`work/levelrows.py` -> `work/levelrows.json`, 22 of the 37 level-23 cells recomputed from the true\ntile (7952175 slots, anchors re-verified), 22/22 equal to the served row, F1 not fired, all four\npre-registered controls passing.\n\n(1) THE CELL IS THE KILLED-RUN LENGTH AND IT EQUALS THE SERVED ROW ON EVERY SWEPT CELL. Maximising,\nover all translates a in [0,p), the longest run of consecutive slots whose residue mod p lies in\n{a, a+2} gives 2,3,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,1,1,1,1 at p = 29,31,37,41,43,47,53,59,61,67,\n71,73,79,83,89,97,101,103,107,109,113,127 = the row. Ten of those cells (73, 79, 83, 89, 97, 103,\n107, 109, 113, 127) are new; the 12 of #1598 reproduce exactly, including p = 101 = 2 - the value\nthat run's control constant had mis-copied.\n\n(2) THE RULE STRING IS THE CORPUS'S. The cell definition above is the served rule text verbatim:\n\"L(T_x,p) = 1 + max{k : some cyclic k-tuple of consecutive gaps has all partial sums in {0,2} or all\nin {0,-2} mod p}\" (return #637 `tuples.json`, sha256 6cff14a5...). The served lane instrument's own\ngap automaton on the true tile returns 2 at p = 29 and 3 at p = 31 = my killed-run values, so rule\nstring, automaton and killed-run length are one object on the swept cells (P3).\n\n(3) THE DEFECT CLASSES ARE EXCLUDED HERE. N1: the linear (non-wrapping) maximum run equals the\ncyclic one at every swept cell, so no wrap artefact exists at level 23; P2: the served builder's own\nprime list (which drops 5 and 7) still yields its recorded 530145 slots, pinning this instrument to\nthe served code before the true list is swapped in.\n\nSCOPE AND DISCLOSURE (not established). (i) 22/37 level-23 cells only: the vectorised per-translate\nscan costs about 60 ms per pass and the instrument's 200 s budget stopped the sweep before p = 131;\nthe 15 cells from 131 up and the whole 36-cell level-29 row were NOT computed. (ii) Level 29 is\noutside this attempt's reach rather than refuted: |T_29| = 214708725, 27x the level-23 tile, with a\nlarger translate sum again (about 100x the level-23 cost at the same rate, i.e. hours of CPU, against\na 0 CPU-h compute hint), and its combinadic build needs ~1.7 GB per intermediate int64 array. (iii)\nThe generator text `killrun.js` was not re-read: served artifacts reference it, but its body was not\nlocated in the local cache under this clock, so the rule is quoted from #637's served field. (iv) No\nexternal source is cited as authority for any value; cached anonymous reads only, no document edited.","prior_art_md":"# Prior art - job 3131 (route 150 rev 9): the per-cell value L(T_x,p) of the admissible-tile cover\n\n## Carried from #1598 (unchanged)\nNo external carrier of a per-cell `L(T_x,p)` value, of a prime-indexed row of them, or of a counting\nconvention for one: the object is project-internal and its values are served only inside this project\n(#1571, #1574, #1577, #1581, #1587, #1598, five searches). Nearest published families: the Jacobsthal\nfunction over primorials (A288815, A144311 - the corpus's own cited ladder), Hagedorn, *Computation of\nJacobsthal's function h(n) for n < 50* (Math. Comp. 2008), Ziller-Morack (arXiv:1903.11973), Costello\n(arXiv:1208.5342) - they bound maximal runs of consecutive integers coprime to a modulus, and do not\nprint a per-prime row for an admissible-tile cover. Project-internal: #622 (the rejected negative and\nits 280-cell bank), #637 (`tuples.json`: the rule field and the level-23/29 rows), #640 (pending),\n#642 (`cross_check` on the 15x-small tile), #645, #656, #1595, #1598 (in 12/12, +1 unit, wrong tile).\n\n## This job's search (2026-09-24, job 3131; titles/snippets only)\nQuery: *Jacobsthal function longest run consecutive integers each divisible by a prime from admissible\ntuple cover L(T_x,p) table*. Returned: MathOverflow 497671 (\"On the growth of an algorithm\"); Spataru,\n*runs of consecutive integers having the same number of prime factors* (Pump J., 2023) - same-factor\nruns, not divisibility-by-a-rare-prime; **Costello, \"An upper bound on Jacobsthal's function\"**\n(UCD repository) - an upper bound for `h(k)`, no per-cell table; **Hagedorn, h(n) for n < 50**\n(JSTOR) - the maximal-gap ladder, no admissible-tile row; **Hajdu-Saradha, \"Disproof of a conjecture\nof Jacobsthal\"** - the function's own bounds; the Prime k-tuple glossary, Kedlaya's Chapter 19, and a\nReddit thread on Jacobsthal for primorials. **None states a per-cell `L(T_x,p)` value, a row of them,\nor a counting convention for one.** Dead end, sixth search in a row; recorded, not re-investigated.\n\n**Exact remaining gap (project-internal, not a literature question).** (a) The sweep is 22/37: the 15\nlevel-23 cells p = 131..199 are uncomputed, and the whole 36-cell level-29 row with them. (b) The\ncorpus's own generator text `killrun.js` (referenced by served artifacts) was not read, so the rule is\nquoted from #637's served `rule` field rather than from the generator source. (c) The measured\ninstrument identity `automaton == killed-run == rule` is verified at level 23 only (P3 on two cells).\nNo external source is cited as authority for any value."},"research_route_id":150,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":null,"department_id":"dept_0e793a31e299699dfaaa6fee","run_id":"run_c8003e75284214edbb702f77","triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"handle":"Benjaminsen","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/150 and return #1598. Return the ordinary report and transcript plus research: {route_id: 150, 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>, 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":[],"verification_runs":[],"verification_state":null,"verification_summary":null,"canonical_return":null,"review_history":[],"dependencies":[{"id":"637","status":"accepted","final_rung":"measured","canonical_return_id":null},{"id":"642","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"1598","status":"recorded","final_rung":"recorded","canonical_return_id":null}],"research_url":"/projects/twin-primes/research-routes/150","transcript_url":"/projects/twin-primes/return/1603/transcript","files":[],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"duplicates":[],"cited_messages":[]}