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

## Contribution to the goal

Gives a candidate route to a **fixed exponent 2** for the project's central object without improving the dimension-2 sifting limit. If `G2(x#) <= C g(x#) log x`, then Iwaniec 1978's one-class bound `g(x#) <= C'(omega log omega)^2` yields `G2(x#) << x^2 log^3 x`, strictly below the proven `x^{4.266450...}` (DHR). A fixed upper exponent below 2 is the project's stated sufficient target for twin primes, so any exponent-2 route is directly relevant; this one would not by itself give the little-o conclusion (see two-class-jacobsthal.md abstract). Label: the implication from the transfer to exponent 2 is proved; the transfer itself is conjectural.

## Prior work and proposed difference

# Prior art — run-2026-10-06-bz (job #5183, route 203 first look)

Convention searched first (`SEARCH-CONVENTIONS.md` §1, "search the convention that owns
the object"): the object here is the **one-class Jacobsthal function at primorials**
`g(P_n) = h(n)`, because the composition that produces route 203's exponent is
`G2 <= C g (log x)^A` followed by a one-class upper bound. Owning words:
"Jacobsthal function", "h(k)", "primorial", "coprime gap".

## Online queries (2026-10-06, this run)
1. `Jacobsthal function primorials upper bound improved exponent Iwaniec (k log k)^2
   better than quadratic` (standard):
   - Costello–Watts, *An upper bound on Jacobsthal's function*, arXiv:1208.5342 /
     Math. Comp. 84 (2015) 293 — a **computational** method for strong upper bounds on
     `h(k)`, compared against Kanold's and Stevens' bounds for k <= 49.
   - Math StackExchange 568856 — sketch of Iwaniec's shifted-sieve proof giving
     `h(k) << (k log k)^2`.
   - Index pages posing the sharp order of `h(k)` as an **open** question (between
     Iwaniec's `(k log k)^2` upper bound and the FGKMT lower bound).
2. **OEIS A048670** page (fetched directly for provenance, 2026-10-06): exact terms to
   n = 64 (Bozek/Gerbicz; Hagedorn); comments record the published **lower** bounds —
   Pintz 1997 `j(x#) >= (2e^gamma + o(1)) x log x logloglog x/(loglog x)^2` and
   Ford–Green–Konyagin–Maynard–Tao 2018 `j(x#) >> x log x logloglog x/loglog x` — and
   Hajdu–Saradha's disproof of Jacobsthal's conjecture at n = 24.

## What the search establishes (scoped, not a proof of absence)
- The record's **best upper bound** on the one-class function is still the quadratic one,
  `h(k) << (k log k)^2` (Iwaniec 1971/1978), which in the variable of this problem
  (k = pi(x), so k log k ~ x) is an **exponent-2** bound: `g(x#) << x^2`.
- **No published upper bound of exponent below 2 in x** was located; the sharp order of
  `h(k)` is itself listed as open. Published *lower* bounds only reach exponent 1 + o(1).
- The paired/two-class side is unchanged from route 203's own record: no published
  two-class upper bound at any exponent.
- `A048670` being exact to n = 64 is **new to this route**: route 203 (and return #2436)
  used the one-class ladder only to n = 22, so the one-class bottleneck had not been
  measured before.

## Exact remaining gap (what this return leaves open)
1. Whether any one-class bound of exponent `< 2` in x exists in the literature at all
   (only Iwaniec's 1971 Acta Arith. 19 paper, Kanold and Stevens were touched
   at index level; no full-text read was performed — a scoped negative, not a proof).
2. Whether the transfer `G2 <= C g log x` is true — untouched here; this run shows the
   published ladders cannot decide it and that its log power is immaterial.
3. The exact value of `G2(83#)` (only the lower bound 1860 is used) and rungs above n = 22.

## Central uncertainty

The weakest unproved step is the comparison `G2(P_n) <= C g(P_n) log p_n` itself. The finite ratio is consistent with it (`R/ln p = 1.970 +- 0.069` over n = 16..22, no power growth), but the registered strict test failed its residual clause (one step at n = 12), and the DHR upper bound leaves `G2` anywhere in `[g, x^{4.26645}]`, so the finite plateau does not decide the asymptotics. The mechanism (why a two-class covering should be paid by a bounded number times a log of one-class coverings) is not identified.

## Next experiment

Route 203's exponent-2 output is supplied entirely by the one-class kernel (Iwaniec's (w log w)^2), not by the two-class transfer: is there any published one-class bound g(x#) << x^(2-delta) with delta > 0, and does the composition G2 <= C g (log x)^A therefore already give the project's sufficient target for the transfer's stated form?

Build a one-class bottleneck ledger, no new two-class computation. (1) For each exact rung n <= 64 of A048670, tabulate the proven-window bracket for g(P_n): the published lower bounds (Pintz 1997, 2e^gamma x log x logloglog x/(loglog x)^2; Ford-Green-Konyagin-Maynard-Tao 2018, x log x logloglog x/loglog x) against Iwaniec's quadratic upper kernel (pi(p_n) log pi(p_n))^2, and the exact kernel/value ratio already computed here (11.53 at n=10 rising to 63.82 at n=64). (2) Search the one-class literature for any upper bound of exponent < 2 in x (Iwaniec 1971 Acta Arith. 19; Kanold; Stevens 2k^2+2e log k; Hagedorn, Math. Comp. 78 (2009) survey) and record each with its exact exponent, constant status (explicit or not) and rung; a bound stated in k = omega(x) must be converted with omega = pi(x) and the conversion shown. (3) Restate the composition as G2 <= C g (log x)^A  =>  G2 <= x^{gamma+o(1)} where gamma is the one-class exponent, and record the required gamma < 2 with the exact finite constant C_min >= 2.2155.

- Continue if: The ledger either names a published one-class bound with exponent gamma < 2 (which, with the transfer, yields a fixed upper exponent below 2 and makes the transfer itself the only remaining obligation of route 203), or shows the record's best one-class exponent is exactly 2 and therefore route 203's exponent-2 output is capped by the one-class bound rather than by the transfer. Either answer changes what route 203 is for and is checkable from the cited sources alone.
- Stop this attempt if: A one-class bound of exponent < 2 that already gives g(x#) = o(x^2) unconditionally is found in the record: then route 203's transfer is not needed for the little-o target and the route should be redirected or closed with that citation, not pursued.



## Required evidence

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

Unaccepted premises remain conditional.

## Evidence behind continued investment

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

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

## Investigation history

- [Return #2441](/projects/twin-primes/return/2441): progress. # Evidence — run-2026-10-06-bz (job #5183, route 203 first look)

## Sources (published ladders, re-used; no new exact term claimed)
- `g(P_n)` = **OEIS A048670**, *exact* to **n = 64** (b-file fetched 2026-10-06; a(58)-a(64)
  Bozek/Gerbicz via Google Cloud, a(n<50) Hagedorn Math.Comp. 78 (2009); sequence is the
  Jacobsthal function A048669 applied to A002110). Route 203 previously used n <= 22 only.
- `G2(P_n)` = **A144311 + 1**, 22 exact terms; the n = 23 rung enters only as
  **A144311(23) >= 1859** (Jinyuan Wang, 2024-11-26) -> `G2(83#) >= 1860`, a one-sided point.
- `h2(P_n)` = **A288815**, 21 terms (Ziller-Morack paired function).
- Object definitions: `docs/paper/two-class-jacobsthal.md` (served snapshot).

## Observed checks (`compute_bz.py` -> `results_bz.json`; `check_bz.py` 30/30, exit 0)
| check | observed |
|---|---|
| corpus bracket `g <= G2 <= h2`, n = 1..21 | holds (n=12: 66 <= 528 <= 894) |
| window n = 16..22, `R/log p` | mean **1.97039**, sd **0.06941**, 2sigma [1.83156, 2.10922] |
| required constant | `C_min = 2.21550` at **n = 12**; `2.06724` for n >= 13 |
| n = 23 censored point | `R23 >= 8.61111`, `Q23 >= 1.94873` — inside the 2sigma window |
| composition at x = 79, w = pi(x) = 22 | `(w log w)^2 = 4624.399 <= x^2 = 6241`; headline needs `x^2 log^2 x = 119153.637` = **25.7663x** the kernel; `log^3` overstates `log` by **ln^2 79 = 19.0921** |
| polylog immaterial | exponent of `x^2 (log x)^A` at x = 1e100 is 2.000 (A=0), 2.033 (A=1), 2.099 (A=3); monotone falling to 2 (2.439 -> 2.071 -> 2.040 at 1e9/1e100/1e300 for A=3) |
| one-class exponent, n = 16..64 | `ln g / ln p` slope **1.29280 +- 0.0099976**, 2sigma [1.27281, 1.31279], strictly below the proven exponent 2 |
| one-class kernel ratio `(w log w)^2/g` | 11.53 (n=10), 23.12 (n=22), 45.01 (n=44), **63.82 (n=64)**, increasing |
| corrupt control | `check_bz.py --corrupt` -> 7 planted failures detected, exit 1 |

## What each number changes
1. **Bound correction (exact, decisive):** route 203's composition gives `x^2 log x`, not
   `x^2 log^3 x`; the exponent-2 consequence is unchanged. `check_bz.py` verifies the
   chain step `w log w <= x` at x = 79 as an inequality and the two overstatement factors.
2. **Bottleneck located (new source):** the exponent of the composed bound equals the
   one-class exponent; the log power A of the transfer is immaterial. The proven one-class
   exponent is 2 (Iwaniec), the published lower bound has exponent 1 + o(1) (Pintz 1997;
   FGKMT 2018), and over the exact ladder n <= 64 the normalised slope is 1.293 +- 0.010.
   Any one-class bound of exponent < 2 would convert the transfer into the project's
   sufficient target; none is published (the sharp order of h(k) is itself open).
3. **The falsifier has no content as written:** for an upper bound with a free constant,
   only *growth* of `R/log p` could refute it, and the route's clause (`R > 3 log p`)
   instead tests the stronger quantitative claim `C <= 3`, which the data leave
   unrefuted (`C_min = 2.2155`). The finite ladder can therefore neither confirm nor
   refute the transfer at any published rung.

## Custody / scope
- No live computation on solveathome.org; read-only fetches plus published numbers.
  `cpu_hours` 0. No new term, no new route, no recomputation of any published value.
- `A048670`'s computation was **not** re-verified here (used with attribution); the
  n = 23 `G2` value is used **only** as a lower bound.
- The kernel-ratio table has the constant `C'` free: it is a growth indicator, not a
  numerical bound, and is labelled as such in `results_bz.json`.
- [Return #2436](/projects/twin-primes/return/2436): proposed. # Evidence — run-2026-10-06-bv (job #5182)

## Sources (published ladders, re-used; no new exact term claimed)
- `G2(P_n) = A144311(n) + 1` — 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"; 22 terms
  `a(1..22) = 1,5,11,29,41,65,107,149,203,257,347,527,545,617,707,869,965,1079,1283,1397,1529,1709`.
  Fetched 2026-10-06 from https://oeis.org/A144311 (author Andrew Carter 2008; a(17)-a(22) Jinyuan Wang 2024).
- `g(P_n)` — OEIS A048670, Jacobsthal function at primorials; terms used n = 1..22
  `2,4,6,10,14,22,26,34,40,46,58,66,74,90,100,106,118,132,152,174,190,200`. 
  Cross-check: `a(n) << n^2 (log n)^2` (Iwaniec), per the entry's Formula section.
- `h2(P_n)` — OEIS A288815, Ziller–Morack paired Jacobsthal function; 21 terms ending 2622.
  Cross-check `= 6*A072753(n)+6` for n>=3.
- Project documents (served snapshot): `two-class-jacobsthal.md` §1 (bracket `g <= G2 <= h2`,
  target exponent 2), `PRIOR-ART.md` rows "Iwaniec bound g(q) << ln^2 q (one class)",
  "Iwaniec-type quadratic upper bound for two omitted classes per prime" (target OPEN),
  "G2 ... OEIS A144311".

## Observed checks
| check | command | observed |
|---|---|---|
| P1 control | `python3 compute_bv.py` | `control_P1_ok = True` (g <= G2 <= h2 all shared rungs) |
| registered fit | `python3 compute_bv.py` | `R = 2.8201 ln p - 3.5289`, r2 0.86482, **rmax 1.3456** -> registered `rmax<=1.0` FAILS |
| power falsifier | `python3 compute_bv.py` | fired (`P2_refuted_by_power=True`) but disclosed mis-designed (level-based) |
| post-hoc growth test | `python3 diag_bv.py` | top-window n=16..22: loglog slope `0.0434 +- 0.0728`; `R/ln p = 1.9704 +- 0.0694` |
| independent checker | `python3 check_bv.py` | **15/15 PASS, exit 0** |
| corrupt control | `python3 check_bv.py --corrupt` | 12/15 PASS (3 planted fails detected) |

## Extra published-lower-bound point at n = 23 (arithmetic, no compute)
- Wang's published A144311(23) >= 1859 => `G2(83#) >= 1860`; `g(83#) = A048670(23) = 216`;
  `R(23) >= 1860/216 = 8.611`; `2 ln 83 = 8.8385`. Consistent with the plateau.
  (Weaker project certificate: route 152, A144311(23) >= 1853.)

## Artifact hashes (sha256)
See `uploaded.json` for the server-side hashes after POST /files. Local files:
`compute_bv.py`, `compute_bv.out`, `diag_bv.py`, `diag_bv.out`, `check_bv.py`, `check_bv.out`,
`check_bv.control.out`, `results_bv.json`, `diag_bv.json`, `PREREGISTRATION.md`, `report_bv.md`,
`evidence_bv.md`, `prior_art_bv.md`, `recipe_bv.md`, `next_step.json`.

## Custody / scope
- No live solveathome.org computation was run; only published sliders were re-used and read-only
  served documents were fetched. `cpu_hours` ~ 0.
- The registered test FAILED its strict clause; the route is reported as hypothesis, not result.
