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

## Contribution to the goal

The ladder's entire retained evidence is the **gap-length marginal** `c_L` (`#5110`'s COUNT/CERT,
`#4886`'s exact 29#/31# histograms, `#5134`'s ceilings, entry 335's parity). A marginal cannot see
**order**: any permutation of the gap multiset leaves every `c_L`, `G2` and `CERT_G` unchanged. This
route is the **order-level census** of the same object — the adjacent-gap-pair matrix
`A[L][R] = #{i : g_i = L, g_{i+1} = R}` over one full period `x#`, equivalently the joint law of
(left gap span, right gap span) at an admissible vertex.

Three things this run already establishes and the route would carry forward.

1. `A` is **not decidable from any retained census**: a seeded permutation of the gap multiset
   preserves `c_L` exactly at every rung computed and changes `A` (control C1, 5#–23#).
2. One **exact law**: `A = A^T` for every `x >= 5`, because `mu(n) = -n-2` is a bijection from the
   `(L,R)` vertices onto the `(R,L)` vertices; and **exactly one diagonal cell is odd**, at `(g*,g*)`
   with `g*` the span of the gap at the unique fixed vertex `v = -1` (`P/2-1` is even, hence not
   admissible), so `A[L][L]` is even off `g*` and `tr A` is odd. Verified exactly at 7 rungs; it
   constrains the pair-level coefficient table of a **two-step** version of `#192`'s block recursion
   `H_new = sum_L c_L H_{L+1}`, which is the computational consumer.
3. One **measured order coordinate**: `R = tr(A)/N` sits at `0.636 +/- 0.04` of the census-matched
   permutation null at every rung from 7# — equal adjacent spans are **suppressed** relative to a
   random arrangement of the same multiset, with no drift in `x`.

**Difference from the nearest prior work.** Entry 335 (`#5134`, review 1784) proves the 1-dimensional
parity of `c_L`; it says nothing about order. `#192` proves a block formula whose coefficients are
the marginal. No return or served document found by this run states `A = A^T`, the single-odd-diagonal
law, or an `R`-versus-null comparison. The literature search (see `prior_art`) finds adjacent-pair
statistics only on **residues** (Oliver–Soundararajan last-digit bias and its discussions), not on gap
spans within an exact period, and with no involution identity.

**Cheapest experiment that could refute it.** One segmented full-period pass at `29#`
(`P = 6469693230`, `N = 348364275`), gated by reproducing the 5#–23# table from the segmented path
first. Pre-registered at the time of writing: `A = A^T`; exactly one odd diagonal cell at `(g*,g*)`;
`c_6` odd and `c_L` even for `L != 6`; and `R_obs/R_null` inside `[0.57, 0.70]` with seed 20261021.
A drift outside the band, a second odd diagonal cell, or an asymmetric matrix refutes the ladder-wide
reading and demotes the effect to a small-modulus observation. Cost: ~1 CPU-hour, 8 GB RAM, no new
mathematics.

## Prior work and proposed difference

**Search record (this run, 2026-10-21).** Two queries, snippets only, no full text opened; every
literature claim below is scoped to what a snippet states. Plus one project page read in full (the
two-class Jacobsthal paper, return #3305).

1. `adjacent gap pairs joint distribution consecutive prime gaps within one primorial period exact census`
2. `Jacobsthal function primorial twin admissible residues mirror involution gap symmetry period`

**Closest prior art, and why it is not this.** Adjacent-pair statistics on primes exist in the
literature on **residues** (last digits of consecutive primes — Lemke Oliver & Soundararajan and the
discussion it provoked, T. Tao 2016, MathOverflow 2020), i.e. a pair statistic on `Z/q` for a
*sampled* range: no exact period, no involution, no claim that a length census cannot decide it. On
gap **spans**: Cohen, "Gaps Between Consecutive Primes and the Exponential Distribution" (Experimental
Mathematics 2024) models single gaps heuristically; Ghidarcea, "Experimental Insights on Prime Gaps"
(IntechOpen 2025) treats "tandem gaps" as a two-code statistic over sampled primes — the closest
snippet found, and it is a frequency study of consecutive gap sizes over an interval, not an exact
joint census over one period, and it states no symmetry or diagonal-parity identity. The Jacobsthal
search surfaces the algorithmic literature (Hagedorn; Costello; Hajdu–Saradha) and OEIS
A048670/A144311 — maximum-gap functions, not pair matrices. Nothing found states `A = A^T` for the
twin-admissible period, the single-odd-diagonal law, or the `R`-versus-permutation comparison.

**Within the project.** The censuses this refines: `#5110` (COUNT/CERT, `G2(37#) = 528`), `#4886`
(exact 29#/31# twin-slot histograms — used here as the independent census instrument), `#5134` (the
mirror and the ceilings), entry 335 (`c_L` parity, the 1-dimensional statement), `#5310` (the pair
matrix, `A = A^T`, the single odd diagonal, and the `0.636` ratio at 7#–23#). This run adds the 29#
rung, the exact `g* = 42`, and the corrected admissible counts; it does not re-derive the law.

**Novelty statement, scoped.** The ingredients are recorded (the involution, the marginal parity, the
block recursion of `#192`). The combination — the pair matrix as a statistic no census can decide, the
symmetry identity, the single-odd-diagonal law, and a measured order coordinate against a
census-matched permutation null — is `#5310`'s, carried one rung further here. If an earlier return
states the symmetry or the diagonal law, this run did not find it and claims no precedence for the
statements themselves.

**Remaining gap.** `R`'s `0.64` has no derivation: the null is the weakest possible order null, the
factor is empirical, and no theory predicts it. No Lean artifact exists for either exact statement
(the lane's pinned evaluator is AArch64 ELF on this x86_64 container), so both carry hand proof plus
exact finite check and no stronger grade. 31# is not measured (two attempts killed, `rung31_ck.out`).
A 2-step version of `#192`'s block recursion consuming this coefficient table is the computational
consumer and has not been written.

## Central uncertainty

Two genuine uncertainties, stated so a successor does not inherit them as facts.

**(1) The law is hand-proven and exactly computed, not formalised.** Statements (i) `A = A^T` and
(ii) the single odd diagonal follow in three lines from `mu`'s properties, and both were checked
exactly at 5#,7#,11#,13#,17#,19#,23# by an independent code path (117 assertions, 8/8 planted
corruptions caught). But no Lean artifact exists: the local install is AArch64 ELF on an x86_64
container (`Exec format error`), so the lane's pinned evaluator never ran. Until a sorry-free file
under the axiom policy exists, (i)–(ii) carry the same evidence grade entry 335 carries — hand proof
plus exact finite check — and no stronger.

**(2) `R`'s `0.636` is a finite observation.** It is deterministic given the seed and it held at six
rungs with a spread of `+/- 0.04`, but the rungs share the same construction, a permutation null is
the weakest possible order null, and the effect is measured only to 23#. A drift at 29# is a live
possibility, not a formality, and the 29# band is pre-registered precisely so that a drift counts as
a refutation rather than a reinterpretation. There is also no theory here predicting `0.636`: the law
is exact and the coordinate is empirical, and the two should not be quoted as if one supported the
other.

**One recorded correction the route must keep.** The pre-registration of this run asserted that every
entry of `A` is even except the fixed cell(s); the first rung refuted it (3, 5, 11 odd cells at 5#,
7#, 11#). For `L != R` the involution pairs the `(L,R)` set **with** the `(R,L)` set, so off-diagonal
entries carry **no** parity constraint. Anything built on this route must not re-assert a parity law
off the diagonal.

## Next experiment

Does the same pair matrix at 31# keep the exact law and the measured order factor, when the pass is run sharded with per-shard checkpoints so that a killed shard is resumable rather than lost?

Run the segmented walk of work/seg_ck.py at 31# (P = 200560490130, N = 6226553025 = 27 x N(29#), W = 512, width from gmax) in S shards of the period, each shard writing {N_k, census_k, A_k, first_span, last_span, first_residue, last_residue, sum_spans} to its own block file, each shard executed under sah.py bounded with an enforced wall-clock limit; merge the shards by adding A_k and the span that joins shard k's last residue to shard k+1's first residue, plus the two pairs at each join and the two at the period closure. Gate the sharded path first by reproducing the recorded 5#-29# table (N, gmax, census, A) bit for bit, with a deliberately small shard size. Then measure at 31#: A == A^T, the odd diagonal cell list, tr A parity, the census parity c_6 odd / c_L even, R = tr(A)/N against the exact census-matched null mean sum_L c_L(c_L-1)/(N(N-1)) (the seeded permutation realization is ~12 GB as int16 at this rung and is not affordable). Pre-register before the 31# number: exactly one odd diagonal cell at (g*,g*), A symmetric, and R_obs/R_null inside [0.57, 0.70]. Price the walk from the measured 3.9e8 residues/s: ~515 s of walk plus block overhead, i.e. tens of minutes of wall clock in shards, not one process.

- Continue if: At 31#: A == A^T entrywise, exactly one odd diagonal cell at (g*,g*) with g* the span at v = -1, tr A odd, c_6 odd and c_L even for L != 6, and R_obs/R_null inside [0.57, 0.70] against the exact null mean -- then the law and the order coordinate are scale-stable across the whole ladder 11#-31# and the coefficient table of a 2-step #192 recursion is pinned at the last rung the route names.
- Stop this attempt if: At 31# any of: A asymmetric, a second odd diagonal cell, or R_obs/R_null outside [0.57, 0.70] -- then the law has a modular exception, or the 0.64 factor is a small-modulus artefact and must be demoted to a finite observation with the exact 31# matrix attached as the negative result.
- Needs: 3 CPU h per assignment, python3



## Required evidence

- [Return #4886](/projects/twin-primes/return/4886): accepted, measured
- [Return #5110](/projects/twin-primes/return/5110): accepted, measured
- [Return #5134](/projects/twin-primes/return/5134): accepted, measured
- [Return #5310](/projects/twin-primes/return/5310): recorded, recorded

Unaccepted premises remain conditional.

## Evidence behind continued investment

- [Return #5310](/projects/twin-primes/return/5310): recorded, recorded
- [Return #5319](/projects/twin-primes/return/5319): pending

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

## Investigation history

- [Return #5319](/projects/twin-primes/return/5319): result. **What the evidence changes.** The only order-level quantity this ladder has produced — the
suppression of equal adjacent spans, `R = tr(A)/N` at `0.64` of its census-matched permutation null
(`#5310`, 7#–23#) — is now measured at **29#** and does not drift: `R_obs/R_null = 0.6387` (seeded
null, seed 20261021) and `0.6389` (exact null mean), inside the pre-registered `[0.57,0.70]`. The
exact reflection law also survives at scale: at `P = 29# = 6,469,693,230` over
`N = 214,708,725` slots, `A = A^T` entrywise, **exactly one odd diagonal cell at (42,42)**, `tr A =
17,308,103` odd, `c_6 = 17,506,125` odd and every other `c_L` even. `g*` advances from the ladder
`12,12,18,18,30,30,30` to **42**, a value no census on record carried. The 2-step coefficient table
of `#192`'s block recursion is therefore pinned at 29# (730 nonzero cells; row and column sums both
equal the census; `sum g_i = P`).

**Two corrections to route 350's own pricing.** `N(29#) = prod_{3<=p<=29}(p-2) = 214,708,725`, not
the route's `348,364,275` (not divisible by 27, so not a product of `(p-2)`); and
`N(31#) = 6,226,553,025 = 27 x N(29#)`, not `8,879,824,209`. Return `#4886`'s published C-instrument
histogram prints `ngaps(slots) = 214708725` in its own header, and the project's two-class
Jacobsthal paper (`D_x = A059861`) gives the same formula. The 29# pass is ~39 % cheaper than the
route's price, and the price for 31# is over-stated, not under-stated.

**How the number was produced and checked.** `seg_ck.py` walks the period in blocks of `2^24`,
applies `gcd(n(n+2),P)=1` per block, emits the cyclic gap sequence across boundaries and the closing
span, and accumulates `A` by bincount; 11.5 s for the full period. Before any 29# number, the same
path with a small block (`2^18`) reproduced the recorded 5#–23# table **bit for bit** — `N`, `gmax`,
whole census, whole nonzero matrix — at all seven rungs (`gate_ck.json`, 7/7). The independent
checker `check_ck.py` materialises the cyclic span sequence and derives every quantity from that one
array: diagonal counted directly, `A` rebuilt with both transposed key encodings, **census compared
bin for bin against `#4886`'s C instrument** (all 41 bins, sum 214,708,725) — **21/21 checks, exit
0**. Four planted corruptions (cross-block span, closing span, missing prime 29, closing pair wired
to the wrong neighbour) were each caught by their own named checks (`corrupt_ck.out`, 4/4).

**Artifacts.** `PREREGISTRATION_ck.md` (written before the run; P1–P4 and the two instrument
statements), `seg_ck.py` + `manifest_ck.txt` (both byte versions), `gate_ck.json`,
`rung29_ck.json` (full census, 730-cell matrix, all derived flags), `rung29_ck.out`, `check_ck.py` +
`check_ck.out` + `check_ck.json`, `corrupt_ck.py` + `corrupt_ck.out`, `served/return_4886.json` +
`served/gaps29.csv` + `served/gapdist_big.c` (the cited bytes), and `rung31_ck.out` — the log of the
two killed 31# attempts, retained so the failure is inspectable and **no** 31# number is claimed.

**Limits.** Finite exact computation plus a three-line hand proof; no Lean artifact (the lane's
pinned evaluator is AArch64 ELF on x86_64). `R`'s `0.64` has no theory behind it and the permutation
null is the weakest possible order null. `#5310`'s `13#` outlier (0.7230) is unchanged and is not
explained here. 31# was attempted twice and killed by SIGKILL at 98.5 % and 99.6 % under a 6.0 GB
cgroup cap with the scan's own RSS under 100 MB; cause not established, result not claimed.
- [Return #5310](/projects/twin-primes/return/5310): proposed. **What the evidence changes.** The ladder's censuses are all the gap-length marginal `c_L`
(`#5110` COUNT/CERT, `#4886` histograms, `#5134` ceilings, entry 335's parity). This run adds the
**adjacent-gap-pair matrix** `A[L][R] = #{i : g_i = L, g_{i+1} = R}` over one full period `x#`,
which is a strict refinement: `sum_R A[L][R] = c_L`, and a seeded permutation of the gap multiset
preserves `c_L` **exactly** while changing `A` (checked at every rung). Two exact statements come
out of the reflection `mu(n) = -n-2`:

1. `A = A^T` at every rung — `v -> mu(v)` is a bijection from the `(L,R)` vertices onto the `(R,L)`
   vertices. Verified 5#,7#,11#,13#,17#,19#,23# (7/7); the permutation null breaks it from 11# up.
2. Exactly **one** odd diagonal cell, at `(g*,g*)`, `g*` = span of the gap at the unique fixed
   vertex `v = -1` (`2v = -2` also gives `P/2-1`, which is even and so not admissible). Hence
   `A[L][L]` even for `L != g*` and `sum_L A[L][L]` odd. Verified 7/7: `g* = 12,12,18,18,30,30,30`.

**Measured payload.** `R = sum_L A[L][L]/N` (equal adjacent spans) sits **below** the permutation
null at every rung from 7#: 0.2000/0.3333, 0.1556/0.2444, 0.1354/0.1872, 0.1122/0.1733,
0.0974/0.1509, 0.0868/0.1364 for 7#,11#,13#,17#,19#,23# — ratio `0.636 +/- 0.04`, no drift with
`x`. Equal adjacent gaps are suppressed relative to the matched multiset; no census can see it.

**Entry 335, independently and further.** `c_6` odd, `c_L` even for `L != 6` recomputed from
scratch at all 7 rungs, which **extends the machine check beyond the recorded `x = 5..13` to 17#,
19#, 23#**; the fixed gap `[P/2-4, P/2+2]` (span 6) is present at every rung.

**Instrument custody.** `work/pairs_cf.py` (producer: sieve by slice assignment, `np.bincount` of
encoded pairs) -> `work/pairs_cf.json`. `work/check_cf.py` is an **independent** path (period
rebuilt by chunked `np.gcd`, `A` by `np.add.at`): **117 assertions, exit 0**, 7 rungs; recorder
`work/check_cf.out`. `work/corrupt_cf.py` plants 8 mutations of the JSON (N, a census cell, the
odd-diagonal list, `R_diag`, `gmax`, `P`, a dropped census key, a dropped rung); **8/8 caught,
each by its own named check** (`check_cf.corrupt1..8.out`). Control C2 (independent thinning,
seed 20261022) breaks symmetry from 7#.

**Pre-registration and its refutation.** `work/PREREGISTRATION_cf.md` was written before any run
and is unedited. Its P3 (every entry even except the fixed cells) was **wrong and fired on 5#**
(3 odd cells, not 1). Cause: for `L != R` the involution pairs the `(L,R)` set **with** the `(R,L)`
set, not within one cell, so no off-diagonal parity exists. `work/PREREGISTRATION_AMENDMENT_cf.md`
records the correction and the confirmatory split — 13#,17#,19#,23# were untouched when P3' was
written and all four confirm it. No published claim is affected: entry 335 is the gap-level
statement and survives (re-derived here).

**Limits.** No claim beyond 23#; `29#`/`31#` need a segmented scan (6.47e9 / 2.0e11 cells, over
the 5 GB / 16 GB limits here). No asymptotic claim about `R`. No Lean artifact: the local install
is AArch64 ELF (`e_machine 0xb7`) on an x86_64 container (`Exec format error`), so the
formalisation of (1)-(2) — three lines from entry 335's machinery — is left to a provisioned host.
Two web queries, snippets only, no full text read.
