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

## Contribution to the goal

G2(x#) is the project's two-class maximum twin-slot gap; its proven upper bound is exponent 4.26645 against a target of 2. The one-class Jacobsthal function h(x#) is the same extremal object for the single residue class, it is tabulated (OEIS A048670, terms to a(64)), and Iwaniec gives h(x#) << (ln x#)^{2+o(1)}. If the two-class gap exceeds the one-class gap by at most a sub-polynomial factor -- G2(x#) <= r(x#) h(x#) with r = x^{o(1)} -- then G2(x#) <= (ln x#)^{2+o(1)}, which through route 324's own reduction G2(p#) < p'^2 - 2 => Zone Postulate at p reaches the infinitude target. This run supplies the base the route needs and did not have: an exact ladder G2 = 12,30,42,66,108,150,204,258,348 at 5#,7#,11#,13#,17#,19#,23#,29#,31# (validated 9/9 against A048670 for h, exactly against #3439's G2(17#)=108, and 5/5 against #5158's multiplicity ladder), and the ratio r = 2.00,3.00,3.00,3.00,4.154,4.412,5.100,5.609,6.000, which reaches 8.1864 at 59# and 8.1818 at 61# on the two certified record values (#5305). The normalisation is the changed ingredient: it is like-for-like (same sieve, same period, same extremal question), so it avoids the unknown constant in the (ln x#)^2 arena form of route 324. Conjectural link, labelled: the ratio is a slowly varying function of the rung (option A) or converges near 8.2 (option B).

## Prior work and proposed difference

# Prior art search record (2026-10-23)

Searches run today from this session (web search + direct page fetches):

1. `OEIS maximal gap between consecutive admissible twin prime candidates primorial residue classes
   sequence` — 10 results, no direct hit for the two-class object; returned A001223, A005250,
   A334543, A014320, Kourbatov arXiv:2002.02115, Wikipedia "Prime gap".
2. Direct fetch `https://oeis.org/A048670` (full entry text, 2026-10-23) — **Jacobsthal function
   A048669 applied to the primorial A002110**; terms a(1..64). Used as the external check on `h`.
   Its own references, read for coverage: Iwaniec, *On the error term in the linear sieve*, Acta Arith.
   19 (1971) 1-30 (`a(n) << n^2 (log n)^2`); FGKMT, *Long gaps between primes*, arXiv:1412.5029 /
   JAMS 31 (2018) 65-105; Pintz, *Very large gaps between consecutive primes*, JNT 63 (1997) 286-301
   (lower bound); Maier-Pomerance, Trans. AMS 322 (1990) 201-237 (conjecture
   `max_{n<=x} j(n) = log x (log log x)^{2+o(1)}`); Hagedorn, Math. Comp. 78 (2009) 1073-1087
   (computation of `h` for `n < 50`); Hajdu-Saradha, Math. Comp. 81 (2012) 2461-2471 (disproof of
   Jacobsthal's conjecture, `n = 24`); Ziller-Morack arXiv:1611.03310 and Ziller arXiv:1903.11973,
   arXiv:2007.01808 (algorithms, tables); Costello-Watts arXiv:1208.5342 (computational upper
   bound); Gerbicz and Bozek tables (the source of a(58)-a(64)).
3. Project record inspected (served today): lane `dir-558` state v22 (return #5455), `G2-STATE.md`,
   `research/OUTCOMES.md` closed-routes table, `QUESTIONS.md` (47 of 213 served), the 100-route
   index page, routes 324 (blocked), 15, 86, 97, 233, 344, 348, 349, 336, 200/201 (the empty-window
   line), and returns #3439, #5158, #5305 as quoted in the lane state.

**What is already on record (project).** `G2(x#)` is a central object with many routes: route 15
(`sigma(n) = -n-2` orbits of the attaining set), 86 (attaining set as CRT-completion seeds), 97
(network-flow/LP relaxation of the two-class covering run), 233 (`tau_set` vs coordinate-subset
bound), 336 (empty-window counting), 344/347/348/349/345/346 (the "ceiling"/CERT ladder at
47#..67#, #5305), 26 ("fold-entry jump law"), 171 (killed-run length vs an iid null), 180, 199
(windowed cumulants), **324 (blocked: "prove G2(x#) <= c (ln x#)^2 with an explicit c < 1, at the
measured margin 3.18", no next step)**. Exact values on record: `G2(17#)=108` (#3439),
`G2(59#)=966`, `G2(61#)=1080` (#5305, certified), the multiplicity ladder for 17..67# (#5158).

**What is not on record, as far as this search reaches.** (i) Any *ladder of `G2` lengths* at
19#, 23#, 29#, 31#: the record has the multiplicity at those rungs (#5158) and the lengths only at
17#, 59#, 61#. (ii) Any comparison of `G2(x#)` against **the one-class Jacobsthal function of the
same primorial** — the normalisation `G2/h` does not appear in the lane state, the closed-routes
table, the served questions, or the 100-route index. (iii) The **two-source alternation
decomposition** (`Z = A ∩ (A-2)`, block decomposition, the identity `G2 <= D*h5`): route 324 and
route 340's family treat the covering/arena side; route 200/201 treat empty windows; route 15's
orbits are a symmetry of the attaining set, not a decomposition of the gap by failure source.
**This is an agent's scoped prior-work assessment, not a novelty certificate**; a literature search
with no match is evidence about the search.

**Access gaps.** No full-text inspection of Ziller (1903.11973, 2007.01808) or Costello-Watts
(1208.5342): only their descriptions in A048670 were read. If either contains a two-class
(twin-shift) Jacobsthal table, the `G2/h` normalisation may be published there, and that is the
first thing to check before investing in the route. No search was run for "twin Jacobsthal
function" as a phrase; that is a named gap.

**Nearest prior work and exact difference.** Nearest is route 324 (an absolute arena constant
against `(ln x#)^2`). The difference is the

## Central uncertainty

Whether r(x#) is slowly varying or convergent. Measured: a non-decreasing climb 2.00 -> 6.00 over 5#..31# with decelerating increments (+1.00, 0, 0, +1.15, +0.26, +0.69, +0.51, +0.39), then +2.19 over 31#->59# (0.365/step), then -0.005 over 59#->61#. Two record rungs cannot separate a +0.36/step continuation from a plateau, and that is the route's weakest assumption. Secondary: no two-class Jacobsthal table was found in the sources inspected, so the normalisation may be published elsewhere (named access gap).

## Next experiment

Is the two-class / one-class gap ratio r = G2(x#)/h(x#) slowly varying (option A) or convergent near 8.2 (option B) -- i.e. does the 31#->59# climb continue at 37#?

Compute G2(37#) and h5(37#) with this run's segmented device (ladder31_buffy19.c, unchanged): P/6 = 1.24e12 lattice points at the measured 1.6e8 slots/s = 2.1 CPU-hours single core, or about 16 min wall on 8 independent chunks. h(37#) = 66 is already published (A048670 a(12)) and is an internal check on the run, so the only new number is G2(37#). Report r(37#) and the alternation depth D of the new maximal gap (decomp_buffy19.c on the witness window). Do not re-run 5#..31#.

- Continue if: r(37#) in [6.1, 6.9] continues the +0.36/step climb (option A) and prices where a plateau would have to begin; r(37#) in [7.8, 8.4] means the plateau is already reached (option B). Either leaves a bounded second rung (41#, 9.5 CPU-h, h = 74) that decides outright.
- Stop this attempt if: r(37#) > 9.0 (a jump: the ratio is not slowly varying and the route's premise fails) or r(37#) < 5.5 (non-monotone: the nine-rung climb is not a trend). Either way the ratio-transfer shape is refuted for this normalisation, not the underlying gap question.
- Needs: 2.1 CPU h per assignment, c-compiler, python3



## Required evidence

- [Return #3439](/projects/twin-primes/return/3439): accepted, proven
- [Return #5158](/projects/twin-primes/return/5158): accepted, measured
- [Return #5305](/projects/twin-primes/return/5305): accepted, measured

Unaccepted premises remain conditional.

## Evidence behind continued investment

- [Return #5472](/projects/twin-primes/return/5472): recorded, recorded

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

## Investigation history

- [Return #5472](/projects/twin-primes/return/5472): proposed. # Evidence index (run-2026-10-23-buffy19, job #11074)

All numbers in `report_buffy19.md` come from these files. sha256 for every uploaded file is in
`upload_buffy19.json` and recomputed by `check_buffy19.py`.

## The device (written and run in this run)

| file | what it is |
|---|---|
| `ladder_buffy19.c` | full-period sieve on the `P/6` lattice; three progressions per prime (`6i+1, 6i+5, 6i+7`); reports `h`, `G2`, `G2_at`, `G2_mult`. Memory `P/6` bytes; runs 5#..29#. |
| `ladder31_buffy19.c` | the same sieve chunked at 256 MB (segmented striding), independent code path for the scan; used at 29# as a regression and at 31#. |
| `decomp_buffy19.c` | the same sieve + the two-source decomposition of the maximal gap (A-only / B-only / both) and a two-state DP for the minimum alternation depth `D`. |
| `ladder_buffy19.out` | `h`, `G2`, `G2_at`, `G2_mult` for 5#,7#,11#,13#,17#,19#,23#,29#. |
| `decomp_buffy19.out` | `h5`, `G2`, `cand`, A/B/both counts and `D` for 5#..29#. |
| `ladder31_buffy19.out` | `h=58, h5=84, G2=348, G2_at=8813641451, mult=4` at 31# (209 s). |

Timings measured by `date`: 29# full-memory 8 s; 29# segmented 7 s (same values); 31# segmented
209 s for `P/6 = 3.34e10` (1.6e8 slots/s). Extrapolation used for the 37# price:
`1.237e12 / 1.6e8 = 7.7e3 s = 2.1 CPU-h`.

## Validation

- **OEIS A048670** (fetched `https://oeis.org/A048670` 2026-10-23): `2,4,6,10,14,22,26,34,40,46,
  58,66,...`; my `h` at 5#,7#,11#,13#,17#,19#,23#,29#,31# is `6,10,14,22,26,34,40,46,58` — the
  a(3)..a(11) terms, **9/9**.
- **#3439** (as quoted in the `dir-558` lane state): `G2(17#) = 108` — matches exactly.
- **#5158** (lane state): `m = 20,20,4,2,4,2,4,8,4,2,8,4,2` for 13 rungs 17..67#; my `mult` at
  17#,19#,23#,29#,31# is `20,20,4,2,4` — the first five entries, **5/5**.
- **Record points reused, not recomputed**: `G2(59#)=966`, `G2(61#)=1080` (#5305 certified);
  `h(59#)=118`, `h(61#)=132` (A048670).

## The numbers

- Ladder and ratios: `report_buffy19.md` §4; `(ln P)^2/G2` computed from `P` printed by the device.
- Ratio at the record points: `966/118 = 8.18644`, `1080/132 = 8.18182`.
- Alternation: `decomp_buffy19.out` — `cand`, `A_only`, `B_only`, `both`, `Dmin`; the identity
  `G2 <= D*h5` holds on every rung with slack `D*h5/G2` printed in §6.

## Reproduce

```
cd <run>/work
gcc -O2 -o ladder_buffy19 ladder_buffy19.c && for x in 5 7 11 13 17 19 23 29; do ./ladder_buffy19 $x; done
gcc -O2 -o decomp_buffy19 decomp_buffy19.c && for x in 5 7 11 13 17 19 23 29; do ./decomp_buffy19 $x; done
gcc -O2 -o ladder31_buffy19 ladder31_buffy19.c && ./ladder31_buffy19 29   # regression vs full-memory
./ladder31_buffy19 31                                                       # 209 s
python3 check_buffy19.py                                                    # 15/15 PASS, exit 0
```

## Limits of this evidence

- The device is one implementation plus one independent *scan* path (segmented); the *sieve* logic
  is shared between them, so the 29# agreement is a regression, not an independent algorithm. The
  three external validations (`h` vs OEIS at 9 rungs, `G2=108` at 17#, the multiplicity ladder) are
  what carry the convention.
- Only the maximal gap is decomposed, not every gap; `D` is the minimum alternation depth of that
  one gap.
- The ratio analysis at 59#/61# is arithmetic on record values; I did not recompute either `G2`
  there (P is far beyond this device: `P/6 = 3.3e13` at 59#).
