Decomposition into weight × level + jump
Deep Analysis — Eighth Edition (final): The Closed Ledger

A closing synthesis of the decompwlj programme: the record re-derived from nothing, two new exact identities, a first-order law for the congruence-lock bias, and the complete corrections ledger.

Session of 7 August 2026 · framework: Rémi Eismann, arXiv:0711.0865 · atlas: decompwlj.com · engines: C (segmented sieve, fresh), PARI/GP 2.15.4 (project kernels, fresh), Python 3.12/NumPy/SymPy (independent audit, fresh) · every number in this document is tagged VERIFIED (recomputed today, cross-engine) or CARRIED (prior census, provenance stated).

Contents
  1. The construction, its base case, and the classification plane
  2. The verified record at \(10^9\), re-derived from nothing
  3. Theorem 1 — rarefaction of the level class
  4. Theorem 2, Lemma 1, and the constant \(2C_2\) — with a manuscript erratum
  5. Species II — the level-above-one stratum
  6. The congruence lock made exact: column identities and the interior-credit law
  7. The Cramér verdict
  8. The conjecture ledger of the founding paper
  9. Horizon and the submission checklist
  10. Appendix A — algorithms and engines · Appendix B — session record and failures · Cumulative corrections log (items 1–17)

What this edition is

This is the eighth and final monograph of the deep-analysis series. Its brief is synthesis under audit: every headline number of the programme is recomputed today from source, by at least two engines that share no code, and checked digit-for-digit against the seventh edition (5 August 2026) and the submission manuscript. Where today’s run disagrees with the record, the discrepancy is either resolved (one conventions difference, §4) or logged as a new erratum (one constant misprint in the manuscript, item 17). The edition also closes the one question the seventh edition left explicitly open at micro-scale — the anatomy of the congruence-lock consecutiveness bias — with a derived first-order law, tested parameter-free over 341 cells and residue-resolved over 237 classes (§6). Nothing here is graded on a curve: results are stated with the status they earn.

1.The construction, its base case, and the classification plane

For a strictly increasing integer sequence \(a(1)jump (gap). Set \(l(n)=a(n)-d(n)\) when \(a(n)-d(n)>d(n)\), else \(l(n)=0\). The weight \(k(n)\) is the smallest divisor of \(l(n)\) exceeding \(d(n)\) (when \(l(n)\neq 0\)), and the level is \(L(n)=l(n)/k(n)\). Then

\[ a(n) \;=\; k(n)\times L(n) + d(n) \;=\; \text{weight}\times\text{level}+\text{jump}, \]

the decomposition existing iff \(a(n{+}1)<\tfrac32\,a(n)\) (Lemma 2 of the manuscript). A term is level-classified when \(k(n)>L(n)\), weight-classified when \(k(n)

Proposition 1 (Eratosthenes collapse) PROVED
For the natural numbers \(a(n)=n\): \(d\equiv 1\), \(l(n)=n-1\), \(k(n)=\operatorname{spf}(n-1)\) (smallest prime factor), \(L(n)=(n-1)/\operatorname{spf}(n-1)\). A term is level-classified iff \(n-1\) is prime. The construction restates the sieve of Eratosthenes; iterating on the level recovers the complete factorization of \(n-1\). Re-verified today for \(n\le 2000\) inside the PARI self-test and drawn for \(n\le 30000\) below.
naturals arrowhead
Figure 1. The base case: natural numbers \(n\le 30000\) in the \((\log_{10}k,\log_{10}L)\) plane, square canvas, equal aspect. The weight sheet (indigo) is the Eratosthenes arrowhead; the level line (copper, \(L\) small) is exactly \(\{n : n-1 \text{ prime}\}\). VERIFIED
primes classification plane
Figure 2. The prime record: all decomposable primes \(p\le 2\times 10^6\) (148,932 points from today’s C engine, naive-gate–verified row by row), equal aspect so the \(k\)–\(L\) ratio is faithful. Weight class (indigo, 83.1%) above the diagonal, level class (copper, 16.9%) below; the diagonal \(k=L\) carries the ties \(l=k^2\) (12 primes below \(10^6\); A121155-type). The level lines at \(L=1,3,5,\dots\) are the object of Theorems 1 and 2. VERIFIED

2.The verified record at \(10^9\), re-derived from nothing

The census pipeline was rebuilt from an empty directory this session: a fresh C engine (segmented odd-bitmap sieve streaming consecutive primes; factoring-light classifier by \(g\)-smooth part, Miller–Rabin on the rough part, and divisor search on the smooth part; internal fast-vs-naive gate on every prime up to \(2\times 10^6\)), the project’s own PARI/GP kernels (decompwlj_optimized.txt: orig_naive, orig_sieve, decomp, decomp_fact, plus selftest()), and an independently coded Python classifier. Protocol: the three engines share no code and no intermediate data; any cross-engine disagreement is a blocker. Results:

xdecomposablelevel class \(N_{\mathrm{lev}}\) level one \(N_1\)level >1 \(N_{>1}\)\(f=N_{\mathrm{lev}}/\)dec ties \(l=k^2\)status
10³1657524510.45453 VERIFIED
10⁴1,2263901352550.31816 VERIFIED
10⁵9,5892,6588801,7780.27728 VERIFIED
10⁶78,49518,3535,95312,4000.233812 VERIFIED
10⁷664,576138,04944,01194,0380.207728 VERIFIED
10⁸5,761,4521,078,707339,870738,8370.187279 VERIFIED
10⁹50,847,5318,692,3392,708,0315,984,3080.1709187 VERIFIED
10¹⁰455,052,50871,670,80822,083,60849,587,2000.1575 CARRIED
Table 1. Complete classification census. Rows \(10^3\)–\(10^9\) are today’s C run (49 s, single core), equal digit-for-digit to the seventh edition’s record; the \(10^{10}\) row is the prior census (seventh edition, 5 Aug 2026; tie count was not recorded there). The three non-decomposable primes are exactly \(\{2,3,7\}\) (Nagura), re-confirmed by the stream.

Invariants, all at zero violations over 50,847,531 primes

3.Theorem 1 — rarefaction of the level class

Theorem 1 (Rarefaction; manuscript) PROVED*
As \(x\to\infty\), \[ N_{\mathrm{lev}}(x)\;\ll\;\frac{x\,\log\log x}{(\log x)^{3/2}}, \] so the level class has density zero among the primes: founding-paper Conjecture 9 holds. The proof normalizes level-classified primes to the form \(p=kL+g\) with prime weight dominating, buckets the pair \((L,g)\) with \(M=\lceil(\log x)^{3/2}\rceil\), and applies Selberg’s upper-bound sieve in dimension 3 to the triple \((P,\;LP+2m,\;LP+4m)\), discarding the consecutiveness constraint in the upper bound. The asterisk means exactly one thing: the argument has passed internal audit across editions but not yet external refereeing. Submission removes it.

The finite-\(x\) content is the envelope statistic \(f(x)\sqrt{\log x}/\log\log x\), which must remain bounded (and should decrease) if the bound has the right shape. Fresh values:

x10⁶10⁷10⁸10⁹10¹⁰
\(f\sqrt{\log x}/\log\log x\)0.3310.3000.2760.257 0.241 CARRIED

monotone decreasing with no plateau — consistent with the conjectured truth \(N_{\mathrm{lev}}(x)\asymp x\log\log x/\log x\) (the sieve exponent \(3/2\) being an artifact of the dimension-3 normal form; manuscript Problem 1 asks for exponent 2 on the level-one stratum). VERIFIED at \(10^6\)–\(10^9\).

4.Theorem 2, Lemma 1, and the constant \(2C_2\) — with a manuscript erratum

Level-one primes are, up to the two composite-\(l\) exceptions \(p=13,31\) and the additive constant of Lemma 5, exactly the primes \(p_n\) with \(\ell(n)=2p_n-p_{n+1}\) prime. The conditional asymptotic (Theorem 2 CONDITIONAL on Hardy–Littlewood for triples plus a Gallagher-type gap hypothesis) is \(N_1(x)\sim 2C_2\,x/\log^2 x\), whose constant comes from Lemma 1: the line average of the triple singular series \(\mathfrak S_3(g)\) over \(6\mid g\) equals \(2C_2\), via the per-prime identity

\[ \frac{1-3/q}{(1-1/q)^3}\cdot\frac{(q-1)(q-2)}{q(q-3)}\;=\;1-\frac{1}{(q-1)^2} \qquad(q\ge 5), \]

re-verified today symbolically in PARI (exact zero) and numerically to 38 digits: \(C_2=0.66016181584686957\ldots\), \(2C_2=1.32032363169373915\ldots\), residual \(0.\mathrm{E}{-}38\). PROVED (the identity and line average; the asymptotic remains conditional).

New erratum (corrections item 17): the printed value of \(D\) is wrong in the manuscript and the seventh edition

The constant \(D=9\prod_{q\ge 5}(1-3/q)(1-1/q)^{-3}\) is printed as “\(=5.7164975\ldots\)” in the manuscript (and twice in the seventh edition, which further claims the \(10^6\)-truncated product 5.716498 agrees with it “to the seventh decimal”). Both statements are incorrect. Today’s computation gives, by two independent routes,

\[ D \;=\; 5.71649719143844086\ldots \;=\; 2\,C_3, \]

where \(C_3=2.85824859571922043\ldots\) is the classical Hardy–Littlewood prime-triplet constant — a cross-identification that makes the value independently checkable against the literature. Route one: PARI’s zeta-accelerated prodeulerrat (38 digits, same routine that reproduces the published twin constant \(C_2\) exactly). Route two: the direct product over primes to \(10^7\) (5.71649729…) with a rigorous tail bound of relative size \(1.2\times10^{-7}\), bracketing the accelerated value. The misprint is numerically harmless downstream (relative \(5.5\times10^{-8}\) in every prediction that uses \(D\)), but the printed digits must be corrected before submission: 5.7164975 → 5.7164972 (or, better, print \(5.71649719\ldots=2C_3\)). The truncation sentence should say the \(10^6\)-truncated product 5.7164984 agrees with the limit to the sixth decimal. VERIFIED

Gap-by-gap test of the Theorem-2 machinery at \(10^9\)

Removing the gap-distribution layer isolates hypothesis H1: for each \(6\mid g\), the predicted level-one count is \(\big(\sum_{g(n)=g}1/\log p_n\big)\cdot \mathfrak S_3(g)/\mathfrak S_2(g)\), against the observed count in the \(\ell\)-prime convention. A conventions note first: today’s engine initially reported 672,963 at \(g=6\) against the record’s 672,962. The difference is exactly the composite-\(l\) exception \(p=31\) (\(l=25\), \(g=6\)): the complete-count convention includes it, the \(\ell\)-prime convention (which the prediction models) excludes it, as it excludes \(p=13\) at \(g=4\). With the convention stated, the two sessions agree digit-for-digit. This is not an erratum; it is the same population-convention lesson as corrections item 5, now documented.

gobserved \(N_1(g)\)predictedobs/pred
6672,962674,8070.9973
12504,424494,4531.0202
18373,734370,2391.0094
24267,409261,1571.0239
30368,006359,8161.0228
36125,060128,8600.9705
42135,393131,0251.0333
4863,48363,3261.0025
Table 2. Head of the gap-by-gap H1 test at \(10^9\), \(\ell\)-prime convention, singular-series ratios computed with the corrected \(D\). Aggregate over \(6\mid g\le 150\): 1.0121 — the stable +1.2% consecutiveness excess (manuscript Problem 4), reproduced exactly. VERIFIED

Erratum-14 confirmation. The seven per-gap ratios outside the manuscript’s originally claimed window \([0.97,1.05]\) reproduce identically: \(g=84\) (1.0513), 102 (1.0560), 108 (0.9669), 114 (1.0515), 132 (1.1318, on 484 observations, a \(\approx2.5\sigma\) Poisson fluctuation), 138 (1.0602), 144 (0.9627). The manuscript sentence must be reworded exactly as item 14 prescribes: the window claim holds for the eleven gaps with \(\ge 10^4\) observations, and small-count gaps scatter as Poisson noise. VERIFIED

gap-by-gap
Figure 3. Observed/predicted level-one counts per gap at \(10^9\) with Poisson error bars; the shaded band is the manuscript window, rose points the seven erratum-14 gaps, the dashed teal line the +1.2% aggregate excess whose mechanism §6 dissects. VERIFIED

The constant, honestly

The raw windowed density \(\Delta N_1\cdot\log^2 x_m/\Delta x\) rises through 0.9472 / 0.9804 / 1.0079 on the decade windows ending at \(10^7/10^8/10^9\) (fine windows reach 1.0522 at \(10^9\)) — still 20% below the conditional asymptote \(2C_2=1.3203\), with logarithmically slow approach. The identification of the constant therefore rests on Lemma 1’s exact identity plus the gap-by-gap test above, not on the raw density at accessible \(x\); Figure 4 shows both so no reader mistakes the state of play.

2C2 windowed
Figure 4. Windowed Species-I density against the conditional asymptote \(2C_2\). The gap between curve and line at \(10^9\) is the expected \(O(1/\log x)\)-type finite-size deficit, not a discrepancy in the constant. VERIFIED

5.Species II — the level-above-one stratum

The level-above-one share obeys the working law \(f_{>1}(x)\approx \hat c_2\,\log\log x/\log x\) with

window(10⁵,10⁶](10⁶,10⁷](10⁷,10⁸] (10⁸,10⁹](10⁹,10¹⁰]
windowed \(\hat c_2\)0.76900.77050.76690.7656 0.7648 CARRIED

band \(0.773\pm 0.010\) — today’s four fresh windows equal the record to every printed digit. The cumulative diagnostic \(f_{>1}\log x/\log\log x\) descends 0.8312 / 0.8204 / 0.8108 / 0.8046 at \(10^6\)–\(10^9\) (0.7999 at \(10^{10}\) carried) — the slow drift that forced the retraction of the once-conjectured \(c_2=1\) (corrections item 11; the retraction stands). VERIFIED / constant identification OPEN (Ford–Koukoulopoulos divisors-of-shifted-primes territory).

Erratum-15 confirmation. The Mertens-normalized ratio \(R_2\) (mass \(2\log g_n/\log l_n\) per decomposable prime) gives cumulatively 0.4469 / 0.4460 / 0.4436 / 0.4422 at \(10^6\)–\(10^9\) today; the seventh edition printed 0.4470 and 0.4435 at the first and third decade — differences of one unit in the fourth decimal, traced to floating-point accumulation order over \(5\times10^7\) summands, i.e. sub-\(10^{-4}\) agreement and no substantive change. On the decade windows the two sessions agree exactly: 0.4458 / 0.4432 / 0.4420 on the three windows from \((10^6,10^7]\). The manuscript’s “\(R_2\approx 0.4412\), flat to three decimals over \(10^6\)–\(10^{10}\)” remains wrong as written (item 15): flatness at that precision holds only from \(10^9\) upward in the natural-mass convention. VERIFIED

diagnostics
Figure 5. The three bounded diagnostics on one square canvas: Theorem-1 envelope (indigo, decreasing), Species-II normalization (copper, drifting below 0.81), cumulative \(R_2\) (teal, settling near 0.442). None shows the plateau its naive constant-law would require — the honest summary is bounded decrease, not convergence claims. VERIFIED

6.The congruence lock made exact: column identities and the interior-credit law

The seventh edition established the congruence lock: for an odd prime \(r\) and a decomposable prime \(p\) with gap \(g\),

\[ r\mid l \iff p\equiv g \pmod r \qquad\text{(exact, since } l=p-g\text{)}, \]

and measured that for \(r>g\) the lock class occupies the flat share \(1/(r-2)\) of gap-\(g\) primes to within a small, structured bias: exact at \((r,g)\) with \(g\in\{2,4\}\), a deficit growing toward \(\approx 4.6\%\) as \(g\to r\). It posed the anatomy of that bias as an open micro-problem. This section answers it in three steps: two exact identities that turn weight columns into lock counts, a derived first-order law for the bias, and a residue-resolved test of the law’s mechanism.

6.1  Exact column identities

Column identity for \(k=5\) PROVED (this edition)
For every \(x\): \(\;\#\{p\le x:\ k(p)=5\}\;=\;\#\{p\le x:\ g=4 \text{ and } 5\mid l\}\).
Proof. If \(k=5\) then \(g<5\), so \(g\in\{2,4\}\). If \(g=2\), rigidity (Proposition 2, \(6\nmid 2\)) forces \(3\mid l\) and \(3>g\), so \(k=3\neq 5\); hence \(g=4\) and \(5\mid l\). Conversely if \(g=4\) and \(5\mid l\): rigidity again gives \(3\mid l\), but \(3\le g\) is inadmissible, and \((4,5)\) contains no integer, so \(k=5\). \(\square\)   The column has exactly one level-classified member: \(k=5>L\iff l<25\iff l=15\iff p=19\). At \(10^9\): 1,141,573 = 1,141,572 (weight class) + 1 (\(p=19\)). VERIFIED
Column identity for \(k=7\) PROVED (this edition)
\(\;\#\{k=7\}\;=\;\#\{g=6,\ 7\mid l\}\;+\;\#\{g=4,\ 7\mid l,\ 5\nmid l\}\), with no level-classified members (the candidates \(l<49\) all fail primality of \(p\)).
Proof sketch. \(k=7\Rightarrow g\in\{2,4,6\}\); \(g=2\) is claimed by \(k=3\) as above. For \(g=6\): \(6\mid g\) gives \(3\nmid l\) by rigidity, \(5\le g\) is inadmissible, \((6,7)\) is empty, so \(k=7\iff 7\mid l\). For \(g=4\): \(k=7\iff 7\mid l\) and \(5\nmid l\) (else \(k=5\)). \(\square\)   At \(10^9\): 1,635,817 = 1,179,345 + 456,472. VERIFIED

These are exact bridges: a multiplicative weight column is a finite union of residue-conditioned gap events. They explain quantitatively why the columns are non-monotone in Figure 6 (the \(k=5\) column draws on a single gap, \(k=7\) on two) and they give the census a new cross-check, passed on the nose. They also yield a clean CRT-independence measurement: within \(g=4\), the joint lock \(\#\{35\mid l\}=228{,}191\) against the product prediction \(\#\{7\mid l\}/3 = 228{,}221\) — a deviation of \(-30=-0.08\sigma\) (\(\sigma\approx 390\)): the two locks are statistically independent at \(10^9\) to the resolution available. VERIFIED

weight columns
Figure 6. Weight columns at \(10^9\) (log scale). The twin column \(k=3\) (rose) is Lemma 4; the \(k=5\) column satisfies the exact identity above; composite weights (copper) are the Cube-Lemma stratum. The non-monotone profile is the residue-conditioned gap structure, not noise. VERIFIED
level lines
Figure 7. Level lines at \(10^9\) (log scale): occupancy of odd \(L\), with \(3\mid L\) (copper) enhanced — the mirror image, on the level side, of the mod-3 rigidity that shapes the weight side. Descriptive; the occupancy law for individual level lines is not pursued here. VERIFIED

6.2  The interior-credit law

Fix a gap \(g\) and an odd prime \(r>g\), and condition on \(p, p+g\) being consecutive primes. Consecutiveness means every interior even offset \(j\in E_g=\{2,4,\dots,g-2\}\) has \(p+j\) composite. Here is the mechanism: if \(p\equiv -j \pmod r\), then \(r\mid p+j\) and the compositeness of that interior point is guaranteed for free; that residue class needs one fewer accident to achieve gap exactly \(g\), so it is over-represented among gap-\(g\) primes. The lock class \(p\equiv g\) earns no such credit (its offset \(r-g\) is odd, outside \(E_g\)), so it is under-represented relative to the credited classes — the observed deficit. First-order bookkeeping makes this quantitative. Let

\[ u_j \;=\; \frac{\mathfrak S_3(\{0,j,g\})}{\mathfrak S_2(\{0,g\})}\cdot \Big\langle \tfrac{1}{\log p}\Big\rangle_{g} \]

be the Hardy–Littlewood conditional probability that the interior point \(p+j\) is prime given the prime pair \((p,p+g)\) — the “prime-risk” the credit removes — where \(\langle 1/\log p\rangle_g\) is measured within the gap-\(g\) population (no free parameter). Weight each admissible residue \(a\bmod r\) by

\[ w(a) \;=\; 1+\frac{r}{r-1}\sum_{\substack{j\in E_g\\ j\equiv -a \,(r)}} u_j , \qquad \Pr[p\equiv a\mid g] \;=\; \frac{w(a)}{\sum_b w(b)}, \]

the factor \(r/(r-1)\) renormalizing the risk of the non-credited points once \(r\nmid p+j\) is known. Expanding at the lock class gives the closed-form first-order deficit

\[ \Delta_{\mathrm{pred}}(g,r)\;=\;1-(r-2)\Pr[p\equiv g\mid g]\;\approx\; \frac{r}{(r-1)(r-2)}\;\sum_{j\in E_g} u_j . \]

Structural zeros, now explained

\(g=2\): \(E_2=\varnothing\), so \(\Delta=0\). \(g=4\): \(E_4=\{2\}\) and the pattern \(\{0,2,4\}\) covers all residues mod 3, so \(\mathfrak S_3(\{0,2,4\})=0\) and again \(\Delta=0\) — the interior point of a \(g=4\) pair is always divisible by 3, so no prime \(r\) can earn credit there. The seventh edition’s one-parameter model collapsed precisely at \(g=4\); in the present law that collapse is a two-line consequence of the singular series vanishing. Measured: \((g,r)=(2,5)\): \(1.0005\pm0.0008\); \((4,5)\): \(1.0000\pm0.0008\); \((4,7)\): \(0.9996\pm0.0011\). VERIFIED

Parameter-free test. Over all 341 cells \((g,r)\) with even \(g\le 40\) and prime \(g0.916, with \(\chi^2/\mathrm{pt}=2.24\) — the law predicts the full shape of the bias surface (both the \(g/r\) growth and the per-\(g\) fine structure) with magnitudes running \(\approx23\%\) low.

One-parameter completion. A single global factor \(\hat\lambda = 1.2324\pm0.0105\) (weighted least squares through the origin) absorbs the second-order enhancement: \(\chi^2/\mathrm{ndf}=0.806\) over 340 degrees of freedom. Flagship cells: \((6,7)\) measured \(0.9683\pm0.0008\) vs \(0.9681\); \((12,13)\): \(0.9537\pm0.0015\) vs \(0.9530\); \((30,31)\): \(0.9466\pm0.0035\) vs \(0.9453\). One number renders the entire 341-cell surface statistically complete.

interior-credit law
Figure 8. The interior-credit law over all 341 cells at \(10^9\): measured deficit against the parameter-free prediction (dashed \(y=x\)), colored by \(\log r\). The exact zeros cluster at the origin; the rose line is the fitted second-order factor \(\hat\lambda=1.232\). Equal aspect. VERIFIED

6.3  The mechanism, residue by residue

The law predicts more than the lock-class deficit: it assigns each admissible residue its own occupancy, with credited classes surplused in proportion to their particular \(u_j\) — a fingerprint no flat model produces. Reading all residue histograms for \(g\le 14\), \(3g\) (237 admissible classes) against the parameter-free prediction: \(\chi^2/\mathrm{pt}=18.3\), against the flat null 527 — a 29-fold reduction with zero fitted constants; applying the same global \(\hat\lambda\) gives \(\chi^2/\mathrm{pt}=0.997\). The mechanism — not merely the aggregate — is confirmed. VERIFIED

residue-resolved
Figure 9. Residue-resolved occupancy at \((g,r)=(12,13)\), \(10^9\): measured \((r-2)\Pr[p\equiv a]\) (indigo, with error bars) against the parameter-free prediction (copper squares). The five credited classes \(a\in\{3,5,7,9,11\}\) carry surpluses ordered exactly as their \(u_j\) (largest at \(a=7\), whose interior point is \(p+6\)); the six uncredited classes, including the lock class \(a\equiv g\equiv 12\), share the uniform deficit. The uniform gap between copper and indigo is the second-order factor \(\hat\lambda\). VERIFIED

Status and what remains open

The derivation is first-order local calculus, so the law itself is tagged HEURISTIC; its predictive success at \(10^9\) is VERIFIED as stated above; the structural zeros at \(g\in\{2,4\}\) are PROVED given the pattern inadmissibility. What remains OPEN is the second-order constant: deriving \(\lambda\approx1.23\) from the next order of the same calculus (pairwise interior patterns \(\mathfrak S_4\), and the tilt that conditioning on “gap exactly \(g\)” induces on the environment). The same machinery, summed over residues instead of resolved by them, is the natural route to manuscript Problem 4’s +1.2% consecutiveness excess and its per-gap signature; that computation is not attempted here. The seventh edition’s micro-problem is closed; its successor is sharper and smaller.

7.The Cramér verdict

The mandatory deflationary control, run fresh with two random models through the same classifier (fixed seed 20260807, \(10^9\) each): Model A, the classic Cramér sequence (each \(n\) included with probability \(1/\log n\)); Model B, parity-matched (odd \(n\) with probability \(2/\log n\), so gaps are even and \(l\) odd, as for primes).

x\(f\) primes\(f\) Model A\(f\) Model B \(f_1\) primes\(f_1\) A\(f_1\) B
10⁶0.23380.23590.28880.07580.07780.1598
10⁷0.20770.20940.25400.06620.06660.1336
10⁸0.18720.18790.22630.05900.05790.1158
10⁹0.17090.17080.20490.05330.05100.1021
Table 3. Primes against the two controls. VERIFIED

The verdict is sharper than in previous editions, and it cuts both ways. The aggregate level share of the primes is generic: the classic model tracks it within 1% at every decade and to 0.1% at \(10^9\) (0.1708 vs 0.1709 — the three-decimal coincidence at the last decade is luck, the percent-level tracking is not). Any presentation of Conjecture 9’s rarefaction rate as prime-specific structure would be wrong: the decay shape is what any \(1/\log n\)-density sequence does under this construction. But the composition is arithmetic through and through: the parity-matched model, which one might expect to be the fairer control, overshoots the level share by 20% and doubles Species I (0.1021 vs 0.0533 at \(10^9\)), because real \(\ell=2p_n-p_{n+1}\) is prime with the Hardy–Littlewood conditional density \(\approx\mathfrak S_3/\mathfrak S_2\cdot 1/\log\), not the bare \(2/\log\) of the random odd model. The framework’s genuine content at the level of counting is therefore the species split, its constants (\(2C_2\); the open Species-II constant), and the exact lock/column structure of §6 — not the aggregate decay. This paragraph should be read as binding on all future prose about Conjecture 9.

cramer control
Figure 10. Rarefaction of the level class: primes (indigo) against the classic Cramér control (teal, dashed) and the parity-matched control (rose, dotted); lower curves are the Species-I shares. The aggregate is generic; the split is not. VERIFIED

8.The conjecture ledger of the founding paper

ItemStatement (informal)Status
C1infinitely many \(k=3\) primes (≡ twin primes, Lemma 4) OPEN classical strength
C2, C3, C5, C6infinitude/structure statements equivalent to Polignac-type problems OPEN classical strength
C4cube bound for composite-weight level primes PROVED (Proposition 3, sharp at 131)
C7, C8divisibility rigidities PROVED as elementary (Proposition 2); struck through on the OEIS page; never a contribution
C9level-classified primes rarefy PROVED* (Theorem 1)
Theorem 2 constant\(N_1\sim 2C_2\,x/\log^2x\) CONDITIONAL (H1 + H2)
Species-II constants\(\hat c_2\approx 0.773\), \(R_2\approx 0.442\) HEURISTIC / OPEN; \(c_2=1\) RETRACTED
Lock law\(\Pr[r\mid l\mid g]=1/(r-2)\), \(r>g\) HEURISTIC flat law + VERIFIED interior-credit correction (§6); second-order constant OPEN
Column identities\(\#\{k=5\}\), \(\#\{k=7\}\) as lock counts PROVED (this edition)

The difficulty-conservation principle stands unweakened: recasting a classical problem in weight–level coordinates does not lower its difficulty, and every classically-hard item above remains exactly that. The framework’s native yield is the row set {Theorem 1, Proposition 2/3, Lemmas 1–5, the lock and column structure} — and it is on that yield that the manuscript stakes its claim.

9.Horizon and the submission checklist

The single highest-priority action of the programme is unchanged: submit the manuscript (Journal of Integer Sequences, Integers, or Experimental Mathematics), which is the only step that can remove the asterisk from Theorem 1. Pre-submission checklist, consolidated from the ledger:

Research horizon, in the order of expected yield: (i) the function-field analogue over \(\mathbb F_q[t]\), \(q\) odd, where the analogue of Conjecture 9 may be provable unconditionally with today’s technology, since the coupling obstruction (the “next prime” dependence that blocks a direct application of Ford-type theorems here) weakens in the polynomial setting; (ii) the second-order derivation of \(\hat\lambda\) and, through the same calculus, Problem 4’s +1.2% excess; (iii) the Species-II constant (Ford–Koukoulopoulos); (iv) arithmetical congruence monoids \(M_{1,m}\); (v) the automated atlas sweep computing regime certificates across the \(\sim\)1,000 decomposed OEIS sequences. All are additive to, and none is a prerequisite of, submission.

A.Appendix A — algorithms and engines

Everything below ran today, single core, 4 GB RAM. Timings: C census to \(10^9\), 49 s; PARI driver (self-test, three-algorithm regression to \(10^6\), \(10^7\) recount, constants, deep witnesses), 4.4 s; Cramér controls, 34 s + 30 s; Python audit, under a minute.

A.1  PARI/GP (reference engine, project kernels)

The project’s optimized kernel (decompwlj_optimized.txt) provides orig_naive / orig_sieve (the paper’s originals), decomp (trial division), decomp_fact (factorization + fordiv), decomp_auto, classification and sequence drivers, and selftest(). The session driver:

\r kernel.gp            \\ the project kernel, CRLF-stripped
selftest();

\\ three-algorithm regression on all primes < 1e6 (+ tie census)
V = primes(primepi(10^6)+1);
for (i = 1, #V-1,
  a = orig_sieve(V[i],V[i+1]); b = decomp(V[i],V[i+1]); c = decomp_fact(V[i],V[i+1]);
  if (a != b || b != c, error("MISMATCH at ", V[i])));

\\ constants (38 digits) and the Lemma-1 identity
C2 = prodeulerrat(1 - 1/(x-1)^2, 1, 3);          \\ 0.66016181584686957...
D  = 9*prodeulerrat((1-3/x)/(1-1/x)^3, 1, 5);    \\ 5.71649719143844086... = 2*C3
A  = prodeulerrat((x-1)*(x-2)/(x*(x-3)), 1, 5);
D/6*A - 2*C2                                      \\ 0.E-38  (line average = 2*C2)
q='q; simplify((1-3/q)/(1-1/q)^3*(q-1)*(q-2)/(q*(q-3)) - (1-1/(q-1)^2))  \\ 0, symbolic

\\ deep witnesses via decomp_fact  [k, L, d]
\\ p = 1000000000039            (g=22): [461, 2169197397, 22]              weight
\\ p = 10^18 + 3                (g= 6): [47, 21276595744680851, 6]         weight
\\ p = 10^24 + 7                (g=42): [11909, 83970106642035435385, 42]  weight

A.2  C census engine (fresh, this session)

Segmented odd-bitmap sieve (span \(2^{24}\)) streaming consecutive primes; classification without full factorization: split \(l\) into its \(g\)-smooth part \(S\) (primes \(\le g\)) and rough part \(R=l/S\); a divisor-DFS over \(S\) yields the smallest smooth divisor \(>g\) and the largest \(\le g\); \(R\) is resolved by one Miller–Rabin call (bases 2,3,5,7, valid far beyond the range where it decides compositeness here; primality of rough \(R>\sqrt l\) is what the classification needs). Level terms get exact \((k,L)\); weight terms exact \(k\) up to the histogram cap. Every prime \(\le 2\times10^6\) is re-classified by a naive divisor scan inside the same run — zero mismatches gate the stream. Checkpoints at \(x=10^{j/8}\); per-gap level-one counts, \(\sum 1/\log p\) masses, lock numerators \(p\bmod r\equiv g\) for \(g\le 40\), \(r\le 103\), residue histograms for \(g\le 14\), \(r\le 17\), weight/level histograms, exception lists, and the maximal-gap ladder are accumulated exactly. Full source:

sweep.c (census engine)
/* decompwlj census engine — 8th edition fresh sweep.
 * Streams consecutive primes to LIMIT via a segmented sieve and classifies
 * every decomposable prime p (gap g, l = p-g) as weight/level, with exact
 * level value L, weight k (exact when k <= KCAP or from the smooth part),
 * congruence-lock counters, residue histograms, per-gap level-one counts,
 * per-gap logarithmic mass, R2 mass, and invariant checks.
 *
 * Classification without full factoring:
 *   S = g-smooth part of l (primes q <= g), R = l/S (all prime factors > g).
 *   - R > 1 and R <= sqrt(l)          -> weight (divisor R in (g, sqrt l]).
 *   - R > sqrt(l), R composite        -> weight (spf(R) <= sqrt R <= sqrt l).
 *   - R > sqrt(l), R prime (or R = 1) -> decided by divisors of S:
 *       weight iff S has a divisor in (g, sqrt l]; else level with
 *       k = min(smallest divisor of S exceeding g, R), L = l/k.
 * Deterministic Miller-Rabin bases {2,3,5,7} (valid < 3.215e9 > any l here).
 * For p <= DUMPMAX a naive reference classifier re-derives every row and the
 * two paths are compared (internal zero-mismatch gate) + rows dumped to CSV.
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <math.h>

typedef uint64_t u64; typedef uint32_t u32; typedef __uint128_t u128;

static u64 LIMIT = 1000000000ULL;
static const u64 DUMPMAX = 2000000ULL;
#define KCAP 1000
#define GMAX 512            /* per-gap arrays (max gap below 1e9 is 282) */
#define LOCK_GMAX 40
static const int lock_r[] = {3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103};
#define NLOCKR ((int)(sizeof(lock_r)/sizeof(lock_r[0])))

/* ---------- small primes ---------- */
static u32 *base_primes; static int n_base;          /* primes to sqrt(LIMIT+pad) */
static u32 small_primes[2048]; static int n_small;   /* primes to 1550 (>= any g, and KCAP scans) */

static void gen_small(void){
  char c[1551]; memset(c,0,sizeof c);
  for(int i=2;i<=1550;i++) if(!c[i]){ small_primes[n_small++]=i; for(int j=2*i;j<=1550;j+=i)c[j]=1; }
}
static void gen_base(u64 n){
  u32 lim=(u32)floor(sqrt((double)n))+2;
  char *c=calloc(lim+1,1);
  base_primes=malloc(sizeof(u32)*((u64)lim+16)); n_base=0;
  for(u32 i=2;i<=lim;i++) if(!c[i]){ base_primes[n_base++]=i; for(u64 j=(u64)i*i;j<=lim;j+=i)c[j]=1; }
  free(c);
}

/* ---------- Miller-Rabin, bases 2,3,5,7 (deterministic < 3,215,031,751) ---------- */
static u64 mulmod(u64 a,u64 b,u64 m){ return (u64)((u128)a*b%m); }
static u64 powmod(u64 a,u64 e,u64 m){ u64 r=1; a%=m; while(e){ if(e&1)r=mulmod(r,a,m); a=mulmod(a,a,m); e>>=1;} return r; }
static int is_prime64(u64 n){
  if(n<2)return 0; for(int i=0;i<12 && (u64)small_primes[i]*small_primes[i]<=n+1;i++){ u32 q=small_primes[i]; if(n==q)return 1; if(n%q==0)return 0; }
  if(n<121)return n>1;
  u64 d=n-1; int s=0; while(!(d&1)){d>>=1;s++;}
  static const u64 bases[4]={2,3,5,7};
  for(int i=0;i<4;i++){ u64 a=bases[i]%n; if(!a)continue; u64 x=powmod(a,d,n); if(x==1||x==n-1)continue;
    int ok=0; for(int r=1;r<s;r++){ x=mulmod(x,x,n); if(x==n-1){ok=1;break;} } if(!ok)return 0; }
  return 1;
}
static u64 isqrt64(u64 n){ u64 r=(u64)sqrtl((long double)n); while(r*r>n)r--; while((r+1)*(r+1)<=n)r++; return r; }

/* ---------- divisor DFS over the smooth part ---------- */
static u64 sf_p[24]; static int sf_e[24]; static int sf_n;   /* factorization of S */
static u64 g_thresh, dmin_out, lbest_out, sqrtl_glob;
static void dfs(int i,u64 cur){
  if(cur>g_thresh){ if(cur<dmin_out)dmin_out=cur; return; }   /* prune: children only larger */
  if(cur>lbest_out)lbest_out=cur;                             /* candidate divisor <= g */
  if(i==sf_n)return;
  u64 v=cur;
  dfs(i+1,v);
  for(int e=1;e<=sf_e[i];e++){ v*=sf_p[i]; dfs(i+1,v); if(v>g_thresh)break; }
}
/* dmin = smallest divisor of S exceeding g (UINT64_MAX if none, i.e. S<=g);
 * lbest = largest divisor of S that is <= g. */
static void s_divisors(u64 g){
  g_thresh=g; dmin_out=UINT64_MAX; lbest_out=1; dfs(0,1);
}

/* ---------- statistics ---------- */
typedef struct {
  u64 ndec, nweight, nlevel, nlev1, ngt1, ntie;
  u64 twin_k3, twin_g2, twin_bad;      /* Lemma 4 */
  u64 mod3_viol;                        /* Theorem A */
  u64 lev_Lgtg_viol;                    /* L <= g-1 check on level class */
  u64 khist[KCAP+2];                    /* weight-class k histogram; [KCAP+1]=overflow */
  u64 lhist[GMAX];                      /* level-class L histogram */
  u64 n1_by_gap[GMAX]; u64 cnt_by_gap[GMAX];
  double mass_by_gap[GMAX];             /* sum 1/ln p over gap-g pairs */
  double r2mass;                        /* sum 2 ln g / ln l over decomposables */
  u64 lock_num[LOCK_GMAX+2][NLOCKR];    /* lock hits: p == g mod r, per (g,r) */
  u64 reshist[LOCK_GMAX+2][NLOCKR][104];/* residue histogram of p mod r given gap g */
  u64 gap_sq_cnt;                       /* g >= sqrt(l) primes (empty-window) */
  u64 comp_weight_level_cnt;            /* level-classified with composite weight */
  u64 cube_viol;                        /* Cube Lemma l <= (g-1)^3 violations   */
} Stats;
static Stats S;

static u64 ewp[64]; static int n_ewp=0;      /* empty-window primes found */
static u64 cwl[64]; static int n_cwl=0;      /* composite-weight level primes */

/* checkpoints: x = 10^(j/8), j=24..72, plus exact decades */
#define NCK 128
static u64 ck[NCK]; static int nck=0, ck_i=0;
static void build_ck(void){
  for(int j=24;j<=72;j++){ double v=pow(10.0,j/8.0); u64 x=(u64)(v+0.5); if(x<=LIMIT) ck[nck++]=x; }
  for(int d=3;d<=15;d++){ u64 x=1; for(int i=0;i<d;i++)x*=10; if(x<=LIMIT){ ck[nck++]=x; } }
  /* sort unique */
  for(int i=0;i<nck;i++)for(int j=i+1;j<nck;j++)if(ck[j]<ck[i]){u64 t=ck[i];ck[i]=ck[j];ck[j]=t;}
  int m=0; for(int i=0;i<nck;i++) if(!m||ck[i]!=ck[m-1]) ck[m++]=ck[i];
  nck=m;
}
static void dump_ck(u64 x, FILE*f){
  fprintf(f,"{\"x\":%llu,\"ndec\":%llu,\"nw\":%llu,\"nlev\":%llu,\"n1\":%llu,\"ngt1\":%llu,\"ntie\":%llu,"
            "\"twin_k3\":%llu,\"twin_g2\":%llu,\"twin_bad\":%llu,\"mod3v\":%llu,\"Lviol\":%llu,\"r2mass\":%.6f,"
            "\"gapsq\":%llu,\"cwl\":%llu,\"cubev\":%llu",
    (unsigned long long)x,(unsigned long long)S.ndec,(unsigned long long)S.nweight,(unsigned long long)S.nlevel,
    (unsigned long long)S.nlev1,(unsigned long long)S.ngt1,(unsigned long long)S.ntie,
    (unsigned long long)S.twin_k3,(unsigned long long)S.twin_g2,(unsigned long long)S.twin_bad,
    (unsigned long long)S.mod3_viol,(unsigned long long)S.lev_Lgtg_viol,S.r2mass,
    (unsigned long long)S.gap_sq_cnt,(unsigned long long)S.comp_weight_level_cnt,(unsigned long long)S.cube_viol);
  /* selected lock cells at every checkpoint (for cross-engine diff) */
  fprintf(f,",\"lock\":[");
  int first=1;
  for(int gi=2;gi<=12;gi+=2) for(int ri=0;ri<NLOCKR;ri++){
    int r=lock_r[ri]; if(r<=gi||r>13)continue;
    if(!first)fprintf(f,","); first=0;
    fprintf(f,"[%d,%d,%llu]",gi,r,(unsigned long long)S.lock_num[gi][ri]);
  }
  fprintf(f,"],\"cnt_g\":[");
  for(int gg=2;gg<=12;gg+=2){ fprintf(f,"%s%llu",gg>2?",":"",(unsigned long long)S.cnt_by_gap[gg]); }
  fprintf(f,"]}\n"); fflush(f);
}

/* ---------- classification ---------- */
/* returns class (1 weight, 2 level); *kout exact weight if known (else 0 => >KCAP unknown), *Lout level (exact for class 2; for class 1 exact iff *kout>0) */
static int classify(u64 l,u64 g,u64 *kout,u64 *Lout){
  u64 sqrtl=isqrt64(l);
  /* smooth part over primes <= g */
  u64 rem=l; sf_n=0; u64 Ssm=1;
  for(int i=0;i<n_small && (u64)small_primes[i]<=g;i++){
    u32 q=small_primes[i];
    if(rem%q==0){ int e=0; while(rem%q==0){rem/=q;e++;} sf_p[sf_n]=q; sf_e[sf_n]=e; sf_n++; u64 pw=1; for(int t=0;t<e;t++)pw*=q; Ssm*=pw; }
  }
  u64 R=rem;
  s_divisors(g);                     /* dmin_out, lbest_out over S */
  u64 Dmin=dmin_out;
  int cls; u64 kv=0, Lv=0;
  if(R==1){
    if(Dmin<=sqrtl){ cls=1; kv=Dmin; Lv=l/kv; }
    else{ cls=2; kv=Dmin; Lv=l/kv; }
  } else if(R<=sqrtl){
    cls=1;
    /* exact k = min(Dmin, spf(R)); spf(R) in (g, sqrt R] or R prime */
    u64 spf=0;
    for(int i=0;i<n_small;i++){ u32 q=small_primes[i]; if(q<=g)continue; if((u64)q*q>R){ spf=R; break; } if(R%q==0){ spf=q; break; } if(q>KCAP)break; }
    if(spf==0){ /* spf(R)>KCAP and R composite-or-prime with spf>1000 */ kv = (Dmin<=KCAP)?Dmin:0; if(kv)Lv=l/kv; }
    else { kv = Dmin<spf?Dmin:spf; Lv=l/kv; }
  } else { /* R > sqrt(l) */
    if(!is_prime64(R)){
      cls=1;
      u64 spf=0;
      for(int i=0;i<n_small;i++){ u32 q=small_primes[i]; if(q<=g)continue; if(R%q==0){ spf=q; break; } if(q>KCAP)break; }
      if(spf==0){ kv=(Dmin<=KCAP)?Dmin:0; if(kv)Lv=l/kv; } else { kv=Dmin<spf?Dmin:spf; Lv=l/kv; }
    } else {
      if(Dmin<=sqrtl){ cls=1; kv=Dmin; Lv=l/kv; }
      else{ cls=2; kv=(Dmin<R?Dmin:R); Lv=l/kv; }
    }
  }
  *kout=kv; *Lout=Lv; return cls;
}

/* naive reference (used for p <= DUMPMAX internal gate) */
static int classify_naive(u64 l,u64 g,u64 *kout,u64 *Lout){
  u64 s=isqrt64(l);
  for(u64 m=g+1;m<=s;m++) if(l%m==0){ *kout=m; *Lout=l/m; return 1; }
  for(u64 e=(g< l?g:l); e>=1; e--) if(l%e==0 && l/e>g){ *kout=l/e; *Lout=e; return 2; }
  return 0;
}

int main(int argc,char**argv){
  if(argc>1) LIMIT=strtoull(argv[1],0,10);
  gen_small(); gen_base(LIMIT+4000); build_ck();
  FILE *fck=fopen("/home/claude/out/ck.jsonl","w");
  FILE *fdump=fopen("/home/claude/out/rows_2e6.csv","w");
  fprintf(fdump,"p,g,l,k,L,cls\n");
  memset(&S,0,sizeof S);

  /* segmented sieve over odds */
  const u64 SPAN=1ULL<<24;            /* numbers per segment */
  u64 nbytes=SPAN/16+2;
  unsigned char *seg=malloc(nbytes);
  u64 hi_target=LIMIT+3000;           /* need next prime past LIMIT */
  u64 prev=2; int have_prev=0; u64 mismatches=0;
  u64 maxgap=0; u64 maxgap_at=0;
  char ladder[8192]; int lad_len=0; ladder[0]=0;

  for(u64 lo=3; lo<=hi_target; lo+=SPAN){
    u64 hi=lo+SPAN-1; if(hi>hi_target)hi=hi_target;
    if(!(lo&1)) lo++;                 /* ensure odd start (only first time matters) */
    u64 count=(hi-lo)/2+1;
    memset(seg,0,(count+7)/8+1);
    for(int i=1;i<n_base;i++){        /* skip 2 */
      u64 q=base_primes[i]; u64 q2=q*q; if(q2>hi)break;
      u64 start=q2; if(start<lo){ u64 k=(lo+q-1)/q; if(!(k&1))k++; start=k*q; }
      if(!(start&1))start+=q;
      for(u64 v=start; v<=hi; v+=2*q){ u64 idx=(v-lo)>>1; seg[idx>>3]|=(unsigned char)(1u<<(idx&7)); }
    }
    for(u64 idx=0; idx<count; idx++){
      if(seg[idx>>3]&(1u<<(idx&7)))continue;
      u64 p=lo+2*idx;
      if(!have_prev){ /* p==3 */ have_prev=1;
        /* handle pair (2,3): d=1,l=1 -> not decomposable; nothing to count */
        prev=3; continue;
      }
      /* consecutive pair (prev, p): stats attach to prev if prev <= LIMIT */
      u64 pn=prev, g=p-prev;
      prev=p;
      if(pn>LIMIT) goto done;
      /* checkpoints keyed on pn */
      while(ck_i<nck && pn>ck[ck_i]){ dump_ck(ck[ck_i],fck); ck_i++; }
      if(g>maxgap){ maxgap=g; maxgap_at=pn; lad_len+=snprintf(ladder+lad_len,sizeof(ladder)-lad_len,"[%llu,%llu],",(unsigned long long)g,(unsigned long long)pn); }
      if(2*p >= 3*pn) continue;   /* not decomposable */
      u64 l=pn-g;
      /* decomposable */
      S.ndec++;
      double lnp=log((double)pn);
      S.r2mass += 2.0*log((double)g)/log((double)l);
      if(g<GMAX){ S.cnt_by_gap[g]++; S.mass_by_gap[g]+=1.0/lnp; }
      u64 kv,Lv; int cls=classify(l,g,&kv,&Lv);
      if(pn<=DUMPMAX){
        u64 k2,L2; int c2=classify_naive(l,g,&k2,&L2);
        if(c2!=cls || (kv&&kv!=k2) || ((cls==2||kv) && Lv!=L2)) { mismatches++; fprintf(stderr,"MISMATCH p=%llu fast(%d,%llu,%llu) naive(%d,%llu,%llu)\n",(unsigned long long)pn,cls,(unsigned long long)kv,(unsigned long long)Lv,c2,(unsigned long long)k2,(unsigned long long)L2); }
        fprintf(fdump,"%llu,%llu,%llu,%llu,%llu,%d\n",(unsigned long long)pn,(unsigned long long)g,(unsigned long long)l,(unsigned long long)k2,(unsigned long long)L2,c2);
      }
      { u64 sq=isqrt64(l); if(sq*sq==l){ u64 k2,L2; int c2=classify_naive(l,g,&k2,&L2);
          if(c2!=cls){ mismatches++; fprintf(stderr,"SQ-GATE p=%llu\n",(unsigned long long)pn); }
          if(!kv && c2==cls){ kv=k2; Lv=L2; }
          if(cls==1 && k2==sq) S.ntie++; } }
      if(cls==1){
        S.nweight++;
        if(kv){ if(kv<=KCAP)S.khist[kv]++; else S.khist[KCAP+1]++; }
        else S.khist[KCAP+1]++;
      } else {
        S.nlevel++;
        if(Lv==1)S.nlev1++; else S.ngt1++;
        if(Lv<GMAX)S.lhist[Lv]++;
        if(Lv==1 && g<GMAX)S.n1_by_gap[g]++;
        if(pn>3 && Lv>g-1)S.lev_Lgtg_viol++;
        /* composite weight? (Cube Lemma / C4) */
        if(!is_prime64(kv)){ S.comp_weight_level_cnt++; if(n_cwl<64)cwl[n_cwl++]=pn; if(l>(g-1)*(g-1)*(g-1))S.cube_viol++; }
      }
      if(kv==3)S.twin_k3++;
      if(kv==3 && g!=2)S.twin_bad++;
      if(g==2){ S.twin_g2++; if(kv!=3)S.twin_bad++; }
      /* Theorem A (mod 3 rigidity), p>3 */
      if(pn>3){ int a3=(g%3==0), b3=(l%3==0); if(a3==b3)S.mod3_viol++; }
      /* empty window g >= sqrt(l) */
      if((u64)g*g>=l){ S.gap_sq_cnt++; if(n_ewp<64)ewp[n_ewp++]=pn; }
      /* congruence lock + residue histograms */
      if(g<=LOCK_GMAX){
        for(int ri=0;ri<NLOCKR;ri++){ u32 r=lock_r[ri]; u32 a=(u32)(pn%r);
          S.reshist[g][ri][a]++;
          if(a==(u32)(g%r)) S.lock_num[g][ri]++;
        }
      }
    }
  }
done:
  while(ck_i<nck && ck[ck_i]<=LIMIT){ dump_ck(ck[ck_i],fck); ck_i++; }
  fclose(fck); fclose(fdump);
  if(mismatches){ fprintf(stderr,"INTERNAL GATE FAILED: %llu mismatches\n",(unsigned long long)mismatches); return 2; }
  fprintf(stderr,"internal fast-vs-naive gate: 0 mismatches on all p <= %llu\n",(unsigned long long)DUMPMAX);
  /* final dumps */
  FILE*f=fopen("/home/claude/out/final.json","w");
  fprintf(f,"{\"limit\":%llu,\"ladder\":[%s[0,0]],\"ewp\":[",(unsigned long long)LIMIT,ladder);
  for(int i=0;i<n_ewp;i++)fprintf(f,"%s%llu",i?",":"",(unsigned long long)ewp[i]);
  fprintf(f,"],\"cwl\":[");
  for(int i=0;i<n_cwl;i++)fprintf(f,"%s%llu",i?",":"",(unsigned long long)cwl[i]);
  fprintf(f,"],\"khist\":[");
  for(int i=0;i<=KCAP+1;i++)fprintf(f,"%s%llu",i?",":"",(unsigned long long)S.khist[i]);
  fprintf(f,"],\"lhist\":[");
  for(int i=0;i<GMAX;i++)fprintf(f,"%s%llu",i?",":"",(unsigned long long)S.lhist[i]);
  fprintf(f,"],\"n1_by_gap\":[");
  for(int i=0;i<GMAX;i++)fprintf(f,"%s%llu",i?",":"",(unsigned long long)S.n1_by_gap[i]);
  fprintf(f,"],\"cnt_by_gap\":[");
  for(int i=0;i<GMAX;i++)fprintf(f,"%s%llu",i?",":"",(unsigned long long)S.cnt_by_gap[i]);
  fprintf(f,"],\"mass_by_gap\":[");
  for(int i=0;i<GMAX;i++)fprintf(f,"%s%.6f",i?",":"",S.mass_by_gap[i]);
  fprintf(f,"],\"lock\":[");
  int first=1;
  for(int g=2;g<=LOCK_GMAX;g+=2)for(int ri=0;ri<NLOCKR;ri++){
    if(!first)fprintf(f,","); first=0;
    fprintf(f,"[%d,%d,%llu]",g,lock_r[ri],(unsigned long long)S.lock_num[g][ri]);
  }
  fprintf(f,"],\"reshist\":{");
  first=1;
  for(int g=2;g<=14;g+=2)for(int ri=0;ri<NLOCKR;ri++){ int r=lock_r[ri]; if(r>17)continue;
    if(!first)fprintf(f,","); first=0;
    fprintf(f,"\"%d_%d\":[",g,r);
    for(int a=0;a<r;a++)fprintf(f,"%s%llu",a?",":"",(unsigned long long)S.reshist[g][ri][a]);
    fprintf(f,"]");
  }
  fprintf(f,"}}\n"); fclose(f);
  fprintf(stderr,"done. maxgap=%llu at %llu\n",(unsigned long long)maxgap,(unsigned long long)maxgap_at);
  return 0;
}
cramer.c (random-model controls)
/* Cramer control for the decompwlj census.
 * Model A (classic): each n >= 3 independently "prime" with prob 1/ln n.
 * Model B (parity-matched): each odd n >= 3 with prob 2/ln n  (even gaps, odd l).
 * Same classification engine as sweep.c (smooth-part + MR), streamed.
 * Fixed seed for reproducibility. Dumps checkpoint JSON lines.
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <math.h>
typedef uint64_t u64; typedef uint32_t u32; typedef __uint128_t u128;

static u32 small_primes[2048]; static int n_small;
static void gen_small(void){ char c[1551]; memset(c,0,sizeof c);
  for(int i=2;i<=1550;i++) if(!c[i]){ small_primes[n_small++]=i; for(int j=2*i;j<=1550;j+=i)c[j]=1; } }
static u64 mulmod(u64 a,u64 b,u64 m){ return (u64)((u128)a*b%m); }
static u64 powmod(u64 a,u64 e,u64 m){ u64 r=1; a%=m; while(e){ if(e&1)r=mulmod(r,a,m); a=mulmod(a,a,m); e>>=1;} return r; }
static int is_prime64(u64 n){
  if(n<2)return 0;
  for(int i=0;i<12 && (u64)small_primes[i]*small_primes[i]<=n+1;i++){ u32 q=small_primes[i]; if(n==q)return 1; if(n%q==0)return 0; }
  if(n<121)return n>1;
  u64 d=n-1; int s=0; while(!(d&1)){d>>=1;s++;}
  static const u64 bases[4]={2,3,5,7};
  for(int i=0;i<4;i++){ u64 a=bases[i]%n; if(!a)continue; u64 x=powmod(a,d,n); if(x==1||x==n-1)continue;
    int ok=0; for(int r=1;r<s;r++){ x=mulmod(x,x,n); if(x==n-1){ok=1;break;} } if(!ok)return 0; }
  return 1;
}
static u64 isqrt64(u64 n){ u64 r=(u64)sqrtl((long double)n); while(r*r>n)r--; while((r+1)*(r+1)<=n)r++; return r; }
static u64 sf_p[24]; static int sf_e[24]; static int sf_n;
static u64 g_thresh,dmin_out,lbest_out;
static void dfs(int i,u64 cur){
  if(cur>g_thresh){ if(cur<dmin_out)dmin_out=cur; return; }
  if(cur>lbest_out)lbest_out=cur;
  if(i==sf_n)return;
  u64 v=cur; dfs(i+1,v);
  for(int e=1;e<=sf_e[i];e++){ v*=sf_p[i]; dfs(i+1,v); if(v>g_thresh)break; }
}
static int classify(u64 l,u64 g,u64 *kout,u64 *Lout){
  u64 sqrtl=isqrt64(l);
  u64 rem=l; sf_n=0;
  for(int i=0;i<n_small && (u64)small_primes[i]<=g;i++){ u32 q=small_primes[i];
    if(rem%q==0){ int e=0; while(rem%q==0){rem/=q;e++;} sf_p[sf_n]=q; sf_e[sf_n]=e; sf_n++; } }
  u64 R=rem; g_thresh=g; dmin_out=UINT64_MAX; lbest_out=1; dfs(0,1);
  u64 Dmin=dmin_out; int cls; u64 kv=0,Lv=0;
  if(R==1){ if(Dmin<=sqrtl){cls=1;kv=Dmin;} else {cls=2;kv=Dmin;} Lv=l/kv; }
  else if(R<=sqrtl){ cls=1; }
  else if(!is_prime64(R)){ cls=1; }
  else { if(Dmin<=sqrtl){cls=1;kv=Dmin;Lv=l/kv;} else {cls=2;kv=(Dmin<R?Dmin:R);Lv=l/kv;} }
  *kout=kv;*Lout=Lv; return cls;
}
/* xorshift64* */
static u64 rngs;
static double rnd(void){ rngs^=rngs>>12; rngs^=rngs<<25; rngs^=rngs>>27; return (double)((rngs*2685821657736338717ULL)>>11)/9007199254740992.0; }

int main(int argc,char**argv){
  u64 LIMIT = argc>1?strtoull(argv[1],0,10):100000000ULL;
  int model = argc>2?atoi(argv[2]):0;   /* 0 = classic, 1 = odd-only */
  u64 seed  = argc>3?strtoull(argv[3],0,10):20260807ULL;
  gen_small(); rngs=seed^0x9E3779B97F4A7C15ULL; for(int i=0;i<16;i++)rnd();
  u64 ck[128]; int nck=0,cki=0;
  for(int j=24;j<=8*(int)round(log10((double)LIMIT));j++){ double v=pow(10.0,j/8.0); u64 x=(u64)(v+0.5); if(x<=LIMIT)ck[nck++]=x; }
  ck[nck++]=LIMIT;
  u64 prev=0; u64 ndec=0,nlev=0,n1=0,ngt1=0,nterm=0;
  printf("[");
  int firstout=1;
  for(u64 n=3;n<=LIMIT+2000;n++){
    if(model==1 && !(n&1))continue;
    double pr=(model==1?2.0:1.0)/log((double)n);
    if(rnd()>=pr)continue;
    if(prev){
      u64 pn=prev,g=n-prev;
      while(cki<nck && pn>ck[cki]){
        if(!firstout)printf(","); firstout=0;
        printf("{\"x\":%llu,\"nterm\":%llu,\"ndec\":%llu,\"nlev\":%llu,\"n1\":%llu,\"ngt1\":%llu}",
          (unsigned long long)ck[cki],(unsigned long long)nterm,(unsigned long long)ndec,
          (unsigned long long)nlev,(unsigned long long)n1,(unsigned long long)ngt1);
        cki++;
      }
      if(pn<=LIMIT){
        nterm++;
        if(2*n<3*pn){
          u64 l=pn-g,kv,Lv; int cls=classify(l,g,&kv,&Lv);
          ndec++;
          if(cls==2){ nlev++; if(Lv==1)n1++; else ngt1++; }
        }
      }
    }
    prev=n;
  }
  while(cki<nck && ck[cki]<=LIMIT){
    if(!firstout)printf(","); firstout=0;
    printf("{\"x\":%llu,\"nterm\":%llu,\"ndec\":%llu,\"nlev\":%llu,\"n1\":%llu,\"ngt1\":%llu}",
      (unsigned long long)ck[cki],(unsigned long long)nterm,(unsigned long long)ndec,
      (unsigned long long)nlev,(unsigned long long)n1,(unsigned long long)ngt1);
    cki++;
  }
  printf("]\n");
  return 0;
}

A.3  Python audit

An independently written sieve and classifier (trial division for the weight branch, descending divisor scan for the level branch) recomputed every decomposable prime to \(10^6\) and diffed the full tuple \((g,l,k,L,\mathrm{class})\) against the C rows: zero mismatches on all 78,495. The singular-series machinery of §6 (\(\mathfrak S_2\), \(\mathfrak S_3\) over patterns, products over primes to \(2\times10^5\)) and all figures are NumPy; figures are square, equal-aspect where the \(k\)–\(L\) ratio is drawn, house palette, embedded as base64.

B.Appendix B — session record and failures

Per the honest-ledger rule, failures precede summaries. Today’s session had four, all caught by the pipeline’s own gates before any number reached this document:

Also for the record: the background-process constraint documented in earlier sessions (sweeps must run foreground) was respected throughout; no run died. The \(10^{10}\) census and the \(2^{64}\) frontier were not re-run today and appear only as CARRIED with their provenance (seventh edition, 5 Aug 2026).

C.Cumulative corrections log

The complete log, carried verbatim in substance from the seventh edition (items 1–16) with today’s addition. The log only grows.

#Item
1Species-I constant overclaim in an early edition; corrected to the conditional \(2C_2\) statement.
2Two-constants erratum (conflated normalizations in the species analysis); corrected.
3Checkpoint off-by-one in an early census (\(p_{5\cdot10^7}=982{,}451{,}653\) anchor); corrected.
4Third-report session failures disclosed (tooling interruptions mid-census).
5Population-convention correction (+9) in a decade table; conventions now stated with every count.
6Challenge-paper boundary erratum: lev1\((10^8)\) printed 339,869 upstream vs correct 339,870 (boundary prime); upstream fix propagated.
7MathJax macro bug in an early HTML edition (built-in \(\ell\) redefined); house rule since: never redefine built-ins.
8Quartic-bound overclaim repaired into the (correct, sharp) Cube Lemma.
9Fourth-report sieve parity bug; caught by cross-engine gate; fixed.
10Doubly-logarithmic span misquote in prose; corrected.
11\(c_2=1\) conjecture RETRACTED on the evidence of the drifting normalized share; retraction stands (§5).
12Fifth-report session failures disclosed.
13Lemma-8 upstream erratum: exception sets corrected to \(\{5,13,19,23,31,113\}\) / \(\{13,31\}\); re-verified fresh today.
14Manuscript pre-submission erratum: the per-gap window claim \([0.97,1.05]\) fails at \(10^9\) for seven small-count gaps (Poisson noise; worst \(g=132\): 1.1318 on 484 observations, \(\approx2.5\sigma\)); sentence to be reworded. Reconfirmed digit-for-digit today (§4).
15Manuscript pre-submission erratum: “\(R_2\approx0.4412\) flat to three decimals over \(10^6\)–\(10^{10}\)” does not survive the natural-mass convention below \(10^9\); to be qualified. Reconfirmed today (§5).
16Strict upgrade: exhaustive exception-set frontier extended to \(2^{64}\) (maximal gap 1550 at 18,361,375,334,787,046,697); statements keep the refereed \(4\times10^{18}\), \(2^{64}\) as a remark.
17New (this edition). Constant misprint in the manuscript and seventh edition: \(D\) printed as 5.7164975…; true value \(D=5.71649719143844086\ldots=2C_3\) (classical Hardy–Littlewood triplet constant), established by zeta-accelerated evaluation and by direct product with rigorous tail bound; the seventh edition’s “agrees to the seventh decimal” truncation sentence falls with it. Numerically harmless downstream (\(5.5\times10^{-8}\) relative); printed digits to be corrected before submission (§4).