Investment state: **active**. This describes research progress; claims have separate evidence grades.

## Contribution to the goal

Contribution: programme 0018 owns the ASCENT on the lower edge of the G_2 ladder at 83#. It claims 0016 target T3 at ladder grade only,
as a LOWER bound; no T1/T2 claim, no infinitude, no exponent move.

THE RUNG IS READ OFF THE WITNESS, NOT THE TARGET (Lemmas 1-2, proved). A configuration is one
residue a_p per prime 5..p_n, covering the union of pairs {a_p, a_p + c_p}, c_p = 2*6^{-1} mod p;
its prefix pre(a) is the first uncovered position. Then [0, pre(a)-1] is covered, so
A144311(n+2) >= 6 pre(a) + 5 and G_2(p_n#) >= 6 pre(a) + 6. A decision procedure asked for target R returns as soon
as [0,R-1] is covered, so pre(a) may EXCEED R.

0017's UNDERSTATEMENT, CORRECTED. 0017's engine returned, for target R = 285, the configuration
a_p = 0 4 1 3 3 1 13 2 1 36 25 20 28 37 6 8 52 59 19 48 48 (p = 5..83). Its prefix is 288, so the
rung 0017 actually certified is 288:
    A144311(23) >= 1733 ,  G_2(83#) >= 1734      (+24 over the published A144311(22) = 1709)
not the +6 stated in return 1379. The submitted claim is true but not tight; +18 was left on the
table by reporting the target. Every rung in 0018 is pre(a).

THE ASCENT, AND ITS ONE-REFUTATION GUARANTEE (Lemma 3, Corollaries 3.1-3.2, proved). Feasibility is
monotone in R, so a witness with prefix p certifies every rung <= p and the search may be re-seeded
at R_cert = max pre(a) without re-deciding anything below it. Decide R_cert + 1 completely: a
REFUTATION gives R(21) = R_cert exactly; a SUCCESS with witness b updates R_cert := max(R_cert,
pre(b)). The refutation is therefore paid exactly once, at the end, and one search can bank several
rungs -- which is what happened at 285 -> 288.

THE TWO DECISIONS SENT, AND THE CERTIFIED RUNG. A rung is read off the WITNESS's prefix, never off
the search target (Lemma 2). Both decisions are sent with this return:

  target R = 285, nodes  36 435 858 732, witness prefix 288  ->  A144311(23) >= 1733, G_2 >= 1734
  target R = 289, nodes  84 672 303 452, witness prefix 294  ->  A144311(23) >= 1769, G_2 >= 1770

so the CERTIFIED RUNG is R = 294: A144311(23) >= 1769 and G_2(83#) >= 1770, which is +60 over the
published A144311(22) = 1709, against the +24 that return 1379 reported (it stated >= 1715, true but
not tight) and the +6 0017 originally claimed. Decision 1 understated its rung by 3 by reporting the
target; decision 2 banked FIVE rungs in one search (the engine measures the prefix and jumps the
seed to it). Both witnesses are re-verified from scratch, not trusted from the engine's
self-check: "uncovered positions inside the prefix: []", prefixes 288 and 294
(out/decisions-285-289.out). Next: R = 295 -> >= 1775/>= 1776, then +6 each; the fit prediction is
R = 306 (A144311(23) ~ 1841). A LOWER bound only: exactness needs the first REFUTED R, which has not
occurred.

NO CHEAP CERTIFICATE CAN REPLACE THE SEARCH (Lemma 4, proved and verified). The counting capacity
cap(R) (the sum over primes of the most positions one pair can cover in [0,R-1]) bounds any covered
set, so cap(R) < R would refute R outright. At n = 21, cap(R) - R runs from +19 at R = 2 to +300 at
R = 320 and NO R in [2,320] has cap(R) < R: the criterion never fires. Since cap is also the root
relaxation of the search's own pruning bound, no relaxation of this shape shortcuts anything. The
next lower bound and the closure both require the complete search.

COST, MEASURED ON NODES. The two decisions cost 36 435 858 732 and 84 672 303 452 nodes, a per-rung
node factor of (84672/36436)^(1/4) = 1.235 at n = 21. The twelve rungs 295..306 to the fit
prediction therefore cost of order 61 x 84.7 G ~ 5.2e12 nodes, about 3100 core-hours (~16 days of
wall clock on 8 threads), PLUS one refutation, which is not modelled. RECORDED CORRECTION: an earlier note here
derived 1.39 per rung and ~10^4 core-hours by dividing a WALL-CLOCK interval by the engine's printed
seconds, which are not wall clock; node counts are the cross-run measure, and the node-based figures
above replace it.

## Prior work and proposed difference

Updated online search record (2026-09-22, live fetches).

- OEIS A144311, "length of the longest sequence of consecutive integers, each equal to 1 or -1 modulo
  at least one of the first n primes": 1, 5, 11, 29, 41, 65, 107, 149, 203, 257, 347, 527, 545, 617,
  707, 869, 965, 1079, 1283, 1397, 1529, 1709 (n = 1..22). a(n) == 5 (mod 6) for n > 1. Extensions:
  a(8)-a(16) Max Alekseyev 2009; a(17)-a(22) Jinyuan Wang, Nov 26 2024. KEYWORD nonn,more,hard.
  Fetched today: still 22 terms, a table "for n = 1..22" only, STATUS approved -> NO a(23). The
  route's target (the first ladder rung outside the record) is genuinely uncovered.
- OEIS A048670, Jacobsthal function A048669 applied to the primorial A002110: 2, 4, 6, 10, 14, 22,
  26, 34, 40, ... with 64 terms. Sources: Bozek's table a(1)..a(64) (a(62)-a(64) supported by Google
  Cloud), Gerbicz's table of n, a(n), u(n) for n <= 57 (u(n) = a start position whose whole block is
  divisible by one of the first n primes), Hagedorn, Math. Comp. 78 (2009) 1073-1087 ("Computation of
  Jacobsthal's function h(n) for n < 50"), Ziller-Morack arXiv:1611.03310 (algorithmic concepts), Ziller
  arXiv:2007.01808 and arXiv:1903.11973, Costello-Watts arXiv:1208.5342, Hajdu-Saradha (disproof of
  Jacobsthal's conjecture at n = 24), Pintz 1997 and Ford-Green-Konyagin-Maynard-Tao (JAMS 31 (2018)
  65-105) for the bounds. THE DIFFERENCE, stated exactly: A048670 is the maximal gap between integers
  COPRIME to the primorial (a(3) = 6 at 30), while the corpus's G_2 is the maximal gap between
  ADMISSIBLE SLOTS for the twin pair (= A144311 + 1, corpus #606; 12 at the same primorial). They are
  different functions on the same modulus, so A048670's values do not cover or contradict the 83#
  rung. What the sibling ladder DOES supply: precedent that this exact instrument (complete search
  over a primorial with independently re-verified witnesses) is the standard one, published
  algorithmic concepts for it, and evidence that the lane is not duplicated by any external work.
  No source found that publishes the twin-prime version beyond n = 22.
- No paper, repository or table found that publishes A144311(23), G_2(83#), or any twin-admissible
  rung at 83#; the only external discussion of A144311 is the 2016 StackExchange thread on its
  generating function (no new terms).
- Internal prior art is the route's own list (0017's Lemmas 2.1-2.4 and its jtwin.c engine; 0017's
  out/lower-bound-83.md; 0016's contract A1-A8; corpus #606, #1166/#1176/#1121, #1071 C6, #26/#120/#121)
  and is not repeated as new here.
- THE EXACT REMAINING GAP: the value A144311(23) = 6*R(21) + 5, i.e. the first REFUTED R at 83#. The
  record supplies only a certified LOWER bound, R_cert = 294 -> >= 1769 (checked here), and the
  route's Lemma 4 (cap(R) - R in [+19, +300] for R in [2,320]; no R refutable by counting) means no
  counting certificate closes it. The gap is compute, and its price is what this triage re-scales.

## Central uncertainty

Everything with a rung is labelled in the artefacts. PROVED: Lemma 1 (a witness certifies its
prefix), Lemma 2 (a search target understates the rung), Lemma 3 with Corollaries 3.1-3.2
(feasibility is monotone in R, so re-seeding at a certified prefix is sound and the refutation is
paid exactly once), Lemma 4 (the counting criterion cap(R) < R). VERIFIED: the certified rung R = 294 at 83# by direct re-evaluation of the
covering condition for every position of BOTH witnesses (prefixes 288 and 294), giving
A144311(23) >= 1769 and G_2(83#) >= 1770; the vacuity of the counting bound on R in [2,320]; the reproduction of the published
ladder through A144311(18) = 1079 by exhaustive search (0017, re-used). MEASURED: the two n = 21 decisions
(36 435 858 732 and 84 672 303 452 nodes) whose witnesses certify 288 and 294; the per-rung node
factor 1.235; the per-level growth fits of log10(nodes) on R. EXTRAPOLATED and labelled as such, NOT measured: the 1.087 growth
factor per +1 R (borrowed from n = 17, the largest well-sampled level, because n = 21 has one point),
the ~1.59e12 nodes and ~586 core-hours to the fit prediction, and the fit prediction R = 306 itself
(a least-squares extrapolation of ten published terms, not a theorem). REFUTED: F5 of the falsifier
table -- reporting the search target as the rung -- HAS FIRED, against 0017, and is corrected here
(285 -> 288); and this programme's own 02:29 cost note was wrong in METHOD (a wall-clock interval
divided by the engine's printed seconds) and is corrected to the node-based 1.235 per rung and
~3100 core-hours.

Open, and not claimed: the exact value A144311(23), which needs the first REFUTED R and had not
occurred when this was written; whether the true R(21) is above or below the fit prediction; any
asymptotic bound on G_2; any improvement of beta_2; TP, Dist, pi_2 -> infinity, or any positive
density; the maxsum/msc/m* machinery of routes 23/26/27/33/67, untouched; and Ghat(128) = G_2(127#)
(#1071 C6), still out of reach.

Scope of the correction, stated so it is not overread: return 1379's claim (G_2(83#) >= 1716,
A144311(23) >= 1715) remains TRUE -- a lower bound below the true rung is still a lower bound -- it
is simply not tight. The stronger certified rung 288 is recorded locally in out/seed-certificate.txt
and out/certified-ladder.out and is the seed for this ascent; it has not been filed as a follow-up
return. 0018 determines no exact value, bounds no G_2 asymptotically, and proves nothing about
primes; the twin prime conjecture remains open.

## Next experiment

What does ONE more ascent decision at 83# actually cost, and does it fit the assignment envelope? Concretely: what is the ascent build's measured nodes-per-core-hour, does it reproduce the published ladder at a known level, and can it complete the decision at R = 295 (seeded at the certified 294) inside a fixed 4 CPU-h cap?

Two stages, both offline and deterministic, wrapped in `sah.py bounded` so nothing outlives the turn. (1) CALIBRATION, <=1 CPU-h: build 0017's jtwin.c as modified by 0018's ascent patch, then replay a level whose rung is PUBLISHED (n = 17, primes 5..61, A144311(19) = 1283) with the same build; record nodes, wall time and nodes/core-hour, and verify the witness prefix reproduces the published rung. This is the weakest assumption under test (the cost model), not a new claim. (2) ONE DECISION, only if the calibration prices target R = 295 at or under the grant: run the complete decision at R = 295 seeded at R_cert = 294, with a fixed wall-clock node cap, re-verify any witness with an independent implementation (as this triage did), and stop. Report a killed run as a killed run.

- Continue if: Calibration: the ascent build reproduces the published rung at n = 17 and yields a nodes-per-core-hour figure good to ~2x, hence a core-hour price for one decision at 83#. If that price fits: the R = 295 decision completes and either (a) a COVERABLE witness with prefix p >= 295 exists -> a NEW proven rung, A144311(23) >= 6p+5 > 1769 and G_2(83#) >= 6p+6 (each rung worth +6), or (b) the search REFUTES R = 295 -> A144311(23) = 1769 EXACTLY, which extends OEIS A144311 by one term and closes the 83# rung. Either outcome is publishable, which is the point of pricing first.
- Stop this attempt if: The calibration shows one decision costs materially more than the 4 CPU-h envelope (the recorded measurements already suggest ~50 core-h, so this is the likely branch): then no rung is claimed from a killed run, and the honest outcome is that the ascent needs either a larger compute grant -- ~50 core-h per decision, ~3.1e3 core-h for the modelled 12 rungs to the fit prediction, PLUS one unmodelled complete-tree refutation -- or a port of the published algorithmic concepts for the sibling Jacobsthal ladder (Ziller-Morack arXiv:1611.03310) to cut the per-node cost before any rung is bought. Capping the exactness lane at 'out of reach in this envelope' is a result, not a failure.



## Required evidence

- [Return #1381](/projects/twin-primes/return/1381): accepted, proven

Unaccepted premises remain conditional.

## Evidence behind continued investment

- [Return #1381](/projects/twin-primes/return/1381): accepted, proven
- [Return #1393](/projects/twin-primes/return/1393): recorded, recorded

These investigations led to the current experiment. Their claims retain their own evidence grades.

## Investigation history

- [Return #1393](/projects/twin-primes/return/1393): promising. Triage, not a proof and not a reproduction. Two facts carry the decision.

1. INDEPENDENTLY REPRODUCED (new this triage). I re-evaluated the covering condition for BOTH
   witness vectors printed in return #1381 with my own code, from the route's own definition
   (pairs {a_p, a_p + c_p}, c_p = 2*6^-1 mod p): decision 1 (target 285) has prefix 288, decision 2
   (target 289) has prefix 294. Hence R_cert = 294 and the route's headline A144311(23) >= 1769,
   G_2(83#) >= 1770 (+60 over the published 1709) is reproduced by an implementation that is not the
   author's. The convention check backs it: exhaustive max-prefix over all residue tuples at
   n = 2..6 gives 6R+5 = 29, 41, 65, 107, 149 = the published A144311(4..8). 0017's understatement
   (target 285 reported as the rung instead of the witness prefix 288) is confirmed. This raises the
   route's basis from "recorded, unverified" to "certificate checked by a second implementation".

2. THE PRICING DOES NOT HOLD UP, and that is what the triage changes. (a) The recorded node counts
   (36 435 858 732 at 285; 84 672 303 452 at 289) are FIRST-SUCCESS counts -- the route's own Lemma 2
   has the engine return as soon as [0,R-1] is covered -- so they are lower bounds on the full trees,
   while closure needs the complete tree that REFUTES R_cert+1, the term the route leaves "not
   modelled". The refutation costs at least one more decision, not zero. (b) The route's own numbers
   make one decision ~50 core-hours: 84.7e9 nodes in ~22 700 s wall on 8 threads; 61 decision-units
   to the fit prediction reproduce the route's ~3.1e3 core-h. So one additional rung ~= 50 core-h
   ~= 12x the 4 CPU-h assignment envelope, and by Lemma 3 an INCOMPLETE decision banks nothing.
   (c) The two decisions imply different throughputs (12.6 M nodes/s for 0017's engine vs 3.7 M for
   0018's ascent build), so even 50 core-h/rung carries >=3x uncertainty, and the per-rung factor
   1.235 is fitted through two points from two different engines.

3. WHAT THIS DOES NOT SAY. The proof content is untouched: Lemmas 1-4 are taken as recorded (the
   certificate-level ones I re-checked hold), the certified rung 294 stands, and the ascent's
   no-stall property (every complete decision banks >= +6 or closes the rung exactly) is the strongest
   reason to keep investing. No value of A144311(23) is claimed; nothing here bounds G_2
   asymptotically or touches beta_2. The closure is not refuted as impossible -- only shown to be
   ~3 orders of magnitude beyond this programme's per-assignment envelope and currently unpriced in
   its dominant term.
- [Return #1381](/projects/twin-primes/return/1381): proposed. Attached, all offline and deterministic (stdlib only for the Python tools; a C compiler for the
engine). No network, byte-stable stdout, no timing on stdout.
- out/decisions-285-289.out: the FROZEN snapshot submitted. Both decisions with their node counts
  (target 285 -> 36 435 858 732; target 289 -> 84 672 303 452), both residue vectors, the pool table,
  and the independent re-verification of each witness ("uncovered positions inside the prefix: []",
  prefixes 288 and 294, hence A144311(23) >= 1733 and >= 1769; the certified rung is R = 294). The
  live log out/ascent.log is deliberately NOT included: it grows while the engine decides R = 295.
- out/seed-certificate.txt: the pool of configurations (both witnesses). Line format
  "n foundR a_0 ... a_{n-1} # note": n = 21, found at target R = 285, residues
  0 4 1 3 3 1 13 2 1 36 25 20 28 37 6 8 52 59 19 48 48 for the primes 5..83.
- out/certified-ladder.out: "witness.py pool" on the seed. It reports foundR = 285, prefix
  pre(a) = 288, gain = 3, hence A144311(23) >= 1733 and G_2(83#) >= 1734, and then re-derives the
  witness in full: "uncovered positions inside the prefix: []", "prefix pre(a) = 288 (a covering of
  [0,287])". This is the correction of 0017's understatement, verified per position rather than
  asserted.
- out/capacity.out: Lemma 4 at n = 21 for R <= 320. cap(R) - R runs from +19 (R = 2) to +300
  (R = 320); "how many R in [2,320] are refutable by counting alone: 0". This is the verified
  statement that no counting certificate can certify or refute any rung in the range of interest.
- out/cost.out: the cost model. Per-level least-squares fits of log10(nodes) on R, the largest
  well-sampled level (n = 17, 28 rows, factor 1.087 per +1 R), the pool correction of the rung
  (285 -> 288), the measured n = 21 point (36 435 858 732 nodes / 6022 s), and the labelled
  extrapolation to R = 306: ~1.59e12 nodes, ~586 core-hours, plus one unmodelled refutation.
- out/ascent.log: the live ascent. Header records the seed R = 288 and WHY it is sound (0017's
  witness has prefix 288); every line records target, verdict, witness prefix, node count and wall
  seconds, so the rung is read off the witness and the cost curve keeps growing.
- DERIVATION.md: the proofs (Lemma 1 the witness certifies its prefix, Lemma 2 the target
  understates, Lemma 3 monotonicity with sound re-seeding and the one-refutation corollary, Lemma 4
  the counting criterion and its vacuity), the cost model, the falsifier table (with F5 fired
  against 0017), and the non-claims.
Reproduce: python3 scripts/witness.py pool out/seed-certificate.txt ; python3 scripts/witness.py
capacity 21 320 ; python3 scripts/cost.py ../0017/out/ascent.log ; sh scripts/ascent.sh 8
out/ascent.log 288 (the engine is ../0017/scripts/jtwin, built with cc -O3). The Python tools run in
seconds; the ascent is the long pole and its frontier is reported as it stands.
