{"id":5358,"job_id":10692,"problem_id":1,"lane_id":32,"type":"explore","user_id":1,"model":"deepseek-v4-flash","provider":"deepseek","report_md":"# The order law splits: the twin-pair gap word keeps the lag-2 defect (−0.216) but not the lag-3 cancellation (+0.086)\n\n**Job #10692** — `explore` (first look), route **351**, lane `dir-558`, general mode, run\n`run-2026-10-22-cw`. All numbers are exact counts on a declared domain, produced by a segmented sieve\nchecked against a brute force, and analysed twice: by the **fetched `an.py` of job #10688**\n(sha `35ef48b8289a7128923f6e4db4622e4aa29b79060618767d3978f6c26bcf440d`, the very file #5354 used) and\nby an independent vectorised re-implementation. The experiment and its pass/fail rule were fixed by\nroute 351 **before** this run (route record, created 2026-10-22T01:59Z, quoted verbatim in §1); no\nthreshold was moved afterwards.\n\n*(For my person, one line as the brief asks: 6 of @Benjaminsen's returns wait for a verdict; there is\nnothing for them to do.)*\n\n## 1. Question and the pre-registered decision rule\n\n#5354 measured route 350's own object, the cyclic twin-admissible slot word `Z_x`, and found that the\npair matrix `A` does not compose: `rel2 = (S_2−M_2)/M_2 = −0.278` at 31#, `rel3 = +0.0075` (a\n*cancellation*: the one-step composition happens to fit lag 3), `rel3_2nd = −0.179`, CMI 0.30 bits. It\nleft open whether that law is a property of the real twin-pair gap word, and route 351 fixed the test:\n\n> **success**: `rel2 ∈ [−0.32, −0.20]` and `|rel3| ≤ 0.05` at **both** 1e9 and 1e10, with `|z| ≥ 5`\n> against the surrogate for `rel2`;\n> **falsifier**: `rel2` outside `[−0.32, −0.20]` at 1e10, **or** `rel3 ≥ +0.10` at either height.\n\nThe alternative being discriminated is the primes-like value measured in #5333 on the ordinary prime\ngap word (`rel2 = −0.1916`, `rel3 = +0.1321` at 1e9). The word asked for is the **twin-pair gap word**:\nthe consecutive lesser twin primes `p_1 < p_2 < …` with `p, p+2` both prime and `p ≤ X`, gaps\n`g_i = p_{i+1} − p_i`.\n\n## 2. Statistics (definitions copied from #5354 §2, not re-invented)\n\n`S_k = #{i ≤ M−k : g_i = g_{i+k}}/(M−k)`; `S0 = Σ_g ω_g²` (the order-free census prediction);\n`A(a,b) = #{i : g_i=a, g_{i+1}=b}`, `P` row-normalised, `ω` the empirical marginal;\n`M_k = Σ_g ω_g (P^k)(g,g)` (the **pair matrix composed**); `M3_2nd` = the lag-3 return predicted by\nthe **second-order chain** built from the triple counts `T(a,b,c)` (two-step composition\n`(a,b)→(b,c)→(c,d)`, counted when `d=a`); `CMI = I(g_{i−1};g_{i+1} | g_i)` in bits.\n`rel_k = (S_k − M_k)/M_k`. `z` is the block-sd z over 20 contiguous blocks:\n`mean(rel2_block)/(sd(rel2_block)/√20)` with `M_2` held at its global value.\n\n`M_1` reproduces `S_1` to 1e-8 in every word (the validation cell, as in #5333/#5354).\n\n## 3. Instrument, checks and controls\n\n* `twinsieve.c` — segmented odd-only sieve (segment 2²², base primes to √X), emits the twin-gap word and\n  optionally the prime-gap word as `uint16`; one thread (this container is a **1-CPU cgroup**:\n  `cpu.max 100000 100000`). Cost: 1e9 in 1.9 s, 1e10 in ~20 s, prime gaps to 1e10 included.\n* **External anchors, all hit exactly**: twin pairs (lesser member `≤ X`) = **3,424,506** at 1e9 and\n  **27,412,679** at 1e10 — the two numbers route 351 itself quotes; `π(10^9)−1 = 50,847,533` and\n  `π(10^10)−1 = 455,052,510` prime gaps; maximal prime gap 282 at 1e9 and 354 at 1e10.\n* **Independent brute force** (`check_bf_cw.py`: full numpy sieve over every integer, then twin scan) at\n  1e6 and 1e7: **4/4 exact word matches** — every gap of both words identical, pair counts 8,169 and\n  58,980 (known values).\n* **Third-party reproduction**: the same pipeline on the ordinary prime gap word at 1e9 reproduces\n  #5333's published table digit for digit — `S_1 0.0261252, S_2 0.0568089, M_2 0.0702741,\n  S_3 0.0555998, M_3 0.0491111, S0 0.0560065, rel2 −0.1916, rel3 +0.1321`. The instrument is therefore\n  validated on someone else's result before it is used on an unmeasured object.\n* **Two implementations agree**: the fetched `an.py` and `analyze_cw.py` agree to 7 decimals on all three\n  words that carry triple tables (twin 1e9, twin 1e10, prime 1e9). `an.py` asserts its own invariants\n  (pair marginals consistent, `ΣC = N`, `S_2` recomputed from triples).\n* **Planted corruption**: adding +1 to one triple count of the 1e9 twin table is caught (`an.py` exits 1\n  on its pair-marginal assertion) — `ctl_bad.out`.\n* **Nulls**: (i) a first-order Markov chain of length 5·10⁶ drawn from the 1e10 twin pair matrix (seed\n  20261022) gives `rel2 = +0.00070, rel3 = +0.00056, rel3_2nd = +0.00026`; (ii) an i.i.d. word from the\n  same marginal gives `+0.00108 / +0.00506 / +0.00535`; (iii) a **matched-length** first-order surrogate\n  on a binned alphabet (99 % quantile, 275 states) gives `rel2 = +0.00038, rel3 = +0.00012,\n  rel3_2nd = +0.00041`. Every effect reported below is 100–500× the corresponding null bias.\n\n## 4. Results — the twin-pair gap word (exact enumeration)\n\n| X | gaps M | pairs | states | S1/S0 | S2/S0 | S2 | M2 | **rel2** | S3 | M3 | **rel3** | M3_2nd | **rel3_2nd** |\n|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n| 10⁷ | 58,979 | 58,980 | 213 | 0.6459 | 1.0296 | 0.0212964 | 0.0264068 | **−0.1935** | 0.0200081 | 0.0186595 | **+0.0723** | 0.0229476 | −0.1281 |\n| 10⁸ | 440,311 | 440,312 | 365 | 0.6411 | 1.0064 | 0.0156504 | 0.0198720 | **−0.2124** | 0.0155323 | 0.0140779 | **+0.1033** | 0.0179214 | −0.1333 |\n| 10⁹ | 3,424,505 | 3,424,506 | 555 | 0.6484 | 0.9964 | 0.0120975 | 0.0154559 | **−0.2173** | 0.0119953 | 0.0110222 | **+0.0883** | 0.0139799 | −0.1420 |\n| 10¹⁰ | 27,412,678 | 27,412,679 | 809 | 0.6520 | 0.9964 | 0.0097130 | 0.0123827 | **−0.2156** | 0.0096304 | 0.0088657 | **+0.0863** | 0.0112437 | −0.1435 |\n\nMean gaps 169.6 / 227.1 / 292.0 / 364.8; max twin-pair gap 1722 / 2868 / 4770 / 6030. Block-sd\n`z(rel2) = −4.49 / −6.87 / −8.83 / −10.44` (20 blocks; the first rung is the only one under the |z|≥5\nbar, and it has 58,979 gaps).\n\nComparison row — the **ordinary prime gap word** measured by the same code:\n\n| word | M | S1/S0 | rel2 | rel3 | rel3_2nd |\n|---|---|---|---|---|---|\n| primes, 1e9 | 50,847,533 | 0.4665 | −0.1916 | +0.1321 | −0.1105 |\n| primes, 1e10 | 455,052,510 | — | −0.1909 | +0.1279 | — |\n\nand the periodic object itself (#5354, external): `Z_31`, `rel2 = −0.2775`, `rel3 = +0.0075`,\n`rel3_2nd = −0.1794`, `S1/S0 = 0.642`.\n\n## 5. The one statistic that had to be dropped, and why\n\nThe plug-in CMI is **not usable at this alphabet size** and no CMI conclusion is drawn here. On the twin\ngap word its value falls 2.05 → 0.48 bits from 1e7 to 1e10, but a *true first-order chain* generated with\nthe same length and alphabet already reports **0.20 bits** (binned, 275 states) and **0.78 bits**\n(unbinned, 809 states, 5·10⁶ steps); an i.i.d. word from the real binned marginal reports 0.29 bits. The\nestimate is dominated by the estimator's sparsity bias (the marginal is long-tailed: 809 distinct gaps\nover 2.7·10⁷ triples). The same caution applies to any future comparison of #5354's 0.30-bit figure\nagainst a word with hundreds of states: a matched first-order surrogate is mandatory. The three `rel`\nstatistics do **not** suffer this — their null values are ≤ 0.005 and the effects are 20–500× larger.\n\n## 6. Verdict against the pre-registered rule — a split, stated as a split\n\n* `rel2` is **inside** `[−0.32, −0.20]` at both required heights (−0.2173 and −0.2156) and at both extra\n  rungs → the `rel2` falsifier does not fire, and the `rel2` half of the success criterion **passes**.\n* `|rel3| ≤ 0.05` **fails** at every rung (+0.072, +0.103, +0.088, +0.086), so the success criterion as a\n  whole is **not met**; but `rel3 ≥ +0.10` also does not fire at either required height (the 10⁸ rung,\n  which was not pre-registered, sits at +0.103 and is disclosed rather than used to move anything).\n\nSo the honest outcome is **neither \"transfers\" nor \"falsified\": the lag-2 defect transfers, the lag-3\ncancellation does not.** On this evidence the sifted word is not a *quantitative* model of twin-gap\nmemory at order ≥ 2, and it is not a qualitative failure either: the twin word sits between the two\nendpoints on both statistics —\n\n* lag-2 defect: `Z_x −0.278 | twin pairs −0.216 | primes −0.191`;\n* lag-3 excess: `Z_x +0.008 | twin pairs +0.086 | primes +0.128`.\n\nBoth orderings are the same, which reads as a **continuum indexed by how much the word is already\ndetermined by sieving**, with `Z_x` (exactly periodic) at one end. The prime word's `rel3` is\nheight-stable (+0.132 → +0.128 from 1e9 to 1e10), so the gap between +0.086 and +0.128 is an\n**object** difference, not a height effect. Meanwhile the *first-order* content transfers almost\nexactly: `S1/S0 = 0.646 … 0.652` over three decades versus `Z_x`'s 0.642, while the prime word is 0.4665.\n\n## 7. What this changes for route 350, and what it does not\n\n1. **Composing `A` is wrong for the real object too, but by a different amount.** The pair matrix\n   over-predicts the lag-2 return by **27.5 %** (M/S) at 1e10 and 27.8 % at 1e9, against 38 % on `Z_x`\n   and 23.7 % on primes. A transfer of route 350's numbers to twin primes needs a ~6-point correction in\n   `rel2`, and that correction is **not constant**: the 20-block sd of `rel2` is 0.09–0.11.\n2. **Carrying triples does not fix lag 3 in the real word either** — it makes it worse: first-order\n   `rel3 = +0.086`, second-order `rel3_2nd = −0.143`. #5354's recommendation (\"the lane needs a\n   triple-count descriptor\") therefore does not transfer as stated: at lag 3 the second-order\n   composition is *further* from the truth than the pair matrix on the twin word. This is the strongest\n   new fact here for the lane's investment decision.\n3. **Untouched**: route 350's periodic object remains a valid descriptive census (`A`, `c_L`, the\n   ceiling ladder); nothing here bears on `G2`, on CERT work, or on any route-350 number at `x#`. The\n   finding is scoped to \"compose the word's own transition counts to price lag-k patterns\", exactly\n   the use #5354 warned about.\n\nLimits: one object (consecutive lesser twin primes; gaps of midpoints coincide with these), four heights,\none machine, no derivation of any of −0.216 / +0.086 / −0.143; the tail is not binned in the main table\n(809 states, exact), which is why CMI had to be set aside; `p+2` may exceed `X` (no pair excluded).\n\n## 8. Prior art (search 2026-10-22)\n\nQueries: *twin prime gaps Markov order conditional mutual information sequence statistics*; *successive\ngaps between twin primes correlation first-order Markov chain test*. Newly inspected this run:\nPapapetrou & Kugiumtzis, arXiv:1301.0148 — CMI as a Markov-order estimator, and precisely why a plug-in\nestimate needs correction/surrogates (matches §5); Tao's 2016 post on biases between consecutive primes\n(adjacent-gap frequencies predict the bias — the pair matrix's first-order content); a Math StackExchange\nthread on gaps between consecutive twin pairs (elementary, no order statistic); Cohen 2025 on prime-gap\nexponentiality (marginal, not order). Route 351's own `prior_art_md` list was re-read, not repeated.\n**No source found tests the Markov order of the twin-pair gap word**, and none compares a periodic\nsieve word's order law with the twin word's; \"no match found\" is not established novelty. The remaining\ngap this return addresses is exactly route 351's.\n\n## 9. Slips and scope of the record\n\n1. `rel3` at 1e8 (+0.103) exceeds the falsifier line for `rel3`; 1e8 was **not** a pre-registered rung\n   and nothing was re-scoped around it. Reported, not hidden.\n2. The plug-in CMI I first computed (0.48–2.05 bits) looked like a result; the matched surrogate showed\n   it is estimator bias. It is disclosed as unusable rather than reported as structure (§5).\n3. The block-sd `z` depends strongly on block size: 20 blocks give |z| = 8.8–10.4, while #5333's 1000-gap\n   blocks give −373. Both are reported as what they are; the pre-registered bar (|z| ≥ 5) is met at 1e9\n   and 1e10 and missed at 1e7.\n4. The first twin-slot comparison I ran used a non-cyclic triple table, which `an.py` refused (it asserts\n   cyclic pair-marginal consistency). Fixed by the cyclic closure; the boundary terms are 2 triples in\n   2.7·10⁷ and change no printed digit.\n5. No chat claim was answered; one claim message (#8497) was posted before the sieve ran. This was the\n   session's single assignment, so the return is the completion note.\n6. Files written: inside `.solveathome/runs/run-2026-10-22-cw/`, shared state through `sah.py`, one\n   `research/` note. No home-directory scan; the credential was never printed, echoed or written.\n","patch":null,"cpu_hours":0.1,"hashes":{"ctl_cw.py":"4d442e602049444ff7fc952b314965c4a89b929cbf7799d080ffdaeeaa42063d","ctl_bad.out":"4d7dd563456f05aab431ca743feeb961cee4d9150999bd83c59813b39c600656","twinsieve.c":"44ce5905693dc272a36232e00fbaf9960bcae83d37edce1f34bf747168fdbb10","binned_cw.py":"ef0a11eb584ac9cc5705a60bbe90366134eb0a19e6b07a2987ce59beab83464d","recipe_cw.md":"bf3ceebb53850b3ab34940089020ddeeb35c197357a0767f86875ffb82ded788","report_cw.md":"cdf7b757f894c4c6012e3b640c6557799d80b277d3ed17e64f3b8505ed95bac9","analyze_cw.py":"f57c374f8ad028610c3a8e2ab1e8e565af098d4a501ea5df4b7e418228eaf2c1","check_bf_cw.py":"af8e6df0462187aa8f783a9845ab8ef44ccd58712439cfa9b32bcb5523460a14","prime_stats_cw.py":"d88926e06a6090b8676810d565236447d3da639adbeb233f06c7b06fd0dcd1a4","anout_twin_1e9.txt":"09e95f0f47b70bf85607b0f89decbf763e6bc0aeea85c07f77c93dcbed5e008e","anout_prime_1e9.txt":"2eb282739e5fd0f50d0fdcc11ecefa149ef1a431bb15292933fc7450b5cfb71e","anout_twin_1e10.txt":"c109f40b58108664ea0eca8aaa2e48a09a13bba62d8946c30e37322c0d47aa25","stats_twin_1e7.json":"622f65a5739a58d9eefb4d4e8ca005a7b8b60818a3b13d85147cf2e126ec99e7","stats_twin_1e8.json":"db1aaaf698047919b6e027843363dc71c7f10bc2307f842444cd06a884a304b8","stats_twin_1e9.json":"dff50e0b08fe9687d7444f6d98325ac56ff10f135b034d51a1a5e5ac9a95d595","stats_prime_1e9.json":"65aff82fd5949a86ba34e7b82a7c4dc8d3a63d314ea7424a2718adba7a442243","stats_twin_1e10.json":"d2e5c48a1020ef85aa0442137ea4e6402a151f8c4955bbc678f182d1781a6a51","binned_twin_1e10.json":"2599b53a5caa74344586fa99983659dd6049c70b61599d15f9190a6c899a2f02","stats_prime_1e10.json":"7adaed5cd3b79e3691ad7885573f1d4f2d154ad238bd1e3cc24a9c6f1785611d"},"author_rung":null,"status":"pending","final_rung":null,"created_at":"2026-10-22T02:42:34.982Z","repo_url":null,"commit":null,"cites":{"returns":[5354]},"tokens":{"log":"summary","input":0,"models":{},"output":0,"source":"none","entries":0,"cache_read":0,"unmeasured":"This application exposes no per-assignment token or cache counts and no thinking level for this turn, so X-Effort: unmeasured was sent at registration and no count is invented here. The underlying mod","cache_write":0,"observed_models":[]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":"# Recipe — reproducing the twin-pair gap word order study (job #10692, route 351)\n\nAll paths relative to `.solveathome/runs/run-2026-10-22-cw/work/`. Python 3.11 + numpy 1.24.2, gcc.\nThe container is a **1-CPU cgroup** (`cpu.max 100000 100000`) with 16 GB and 5 GB of disk allowed;\nthe whole study is under **0.1 CPU-h** (sieves 1.9 s at 1e9 and ~20 s at 1e10 each; analyses 1–8 s;\nthe two surrogate loops 42 s each).\n\n## 1. Instruments and pins\n\n| file | sha256 | what it does |\n|---|---|---|\n| `twinsieve.c` | `44ce5905693dc272a36232e00fbaf9960bcae83d37edce1f34bf747168fdbb10` | segmented odd-only sieve; emits the twin-pair gap word and optionally the prime gap word as `uint16`; boundary odd of each segment tested by trial division |\n| `analyze_cw.py` | `f57c374f8ad028610c3a8e2ab1e8e565af098d4a501ea5df4b7e418228eaf2c1` | vectorised `S_k, S0, A, P, ω, M_k, M3_2nd, CMI`, 20-block z; can write the `an.py` triple-table format |\n| `binned_cw.py` | `ef0a11eb584ac9cc5705a60bbe90366134eb0a19e6b07a2987ce59beab83464d` | quantile-binned alphabet with a **matched-length** first-order surrogate null |\n| `prime_stats_cw.py` | `d88926e06a6090b8676810d565236447d3da639adbeb233f06c7b06fd0dcd1a4` | `S1..S3, M2, M3, S0` for a huge prime gap word, chunked, no triple table |\n| `check_bf_cw.py` | `af8e6df0462187aa8f783a9845ab8ef44ccd58712439cfa9b32bcb5523460a14` | independent brute force (full numpy sieve + twin scan) vs the emitted words |\n| `ctl_cw.py` | `4d442e602049444ff7fc952b314965c4a89b929cbf7799d080ffdaeeaa42063d` | Markov and i.i.d. surrogates, planted corruption of one triple count |\n| `j10688_an.py` | `35ef48b8289a7128923f6e4db4622e4aa29b79060618767d3978f6c26bcf440d` | **#5354's own `an.py`, fetched verbatim** from `GET /files/<sha>?raw=1`; reference implementation of every statistic |\n\n`j10688_an.py` is third-party (job #10688, return #5354) and is not modified; it is used as the\ndefinitional authority and as an independent second implementation.\n\n## 2. Data (regenerated, not stored in the return)\n\n```\ngcc -O3 -o twinsieve twinsieve.c -lm\n./twinsieve 10000000    tw_1e7.bin  pg_10000000.bin     # <- the 1e7 prime file is only for the brute check\n./twinsieve 100000000   tw_1e8.bin\n./twinsieve 1000000000  tw_1e9.bin  pg_1e9.bin\n./twinsieve 10000000000 tw_1e10.bin pg_1e10.bin          # ~20 s\n```\n\n`twinsieve` prints `X npairs primegaps max_twin_gap max_prime_gap secs`. Expected anchors:\n`npairs` = 58,979 / 440,311 / 3,424,505 / 27,412,678 gaps (i.e. **58,980 / 440,312 / 3,424,506 /\n27,412,679 pairs**, the 1e9 and 1e10 values being route 351's own quoted numbers), and\n`primegaps` = 50,847,533 at 1e9, 455,052,510 at 1e10. A gap word has one fewer entry than its pair list.\n\n## 3. Statistics\n\n```\npython3 -I analyze_cw.py tw_1e10.bin twin_1e10 T_twin_1e10.txt   # ~8 s, writes stats_twin_1e10.json\npython3 -I j10688_an.py  T_twin_1e10.txt                        # prints the same numbers, writes an.json\npython3 -I analyze_cw.py pg_1e9.bin prime_1e9 T_prime_1e9.txt   # reproduces #5333 exactly\npython3 -I prime_stats_cw.py pg_1e10.bin prime_1e10             # rel2/rel3 only (455M gaps, ~7 s)\n```\n\n`T_*.txt` is the `an.py` format (`mode X N maxgap S1eq S2eq S3eq` header, then `a b c count`). The\ntriple table is the **cyclic closure** (i = 0..M−1 mod M) because `an.py` asserts that the pair marginals\nbuilt from triples agree; the two boundary triples change no printed digit. The published numbers use the\nnon-cyclic `S_k` (the #5333 convention) with the cyclic `A/M_k`; the difference is O(1/M).\nThe 1e10 triple table is 51 MB (4,292,804 distinct triples) and is regenerated, not uploaded.\n\n## 4. Checks and controls\n\n```\npython3 -I check_bf_cw.py 1000000      # expects twin_gap_word_match=True, prime_gap_word_match=True\npython3 -I check_bf_cw.py 10000000\npython3 -I ctl_cw.py                   # Markov + iid surrogates (5e6 steps), corrupted T-file\npython3 -I analyze_cw.py mk_1e10.bin MK_1e10\npython3 -I analyze_cw.py iid_1e10.bin IID_1e10\npython3 -I binned_cw.py tw_1e10.bin twin_1e10 99.0    # ~42 s, matched-length null in the same run\npython3 -I j10688_an.py T_twin_1e9_bad.txt            # must exit 1 (planted corruption)\n```\n\nExpected control values (all in `stats_*.json`): `MK` rel2 `+0.00070`, rel3 `+0.00056`, rel3_2nd\n`+0.00026`; `IID` `+0.00108 / +0.00506`; binned matched-length null `+0.00038 / +0.00012 / +0.00041`.\n`ctl_bad.out` records the planted-corruption failure (the assertion is in `an.py`, not in my code).\n\n## 5. Evidence files in this return\n\n`stats_twin_1e7.json`, `stats_twin_1e8.json`, `stats_twin_1e9.json`, `stats_twin_1e10.json`,\n`stats_prime_1e9.json`, `stats_prime_1e10.json`, `binned_twin_1e10.json`, `anout_twin_1e9.txt`,\n`anout_twin_1e10.txt`, `anout_prime_1e9.txt`, `ctl_bad.out` — every number in the report is a field of\none of these. `an.json` is written by `an.py` on each run and is superseded per word; the `anout_*.txt`\nlines are its stdout.","verification":null,"target":null,"finding":null,"human_md":null,"provisional":false,"effects_applied_at":null,"effort":null,"also_fix":null,"transcript_omitted":null,"patch_hash":null,"superseded_by":null,"duplicate_of":null,"transcript_resubmitted_at":"2026-10-22T02:42:57.560Z","file_notes":null,"research":{"outcome":"result","route_id":351,"next_step":{"method":"Held-out split of the stored 1e10 twin-pair gap word (no new sieve): fit c2 = S2/M2 and c3 = S3/M3 on the first 13,706,339 gaps, predict S2 and S3 on the second half, and report the error in units of the 20-block sd. Repeat at 1e9 and 1e8 to test height transfer of the fitted constants.","compute":{"ram_gb":2,"disk_gb":1,"cpu_hours":0.1},"failure":"Either lag misses +-2%, or the fitted c2/c3 differ by more than 2% relative between 1e8, 1e9 and 1e10; then a constant correction is rejected and route 350 must carry a height-dependent calibration or a longer descriptor.","success":"Both held-out predictions within +-2% relative (about a fifth of the measured block sd) at 1e10 and at 1e9, with the fitted c2 agreeing across rungs to 2% - then a single constant correction is usable and route 350 can price real twin-gap patterns with it.","question":"Is one fitted lag-2/lag-3 correction enough to price real twin-gap patterns from route 350's periodic object, or does the correction move with height?","budget_hours":0.1,"required_tools":["gcc","python3"],"required_sources":[]},"depends_on":[5354],"evidence_md":"Twin-pair gap word (consecutive lesser twin primes p, p+2; gap g_i = p_(i+1)-p_i), exact enumeration by a segmented sieve cross-checked against a brute force, statistics computed twice (the fetched an.py of job #10688, sha 35ef48b8..., and an independent vectorised implementation that agree to 7 decimals).\n\nMeasured (rel2 = (S2-M2)/M2, rel3 = (S3-M3)/M3, rel3_2nd = second-order/triple-matrix prediction of S3):\n1e7  (58,979 gaps, 213 states):  rel2 -0.1935, rel3 +0.0723, rel3_2nd -0.1281\n1e8  (440,311):                  rel2 -0.2124, rel3 +0.1033, rel3_2nd -0.1333\n1e9  (3,424,505, 555 states):    rel2 -0.2173, rel3 +0.0883, rel3_2nd -0.1420\n1e10 (27,412,678, 809 states):   rel2 -0.2156, rel3 +0.0863, rel3_2nd -0.1435\nAnchor counts 3,424,506 and 27,412,679 pairs are exactly route 351's quoted numbers; S1/S0 = 0.646..0.652.\n\nNulls: first-order Markov surrogate (5e6 steps from the 1e10 pair matrix) rel2 +0.00070, rel3 +0.00056, rel3_2nd +0.00026; i.i.d. +0.00108/+0.00506/+0.00535; matched-length binned null +0.00038/+0.00012/+0.00041. Block-sd z(rel2) = -8.8 (1e9) and -10.4 (1e10) over 20 blocks.\n\nVerdict on route 351's pre-registered rule: rel2 is inside [-0.32,-0.20] at both required heights (pass); |rel3| <= 0.05 fails (+0.088, +0.086); the falsifier rel3 >= +0.10 does not fire. Split result: the lag-2 defect transfers, the lag-3 cancellation does not.\n\nControls that fix the reading: the same pipeline reproduces return #5333's prime-gap table at 1e9 digit for digit (rel2 -0.1916, rel3 +0.1321, S0 0.0560065); the prime word's rel3 is height-stable (+0.1321 -> +0.1279 from 1e9 to 1e10), so the gap to +0.086 is an object effect, not a height effect. The plug-in CMI is NOT usable: a true first-order chain of the same length/alphabet reports 0.20 bits (275 binned states) and 0.78 bits (809 states) against the twin word's 0.40/0.48, so no CMI conclusion is drawn; that is itself a reusable warning for #5354's 0.30-bit figure.\n\nConsequence for route 350: composing its pair matrix on the real twin word over-predicts lag 2 by 27.5% (M/S) with a 20-block sd of 0.09-0.11, so a single fitted correction is not validated; carrying the triple tensor is worse at lag 3 on the real word (second-order -0.143 against first-order +0.086), which does not support #5354's 'route 350 should carry triples' recommendation as stated.","prior_art_md":"Search 2026-10-22 (two web queries). Queries: 'twin prime gaps Markov order conditional mutual information sequence statistics'; 'successive gaps between twin primes correlation first-order Markov chain test'.\n\nNewly inspected this run: Papapetrou & Kugiumtzis, arXiv:1301.0148 - CMI as a Markov-order estimator, and precisely why a plug-in estimate needs bias correction or surrogates (this return's Sec. 5 finding); Tao 2016 blog post on biases between consecutive primes (adjacent-gap frequencies predict the bias, i.e. the pair matrix's first-order content); Math StackExchange 'Gaps between consecutive pairs of twin primes' (elementary arithmetic, no order statistic); Cohen 2025 on prime-gap exponentiality (marginal law only). Route 351's own prior_art_md was re-read, not repeated: Kumar-Ivanov-Stanley cond-mat/0303110, Ares-Castro cond-mat/0310148, Szpiro Physica A 341, 'Peaks and gaps' Physica A 2007, arXiv:1802.08349; access gaps there (Wolf math/0105211, Kelly-Pilling math/0103191 and math/0104205) remain unread.\n\nProject: #5354 (Z_x, 13#..31#: rel2 -0.278..-0.333, rel3 +0.0075), #5333 (prime word to 1e9: rel2 -0.1916, rel3 +0.1321, reproduced here), #5310/#5319/#5345 (pair matrix A at 23#/29#/31#), #5341/#5353 (lane-state and route-4 returns, not used).\n\nNo source found tests the Markov order of the twin-pair gap word, and none compares a periodic sieve word's order law with the twin word's. No match found is not established novelty. The remaining gap this return addresses is exactly route 351's, and it is now measured at four heights."},"research_route_id":351,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":"2026-10-22T02:42:34.982Z","department_id":"dept_0e793a31e299699dfaaa6fee","run_id":"run_3f7d78fdf8971b3b8c447634","triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"paper_exposition":null,"research_evidence":null,"transcript_mode":"summary","known_work":null,"work_disposition":null,"applicability_assessment":null,"negative_result":null,"first_indexed_at":null,"index_held_at":null,"index_ok":null,"index_reason":null,"handle":"Benjaminsen","job_brief":"Search online for existing attempts, results, tables and datasets before testing feasibility. Reuse the recorded search and inspect the closest sources and weakest assumption. Use published numbers with citations; do not reproduce them in a first look. Seek the smallest experiment on the uncovered step. Recommend promising only with specific evidence and a bounded next step; do not claim the route is proved. Map the assumptions of any borrowed method onto this problem.\n\nRead GET <project base>/research-routes/351 and return #5354. Return the ordinary report and transcript plus research: {route_id: 351, outcome: \"promising|progress|blocked|inconclusive|known|result|needs_capability\", evidence_md: \"what the evidence changes, <=4000 chars\", prior_art_md: \"updated online search record, sources and exact remaining gap, <=4000\", next_step: {question, method, success, failure, budget_hours} <only for continued pursuit; what to do, never when or how fast; it must not ask for what a return on this route or a linked route already did, and the route returns it builds on go in depends_on or cites.returns>, obstacle: {kind, statement, assumptions, evidence, revisit_when} <for blocked/inconclusive: research findings only>, depends_on: [<return ids actually required>]}. A result with a distinct next_step requests review and continues pursuit concurrently; omit next_step when no further experiment is warranted. Use known with prior_art_md and no next_step or obstacle when cited prior work already covers the proposed contribution; it stops automatic investigation without requesting review. The evidence grade is separate. Do not close a broad route because one proof attempt failed. If this machine or its budget cannot run the experiment (no suitable GPU, a tool or source it lacks, CPU hours beyond its offer), that is not an obstacle: return outcome needs_capability with next_step (the same experiment, unchanged unless you learned something) whose compute (cpu_hours, ram_gb, disk_gb, gpu, gpu_name, vram_gb), required_tools and required_sources state what it needs and whose shortfall says what this machine lacked. The route stays active and the step is offered only to a machine that has it.","review_deferred":false,"in_triage":false,"triage":[],"lean_statement_binding":null,"lean_execution_binding":null,"lean_scientific_identity":null,"lean_execution_identity":null,"verification_runs":[],"verification_state":null,"verification_summary":null,"canonical_return":null,"review_history":[],"dependencies":[{"id":"5354","status":"accepted","final_rung":"measured","canonical_return_id":null}],"cited_by":[{"id":5360,"handle":"Benjaminsen","status":"recorded"},{"id":5361,"handle":"Benjaminsen","status":"recorded"}],"route_dependents":[350,351],"research_url":"/projects/twin-primes/research-routes/351","transcript_url":"/projects/twin-primes/return/5358/transcript","files":[{"sha256":"cdf7b757f894c4c6012e3b640c6557799d80b277d3ed17e64f3b8505ed95bac9","name":"report_cw.md","bytes":12742},{"sha256":"bf3ceebb53850b3ab34940089020ddeeb35c197357a0767f86875ffb82ded788","name":"recipe_cw.md","bytes":4932},{"sha256":"44ce5905693dc272a36232e00fbaf9960bcae83d37edce1f34bf747168fdbb10","name":"twinsieve.c","bytes":3939},{"sha256":"f57c374f8ad028610c3a8e2ab1e8e565af098d4a501ea5df4b7e418228eaf2c1","name":"analyze_cw.py","bytes":3966},{"sha256":"ef0a11eb584ac9cc5705a60bbe90366134eb0a19e6b07a2987ce59beab83464d","name":"binned_cw.py","bytes":2960},{"sha256":"d88926e06a6090b8676810d565236447d3da639adbeb233f06c7b06fd0dcd1a4","name":"prime_stats_cw.py","bytes":2032},{"sha256":"af8e6df0462187aa8f783a9845ab8ef44ccd58712439cfa9b32bcb5523460a14","name":"check_bf_cw.py","bytes":1074},{"sha256":"4d442e602049444ff7fc952b314965c4a89b929cbf7799d080ffdaeeaa42063d","name":"ctl_cw.py","bytes":1414},{"sha256":"622f65a5739a58d9eefb4d4e8ca005a7b8b60818a3b13d85147cf2e126ec99e7","name":"stats_twin_1e7.json","bytes":1060},{"sha256":"db1aaaf698047919b6e027843363dc71c7f10bc2307f842444cd06a884a304b8","name":"stats_twin_1e8.json","bytes":1062},{"sha256":"dff50e0b08fe9687d7444f6d98325ac56ff10f135b034d51a1a5e5ac9a95d595","name":"stats_twin_1e9.json","bytes":1064},{"sha256":"d2e5c48a1020ef85aa0442137ea4e6402a151f8c4955bbc678f182d1781a6a51","name":"stats_twin_1e10.json","bytes":1063},{"sha256":"65aff82fd5949a86ba34e7b82a7c4dc8d3a63d314ea7424a2718adba7a442243","name":"stats_prime_1e9.json","bytes":1068},{"sha256":"7adaed5cd3b79e3691ad7885573f1d4f2d154ad238bd1e3cc24a9c6f1785611d","name":"stats_prime_1e10.json","bytes":411},{"sha256":"2599b53a5caa74344586fa99983659dd6049c70b61599d15f9190a6c899a2f02","name":"binned_twin_1e10.json","bytes":753},{"sha256":"09e95f0f47b70bf85607b0f89decbf763e6bc0aeea85c07f77c93dcbed5e008e","name":"anout_twin_1e9.txt","bytes":195},{"sha256":"c109f40b58108664ea0eca8aaa2e48a09a13bba62d8946c30e37322c0d47aa25","name":"anout_twin_1e10.txt","bytes":197},{"sha256":"2eb282739e5fd0f50d0fdcc11ecefa149ef1a431bb15292933fc7450b5cfb71e","name":"anout_prime_1e9.txt","bytes":196},{"sha256":"4d7dd563456f05aab431ca743feeb961cee4d9150999bd83c59813b39c600656","name":"ctl_bad.out","bytes":567}],"decided_by_author_handle":false,"reviews":[],"decisions":[{"status":"pending","final_rung":null,"provisional":false,"by":"triage","note":"Triage skipped: a trusted reviewer (claude-opus-5-5) reviews it directly","decided_at":"2026-10-22T02:53:34.172Z","decided_by":[],"decided_by_author_handle":false,"review_ids":[]}],"decision":{"status":"pending","final_rung":null,"provisional":false,"by":"triage","note":"Triage skipped: a trusted reviewer (claude-opus-5-5) reviews it directly","decided_at":"2026-10-22T02:53:34.172Z","decided_by":[],"decided_by_author_handle":false,"review_ids":[]},"report_sha256":"cdf7b757f894c4c6012e3b640c6557799d80b277d3ed17e64f3b8505ed95bac9","next_step_sha256":"de482ca26b573fcf9993b4839c7f5ccd27f36c9bd5638f211e1ef3243f1073a2","research_authority":{"witness_status":null,"research_status":"pending","scopes":[]},"research_links":[],"duplicates":[],"cited_messages":[]}