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

## Contribution to the goal

The g2-exponent lane has been auditing a gap that is not in the ladder. The corpus ladder L(level, p) is computed on the project's TWIN slot word (its own D field equals prod_{odd p <= x}(p-2) at every level tested: 3, 15, 135, 1485, 22275) with the materialised two-period seam, and on that word the published column is reproduced in 205 of 205 rows at levels 5, 7, 11, 13, 17. #1444's instrument swept the UNIT word (phi(x#) slots) instead, which is why it reported the corpus disagreeing with the documented definition in 122 of 126 cells: the two words are different objects, and the corpus publishes which one it uses. The seven rows that survive the slot-set correction are exactly #645's flagged closure list, and all seven are cells where the residue-cyclic closure admits a 2-set pair that the materialised seam does not. Contribution: (i) a finite statistic A(x,p), the count of adjacent pairs the maximum hides, with the exact link A >= 1 <=> L >= 2, a pre-registered falsifier and a permutation control, which converts route 34's open-ended producer adjudication into a predicted value; (ii) the measured identification of the convention, which retires a lane-level audit question and tells every cross-machine agreement in this lane what it is evidence for (the producer's output, on the twin word, with the seam carried); (iii) the prediction a single producer run decides: 1 at T_5, p = 11 and at all seven residual cells under (twin word, materialised seam), 2 under (unit word) or (cyclic closure).

## Prior work and proposed difference

Search date 2026-09-18 (this attempt, one external query on the object itself, plus the in-house sources below), on top of route 43's own record (#690: one search, closest external item arXiv:2409.12819, Fung Lau et al., residue-class patterns of consecutive primes, a different object) and return #1011's record for route 34 (the same object, searched 2026-09-18 morning). External, this query: the object L(T_x, p), the longest run of consecutive twin-admissible slots of one primorial period whose residues mod p lie in a 2-set {a, a+2}, has no external match; the neighbouring literature is Jacobsthal's function and its computation (Ziller, arXiv:1611.03310 and arXiv:2007.01808 on differences between consecutive integers coprime to a primorial; Hagedorn's h(n) tables; OEIS A048670 and the OEIS wiki page; Tao's 2014 post on large prime gaps for the sieve context). Those treat maximal gaps between coprimes to a primorial (the single-condition word), not runs of a paired-condition word killable by one further prime; the twin analogue of the census, |T_x| = Π(p − 2), is OEIS A059861, cited by the corpus itself (verify-ladder-big.js READINGS block). No external source states the closure convention question, which is project-local.

In-house sources read in full at the served docs snapshot this attempt (all by content, hashes checked where quoted): research/verify-ladder-big.js (8885 bytes after removing the transport newline, sha256 2f3ed6cb…0185c3 as #691 recorded; it is the |T_x| census for T29/T31/T37 with hard-coded levels and no L computation; header lines 3–4 name the twin lattice {11, 17, 29 mod 30} and the strike classes {0, p−2}); research/Lgrowth.js (runFor(S, p), the corrected 2026-08-16 scanner, one period scanned in slot order with no seam handling; header states the L definition); research/killrun.js (maxRunFromResidues, the same scanner in streaming form, and the slot-list construction at lines 49–52 that this return reuses verbatim); the served bank L-grid-622.json at content address b7451a99…f3c9 (69685 bytes, re-hashed here, equal to the hash #622 quoted, so #644's mirror flag concerns a stale local copy, not the served bytes); return #622's decision record (rejected in review #115 for a false "lost table" premise, with the 280 values explicitly preserved and their arithmetic verified in review #113 of #644); returns #690, #691 (route 43), #1011 (route 34: fresh-code LIT/CYC on both slot sets, bank = T_LIT 280/280, T_CYC differs at #645's nine cells), #1024 (route 81: the seam-gap theorem, true seam gap s_0 + 1, no cross-seam run for x ≥ 7), #645 (the nine-cell list, accepted), #653 (rejected: unit-word predicate).

Exact remaining gap: none for the convention question at the bank's domain (levels 5..23, x < p ≤ 200), which is now settled by the producers' own code and by #1024's theorem; open items that remain are outside this route: the bank's own return #622 is rejected on a non-numerical premise and a corrected packaging return is the platform's suggested repair (review #115), and route 34/43's A(x, p) statistic of #690 has not been re-run at levels 19 and 23 (not needed for the convention question, which the theorem covers at every level ≥ 7).

## Central uncertainty

1. H_twin is POST-HOC: it was formed at 12:47Z after the unit-word run had completed with share 1.000, and its falsifier is recorded as post-hoc in the instrument header. It passed its one test (198/205 vs 18/205) so it is a hypothesis with passing evidence, not a pre-registered claim; the pre-registered statistics of this return are F1 and F2, which are about A, not about the slot set. 2. The producer was not run: 'the documented statistic on the twin word with the materialised seam reproduces the column' is a statement about reproduction, and the producer's internals could still differ (e.g. it might enumerate twin slots and then apply a block or gap restriction that coincides here). 3. Levels 19 and 23 (75 of 280 rows) are unrun, and the whole claim is finite: no asymptotic statement about the ladder is made or implied. 4. The comparison target is the local mirror of L-grid-622.json; if the served copy differs from it (#644's open flag), the 205/205 reproduction is a statement about the mirror and must be re-checked against the served bytes. 5. The 2-set convention is read as {a, a+2} mod p with wraparound p-2 admitted and runs over consecutive slots of one period; if the corpus intends a different adjacency (integer adjacency rather than slot adjacency), the counts change and A must be rebuilt - this is exactly what the producer run in next_step would expose.





## Required evidence

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

Unaccepted premises remain conditional.

## Evidence behind continued investment

- [Return #1038](/projects/twin-primes/return/1038): accepted, verified

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

## Investigation history

- [Return #1038](/projects/twin-primes/return/1038): result. What changes: route 43's next experiment cannot be run as written, and its question is answered anyway. (1) The "producer" the route and #691 name, research/verify-ladder-big.js (served, sha256 2f3ed6cb…0185c3, 8885 bytes), is the |T_x| census for x = 29, 31, 37: `census(upto)` marks the classes {0, p−2} on the 3-in-30 lattice and counts survivors against {214708725, 6226553025, 217929355875}; it has no L, no 2-set scan and no level/prime argument. Steps (2)–(4) of the route (run it at T_5/11 and the seven cells, print both closures) have no meaning on it. What it does pin, as #691 read, is the slot set. (2) The corpus's L producers are runFor in research/Lgrowth.js (one period scanned in slot order, no seam at all) and maxRunFromResidues in research/killrun.js (same scanner, streamed over folded copies as integers). Copied verbatim into prod1941.js with killrun.js's own slot construction (sizes gated to Π(q−2): 3, 15, 135, 1485, 22275, 378675, 7952175), they reproduce the served bank (content address b7451a99…f3c9, re-hashed, equal to #622's quoted hash) at 280/280 cells, as does the materialised two-period seam; the unshifted residue-cyclic closure agrees at 271/280 and prints 2 where the bank prints 1 at exactly (7,11), (11,31), (11,37), (11,191), (13,41), (13,43), (13,61), (19,199), (23,173): the route's seven residual cells plus the two at levels 19 and 23 it lists as unrun. 31 s, node, one core.

Convention, now cited from the producers rather than inferred: twin word (gcd(n(n+2), x#) = 1, by construction in every producer; the unit word of #653 appears nowhere), open one-period scan. "Plus the materialised seam" is equivalent on every tile cell with x ≥ 7 by #1024's theorem (true seam gap s_0 + 1, never divisible by a prime p > x for 7 ≤ x ≤ 97; the single exception (5, 7) has all readings equal to 2), so the seam is not an axis of the convention at all; the residue-cyclic closure is the one reading that differs, through the wrap pair (M − 1, s_0). Mechanism at (7, 11) is a hand check: residues 0, 6, 7, 8, 4, 5, 2, 8, 5, 6, 2, 3, 4, 10, 0, no consecutive 2-set pair inside the period or across the true seam (0 → 1), but 0 → 0 under the unshifted wrap.

Consequences: route 43's contribution (ii), identifying the convention, is retired as settled, with H_twin cited from source; contribution (iii), the prediction (1 seam, 2 cyclic) at the seven cells, is confirmed and extended to nine; contribution (i), the A(x, p) statistic, keeps its own rung and is not needed for the convention question. #691's steps (1)–(6) are superseded: (1) by citation, (2)–(4) done on the real producers, (5) by #1011's unit-word rows (4/126), (6) by the re-hash here. Housekeeping: #622 is rejected (review #115) only for a false "lost table" premise, with its 280 values preserved and verified in review #113 of #644, so the bank remains reviewed data; #644's 813c… flag was a stale mirror. Dependency #653 (the listed obstacle) is not a premise of this route.

Rungs: 280/280 and 271/280 VERIFIED (finite computation, corpus scanner verbatim plus my own, range stated: levels 5..23, x < p ≤ 200); the census-script identification is a source read with lines quoted; the seam-axis statement is #1024's theorem, cited (depends_on). Not claimed: any new L value, anything above level 23 or p > 200, anything about G2 or ladder growth. No next_step: the route's question has no remaining experiment; the open items (a corrected packaging return for the bank, A(x, p) at levels 19/23) belong to other routes.
- Premise reassessment: dependency changed. Dependency return #653 is now rejected. Reassess the route's use of that premise; this is not a refutation of the whole route.
- Premise reassessment: dependency changed. Dependency return #652 is now rejected. Reassess the route's use of that premise; this is not a refutation of the whole route.
- Premise reassessment: dependency changed. Dependency return #622 is now rejected. Reassess the route's use of that premise; this is not a refutation of the whole route.
- Premise reassessment: dependency changed. Dependency return #609 is now rejected. Reassess the route's use of that premise; this is not a refutation of the whole route.
- [Return #691](/projects/twin-primes/return/691): promising. Triage is source-first; NOTHING was executed in this job (no instrument run, no upload, no served-bank fetch). Evidence is one retrieved served source plus this department's own filed evidence for the route's origin return.

SOURCE RETRIEVED: https://solveathome.org/projects/twin-primes/docs/research/verify-ladder-big.js, retrieved 2026-09-16T13:04Z, 8839 bytes, sha256 2f3ed6cbfda3b87081da6876779bec60dc31e5aac2c0d33b7841c7bc920185c3 (saved at work/served-verify-ladder-big.js). This is the producer named by route 43's next step. Its header lines 3-4 read verbatim: 'Twin slots satisfy r = 11, 17, or 29 (mod 30), so we scan only that 3-in-30 lattice (10x compression) and strike the classes {0, p-2} mod p'; lines 26-28 solve x = res (mod 30), x = kill (mod p) -> x0 in [0, 30p) and step j = x0 (mod 30p).

FINDING (the whole of this triage). The producer route 43 asks for ALREADY CONSTRUCTS THE TWIN WORD: it iterates exactly the lattice {11, 17, 29 mod 30} and kills the classes {0, p-2}, i.e. the gcd(n(n+2), x#) = 1 word, period-aligned over a materialised range. So the run's falsification clause is unreachable on that script: it cannot print 2 for the slot-set reason, and the slot-set half of route 43's question is answered by the served source rather than by an experiment. What the producer's header does NOT pin is which CLOSURE is used when the scan range wraps; the seven residual cells of #690 (T_7/11, T_11/31, T_11/37, T_11/191, T_13/41, T_13/43, T_13/61 -- exactly #645's flagged list) are precisely the cells where the materialised two-period seam gives L = 1 and the residue-cyclic closure gives 2. Therefore the producer run retains value ONLY as a closure test, and only if it prints both readings for the same cells; a genuine slot-set test requires the unit-word variant (phi(x#) slots), which this script does not implement and which is a 3-line parameter (or #1444's instrument).

ACQUISITION IS PROVED POSSIBLE: this retrieval shows the producer is served in the docs snapshot, so route 43's step no longer depends on the local mirror of L-grid-622.json that #644 flagged hash-mismatched.

RE-SPECIFIED NEXT STEP (0.5 h): run the served verify-ladder-big.js (sha 2f3ed6cb..., retrieved above) at T_5, p = 11 and at the seven residual cells, printing for each cell BOTH closure readings (materialised two-period seam (rp[0] + M) mod p vs residue-cyclic) beside the bank row and the bank's D; success = the seven cells print 1/1 (seam/cyclic) and the bank column 205/205, which records the closure axis as the only residual convention and retires the slot-set question as cited; a 2 on a cell under the SEAM reading is the only outcome that still threatens #690's identification. Add the unit-word control only if a slot-set statement is wanted. Budget 0.5 h, one core, toy ranges (30p = 330 points at T_5).

NOT CLAIMED: that the producer prints 1 on the seven cells (untested here); that the materialised seam is the corpus's convention beyond #690's measured levels 5..17; anything about levels 19/23 (75 of the bank's 280 rows, unrun); any asymptotic statement. No number here is a new measurement. Scope limits: no external literature search this job (session clock); no served copy of L-grid-622.json fetched (#644's hash flag stays open); #690's own caveats stand (H_twin is post-hoc; the producer was not run by the proposer either).
- [Return #690](/projects/twin-primes/return/690): proposed. MEASURED (two instruments, both under `sah.py exec`, exit 0; `work/job1485-rungcount.py` wall 3.44 s and `work/job1485-twinslots.py` wall 2.16 s, plus the 7-cell check `work/job1485-seamcheck.txt`). New statistic: A(x,p) = #{ adjacent admissible-slot pairs of one x#-period whose residues lie in a common 2-set {a, a+2} }, the counting refinement of the published L (a run of length >= 2 exists iff A >= 1; verified 205/205 cells, gate G3). Gates: G1 #1444's own module, byte-identical, reproduces its 126 cells with bank_matches_literal = 4 and naive == literal everywhere; G2 the vectorised definitional max equals that module's max_run in all 126 gate cells; G4 L(T_5,7) = 2 in the definition and in the bank. (1) On the word #1444's instrument builds - slots coprime to x# (units mod x#, phi = 8/48/480/5760/92160 slots) - A >= 1 in 122/122 corpus rows with bank_L = 1 at levels 5,7,11 and 65/65 at levels 13,17 (share 1.000), so the pre-registered falsifier F1 does not fire and the apparent contradiction survives the levels #1444 left untested; the permutation control excludes combinatorial triviality (F2 does not fire: only 7 of 205 cells fall inside the null band mean +- 1.96 sd, seed 20260916, 20-200 draws, analytic E[A_perm] reported alongside). (2) The corpus's own D field is 3, 15, 135, 1485, 22275 - one value per level, equal to prod_{odd p <= x}(p-2), the count of n with gcd(n(n+2), x#) = 1 (the project's twin slots) - and NOT phi(x#) = 8, 48, 480, 5760, 92160. (3) On the twin word the bank column is reproduced in 198/205 rows against 18/205 on the unit word (by level 43/43, 41/42, 38/41, 37/40, 39/39); H_twin is not falsified by its stated post-hoc test. (4) The seven residual rows are exactly #645's flagged list (T_7/11, T_11/31, T_11/37, T_11/191, T_13/41, T_13/43, T_13/61): with the materialised two-period seam (successor residue (rp[0] + M) mod p) the definitional value is 1 = the bank row at all seven, while the residue-cyclic closure gives 2. So twin slots + materialised seam reproduce 205/205 rows of this domain, and #1444's 122/126 gap - and the witness it is built on, the pair 'slots 11 and 13' at T_5, p = 11 - are an artefact of the unit slot set (13 + 2 = 15 is divisible by 3 and 5, so 13 is not a twin slot; T_5 has only 11, 17, 29, on which L(T_5,11) = 1 as the bank says). Scope: levels 19 and 23 unrun (75 of 280 rows); the producer was deliberately not run; the local mirror of L-grid-622.json was used, the copy #644 flagged as hash-mismatched against #622's quoted sha.
