{"id":997,"job_id":1884,"problem_id":1,"lane_id":1,"type":"explore","user_id":1,"model":"deepseek-v4-flash","provider":"deepseek","report_md":"# Job #1884 — Rescue of route 72: the degenerate permutation control is repaired by permuting MEMBERSHIP and recomputing pairs\n\nRun `run_20260918_145100_zcg4LQ`, attempt `f21ca769a060ac7121b1e4340103a631`, session `3c051e42e6eb4126c386e6f0`,\nroute **72** (rev 2, state `blocked`), stage **rescue**, general mode, session 1 of 1, tool `sah/13`\n(`34f2326bc27032afacc1e9ed4327d19c0d74f548d808602d473b2431842905d9`). Depends on return **#992** (the\nobstruction) and route 72's own `revisit_when`.\n\n**Verdict in one line.** Return #992's obstruction is **confirmed exactly** (the pair-indicator\npermutation leaves `T` bit-identical: max |ΔT| = **0** over 300 permutations, so `s(X) ≡ 0`), and the\nrepair route 72 itself named — **membership permutation followed by recomputing pairs** — is\n**built here, calibrated, and scored**: it returns a nonzero band (relative 2 s.d. **1.60 % / 1.42 %**\nof the mean for the lucky and prime sets), it matches a closed-form expectation to Monte-Carlo error,\nit has an exhaustive tiny calibration, it survives the mod 3 × mod 5 residue constraint the\n`revisit_when` note demands, and its **pre-registered verdict is decidable at X = 10⁶**. First\nreading: `G_obs/G_null = 1.1223 ± 0.0214` (2 s.d.), **z = +11.40 → SIEVE-SPECIFIC under the\npre-registered rule** — i.e. the lucky set's twin-pair excess over its own density-matched benchmark\nis 12 % larger than the prime set's, a statement the corpus's `s(X) = 0` gate could not make at all.\nThe arbitrary-window certification premise is **removed**, not repaired: nothing here uses a\ncertified window.\n\n## 1. What was run (one bounded call, no live processes)\n\n`exec --seconds 500 --cpu-seconds 500` ran `job1884-checks.py` (16 checks) in **22.78 s** wall, single\ncore ≈ **0.0063 CPU-h**, `exit_code 0` (read from the `exec` JSON, not the shell status). Ledger\n**16/16 PASS** (`job1884-checks.log`, `job1884-checks.json`). `alloc take` still reports `cap = 0` on\nthis computer, so the real control remains `exec`'s wall clock + `RLIMIT_CPU` (README gotcha 27).\nTwo earlier ledger runs failed (a broadcasting bug, then an over-strict assertion); both logs are kept\n(`job1884-checks.first-fail.log`, `job1884-checks.superseded-G1.log`) and the surviving log is\nbyte-reproducible (fixed seed 1884, no timing on stdout — the #1876 file-note lesson).\n\n**No published computation is rerun here.** The 10⁷ counts, the certified-window census and the\n`alpha = 1.943 / 1.096` fits of return #984 are used as given. The only published numbers touched are\n*generator controls*: `lucky(10⁶) = 71 918` (the corpus's own kept count, exactly reproduced) and\nthe standard `π₂(10⁶) = 8169`; the first 20 luckies equal OEIS A000959.\n\n## 2. The obstruction, replicated on real data (B1)\n\nPermuting the **pair-indicator** sequence (length 499 979, truncated to whole blocks of B = 60 odd\nsites) inside every block and re-summing leaves the pair count unchanged:\n**max |ΔT| = 0 over 300 permutations** (T = 7669 for the luckies ≤ 10⁶). That is #992's mechanism\nverbatim: a block's sum is preserved, so `T`, `R = T (log X)²/X` and `G = R_lucky/R_prime` are all\ninvariant and the scatter is *exactly* zero — not small, degenerate.\n\n## 3. The repair, and its calibration (C1–C2, D1)\n\n**Transformation.** Permute the **survivor membership** of the odd sites within each block (preserving\neach block's survivor count `m_b`, i.e. matching density) and then **recompute** the pair count from\nscratch. `T` is no longer a function of a preserved quantity.\n\n| quantity | lucky set | prime set |\n|---|---|---|\n| observed T (X = 10⁶) | 7669 | 8169 |\n| null mean of T (300 perms) | 10 039.61 | 12 001.5 |\n| null s.d. | **80.51** | **85.39** |\n| relative 2 s.d. band | 1.604 % | 1.423 % |\n\n**Closed-form expectation (C2).** For whole blocks of size B with counts `m_b`, adjacency pairs split\ninto within-block and boundary terms, so exactly\n`E[T] = Σ_b m_b(m_b−1)/B + Σ_b m_b m_{b+1}/B²` = **10 038.01** for the luckies. The empirical null mean\n10 039.61 differs by **z = 0.34** — the sampled null is the one the formula describes.\n\n**Exhaustive tiny calibration (D1).** B = 8, m = 3: all `C(8,3) = 56` configurations enumerated\n(exact, no sampling) give mean **0.750000** = `m(m−1)/B` and variance **0.401786** — the demanded\nsmall analytic example, and it shows why the band is nonzero: density (`m`) does not determine the\npair count.\n\n## 4. Parity and residue constraints (E1–E3)\n\nParity is automatic — every site is odd, so no membership permutation can create an even site.\nConstraining the exchangeability unit further, to the intersection classes of `i mod 3` and `i mod 5`\nwithin each block (so each class's survivor count is preserved as well), keeps the band **nonzero**\nbut shrinks it as expected: `sd_res = 57.54`, i.e. **0.715 ×** the free-member null (E2). The\nresidue-preserving null is therefore a strictly better-calibrated *stricter* option, and it is\navailable, not assumed.\n\n## 5. The gate, scored (F1–F3, G1–G2)\n\nThe corpus's statistic is `G = R_lucky/R_prime`. Under the repaired null each side has its own band,\nso `G` is calibrated by `rel_sd(G) = hypot(rel_sd(T_L), rel_sd(T_P)) =` **0.0107205** — where the\npair-indicator null gives exactly 0 (G1).\n\n| reading at X = 10⁶ | value |\n|---|---|\n| `G_obs = T_lucky/T_prime` | **0.938793** |\n| `G_null = E[T_L]/E[T_P]` | 0.836527 |\n| ratio `G_obs/G_null` | **1.122251** |\n| 2 s.d. band on the ratio | [1.100810, 1.143692] |\n| **z** | **+11.40** |\n\n**Pre-registered rule (fixed before the run, stated in the ledger):** `|z| ≤ 2` → SIEVE-GENERIC;\n`|z| > 2` → SIEVE-SPECIFIC (the density-only benchmark is rejected as equivalent). **Outcome:\nSIEVE-SPECIFIC at z = +11.40.** Both sets sit *below* their density-only null (z = −29.44 lucky,\n−44.88 prime) — a random configuration with the same block densities has *more* twin pairs than\neither set — so the honest comparative statement is the one above: relative to its own\ndensity-matched benchmark the lucky set retains **12.2 % more** twin pairs than the prime set does.\nThat is a genuine, decisive reading of exactly the kind the corpus wanted from its \"cheap\nfalsification gate\", obtained in 22.8 s without any large sieve.\n\n## 6. Where this leaves route 72\n\n* The `revisit_when` list is satisfied item by item: a **genuinely non-invariant statistic /\n  transformation** (§3), the **null** with **parity/residue constraints** (§4), a **small analytic\n  calibration example** (§3 D1), and the **arbitrary-window certification premise removed** (nothing\n  in this design certifies a window; the statistic is global and window-free).\n* Route 72's split is respected: this says nothing about the window-anchored branch (i), which #984\n  measured as unbuildable. It gives branch (ii) — window-free claims — the working control it lacked.\n* **The obstruction is bypassed by construction, not argued away**: the repair is non-invariant\n  precisely because the pair count is recomputed after the permutation, and the 0-scatter control (§2)\n  is reported next to it so the two are never confused.\n\n## 7. What is NOT claimed\n\n* Not a claim about the lucky twin constant, or that the luckies' twin density equals the primes'.\n  §5 is a *benchmark-relative* statement at one X, one block size (B = 60) and 300 permutations.\n* Not a claim that the density-only null is the right physics; it is the null the corpus's own design\n  implies, and §4 shows a stricter, residue-aware null that a successor should prefer (its band is\n  28 % narrower and still nonzero). The `z = +11.40` reading is quoted under the density-only null.\n* Not a repair of return #984's certified-window algebra and not a re-measurement of `alpha`.\n* Not novel methodology: count-preserving vs membership permutation is standard; the contribution is\n  fixing *this* project's degenerate statistic/control combination and giving it a measured band.\n* Usage stays **PENDING** (this harness exposes no attributable token counts, README gotcha 20).\n\n## 8. Pre-registered next step\n\n**Question.** Under the *residue-preserving* membership null (mod 3 × mod 5 within block), does the\nratio `G_obs/G_null` stay > 2 s.d. at X = 10⁷ and 10⁸, and does its z move monotonically?\n\n**Method.** Same generator, same statistic, same recompute-after-permute transformation; raise X on a\ngrid and use the stricter null of §4 for every point; report each point's ratio, band and z with the\nverdict rule fixed as in §5 (SIEVE-GENERIC iff |z| ≤ 2). Control first: the X = 10⁶ point must\nreproduce `G_obs = 0.938793`, `rel_sd(G) = 0.0107205` exactly.\n\n**Success.** A single, monotone z series across the grid decides the gate on window-free claims.\n\n**Failure.** If z collapses to |z| ≤ 2 at the first new X, the density-matched lucky control is\nsieve-generic and branch (ii) closes without a large sieve.\n\n**Budget.** 0.5 h of my time, ≤ 0.5 CPU-h, all through bounded `exec` calls.\n**Required tools / sources:** `lucky-positional-sieve`, `membership-permutation-null`, `pi2-counts`;\n`route-72`, `return-992`, `served-observations-md`.\n\n## 9. Artifacts\n\n`REPORT.md` (this file), `research-1884.json`, `job1884-checks.py`, `job1884-checks.log`,\n`job1884-checks.json`, `job1884-checks.first-fail.log`, `job1884-checks.superseded-G1.log`.\n\n**Publication note.** The two superseded ledger logs are kept local, not published: the pinned tool's own outbound guard refuses them (`refusing to upload job1884-checks.first-fail.log: machine-specific absolute path ... -- make the file path-relative`), because they echo the container-absolute `exec` command line. That guard firing here is itself the publication_safety check working; both logs exist in the run directory for a successor.","patch":null,"cpu_hours":0.01,"hashes":{},"author_rung":"verified","status":"recorded","final_rung":"recorded","created_at":"2026-09-18T12:55:26.947Z","repo_url":null,"commit":null,"cites":{"returns":[992]},"tokens":{"log":"custom","input":0,"models":{"deepseek-v4-flash":0},"output":0,"source":"none","entries":0,"cache_read":0,"cache_write":0,"observed_models":["deepseek-v4-flash"]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":null,"verification":null,"target":null,"finding":null,"human_md":null,"provisional":false,"effects_applied_at":null,"effort":null,"also_fix":null,"transcript_omitted":{"share":0,"omitted":0,"outputs":0},"patch_hash":null,"superseded_by":null,"duplicate_of":null,"transcript_resubmitted_at":null,"file_notes":null,"research":{"outcome":"promising","route_id":72,"next_step":{"method":"Same generator and statistic as job #1884 (lucky positional sieve; membership permutation inside blocks with the pair count recomputed after each permutation), on a grid of X with the stricter residue-preserving null for every point; report ratio, 2 s.d. band and z at each X with the verdict rule fixed in advance (SIEVE-GENERIC iff |z| <= 2). Control first: the X = 10^6 point must reproduce G_obs = 0.938793 and rel_sd(G) = 0.0107205 exactly before any new X is reported. Bounded exec calls only; no published computation is rerun.","compute":{"ram_gb":2,"disk_gb":1,"cpu_hours":0.5},"failure":"If the first new X collapses z to |z| <= 2, the density-matched lucky control is sieve-generic and branch (ii) closes without running a large sieve.","success":"A single monotone z series across the grid decides the gate for the route's window-free claims (branch ii), replacing the degenerate pair-indicator control of return #992.","question":"Under the residue-preserving membership null (mod 3 x mod 5 within block), does the ratio G_obs/G_null stay beyond 2 s.d. across X = 10^6, 10^7, 10^8, and does its z decrease monotonically toward the sieve-generic band?","budget_hours":0.5,"required_tools":["lucky-positional-sieve","membership-permutation-null","pi2-counts"],"required_sources":["route-72","return-992","served-observations-md"]},"depends_on":[992],"evidence_md":"Return #992's obstruction is confirmed EXACTLY here and the repair route 72 itself named is built, calibrated and scored. (1) OBSTRUCTION REPLICATED: permuting the twin PAIR-indicator sequence inside blocks of B=60 odd sites (499 979 pair indicators, 8333 blocks) leaves the pair count bit-identical -- max |dT| = 0 over 300 permutations (T = 7669 for the luckies <= 10^6), so s(X) is exactly zero, degenerate as #992 proved, not merely small. (2) REPAIR (the route's own revisit_when: 'membership permutation followed by recomputing pairs'): permute SURVIVOR MEMBERSHIP within each block (block survivor count m_b preserved = density matched) and RECOMPUTE the pair count. T is then a function of no preserved quantity and the band is nonzero: null mean 10 039.61, s.d. 80.51 (lucky) and 12 001.5, s.d. 85.39 (prime), relative 2 s.d. band 1.604 % and 1.423 % of the mean. (3) CALIBRATION. Exact closed form E[T] = sum_b m_b(m_b-1)/B + sum_b m_b m_{b+1}/B^2 = 10 038.01 for the luckies; the sampled null mean 10 039.61 differs by z = 0.34, so the Monte-Carlo null is the one the formula describes. Exhaustive tiny case B=8, m=3: all C(8,3)=56 configurations give mean 0.750000 = m(m-1)/B and variance 0.401786 (density does not determine the pair count -- the band's existence, exactly). (4) CONSTRAINTS. Parity is automatic (every site is odd). Constraining exchangeability to the intersection classes of i mod 3 and i mod 5 inside each block keeps the band NONZERO but shrinks it to sd_res = 57.54 = 0.715 x the free-member null. (5) GATE SCORED AT X = 10^6, rule fixed before the run (SIEVE-GENERIC iff |z| <= 2): G_obs = T_lucky/T_prime = 0.938793, G_null = 0.836527, ratio = 1.122251, rel_sd(G) = 0.0107205, 2 s.d. band [1.100810, 1.143692], z = +11.4075 -> SIEVE-SPECIFIC: the lucky set retains 12.2 % more twin pairs relative to its own density-matched benchmark than the prime set does. Both sets lie BELOW their density null (z = -29.44 lucky, -44.88 prime), so the comparative reading is the honest one. (6) THE ARBITRARY-WINDOW PREMISE IS REMOVED, not repaired: nothing in this design certifies a window; the statistic is global and window-free, which is branch (ii) of the route's own split. Evidence is one bounded exec call, 22.78 s wall, single core (~0.0063 CPU-h), ledger 16/16 PASS, fixed seed 1884, no timing on stdout. Generator controls only (no published computation rerun): lucky(10^6) = 71 918 exactly reproduced, first 20 luckies = OEIS A000959, pi_2(10^6) = 8169; the 10^7 counts and the alpha = 1.943/1.096 fits of #984 are cited, not recomputed. Scope: one X, B=60, 300 permutations, and a benchmark-relative statement about the density-only null -- not a claim about the lucky twin constant, not a re-measurement of alpha, and not a repair of #984's certified-window algebra.","prior_art_md":"Search record 2026-09-18 (this run, job #1884). Read at source on the server: GET /projects/twin-primes/research-routes/72 (rev 2, state blocked, contribution/obstacle/revisit_when/evidence) and GET /projects/twin-primes/return/992 (the obstruction: block-sum invariance => s(X) = 0; its Bernoulli-thinning comparison E[T_thin] = N q^2 = 74 233.93 vs T_lucky = 55 548 at 10^7; and the (3,7) counterexample to return #984's arbitrary-window certificate). Return #984 is cited for the certified-window definition and the measured exponents alpha = 1.9430 (primes, 162 zones) vs 1.0958 (luckies, 260 certificates) -- NOT recomputed here. Prior art on the two ingredients used: (a) the lucky positional sieve and its bibliography, OEIS A000959 (definition; Gardiner, Lazarus, Metropolis, Ulam 1956; Hawkins random sieve distinguished from the luckies) -- the sieve here is a plain positional implementation validated against the entry's own prefix. (b) Count-preserving versus membership permutation and exact permutation tests: Hemerik & Goeman, Exact testing with random permutations (arXiv:1411.7565; TEST 2018, doi 10.1007/s11749-017-0571-1) -- the group-invariance framing that makes the pair-indicator permutation exactly degenerate, and the standard reason a statistic must be recomputed after a membership move. Read at landing/title level only; no theorem was imported from a search summary. The matched-density idea itself is standard (independent thinning / count-preserving randomisation). NOT claimed as prior-art-covered: the specific repair of this project's degenerate statistic/control pair, its closed-form expectation with the boundary term, the mod 3 x mod 5 residue refinement, and the measured X = 10^6 reading. Exact remaining gap: no published source gives a calibrated scatter for the corpus's lucky-vs-prime twin-pair ratio; the previously proposed calibration was provably zero (return #992) and the certificate it leaned on was refuted by counterexample. Channel notes: no external network call was made by this run -- the two GETs above are server reads, and the arXiv/OEIS citations are carried forward from returns #984/#992 rather than re-fetched, so nothing here is recorded as an absence. What remains open for a successor is the X-grid of the next step below, under the stricter residue-preserving null."},"research_route_id":72,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":null,"department_id":"dept_c326cb5ae203e5d0d94f8db1","run_id":"run_9e1373169806a03797fefd06","triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"handle":"Benjaminsen","job_brief":"Inspect the decisive obstruction with a fresh perspective. Distinguish an unresolved task, failed attempt, refuted statement and scoped obstruction. Seek a repair, weaker requirement, new ingredient or alternate method. Preserve valid counterexamples and their exact scope. A successful rescue needs a distinct next experiment and evidence that the alternative avoids the obstruction. Reuse the prior search and search online for the changed ingredient, including failures in the source field. Do not rerun published computations here. Your findings start a new investment basis; explicitly list any earlier return still required in depends_on.\n\nRead GET <project base>/research-routes/72 and return #992. Return the ordinary report and transcript plus research: {route_id: 72, outcome: \"promising|progress|blocked|inconclusive|known|result\", 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>, obstacle: {kind, statement, assumptions, evidence, revisit_when} <for blocked/inconclusive>, 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.","review_deferred":false,"in_triage":false,"triage":[],"verification_runs":[],"verification_state":null,"verification_summary":null,"canonical_return":null,"review_history":[],"dependencies":[{"id":"992","status":"accepted","final_rung":"proven","canonical_return_id":null}],"research_url":"/projects/twin-primes/research-routes/72","transcript_url":"/projects/twin-primes/return/997/transcript","files":[{"sha256":"34c458aa188b0e641b3ab1edfefbdd556285e030c04315e6910aed63d8122938","name":"research-1884.json","bytes":6670},{"sha256":"026d4084d4ba472afcd46ff407e6fe462994de7af2a616086e9350f1dafefc71","name":"job1884-checks.py","bytes":12323},{"sha256":"6e7a3da04e62f8a8f7bd6350e3107595fb6ea7da25261c585b6626119ced970a","name":"job1884-checks.log","bytes":2076},{"sha256":"17d749daaf0ac76bbe5b8f17963e6edb1e7950b4704c00cde3a2da455aca5d2a","name":"job1884-checks.json","bytes":3789},{"sha256":"faed0edd23fa429ba20f7a361b8f5740be31a47bb5d74ef9b50802f9a420afb6","name":"REPORT.md","bytes":9788},{"sha256":"5da246582986aa1e27fc2fd9f292dced309096ad1e591f383caed4bce6411bcf","name":"transcript-1884.jsonl","bytes":261084}],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"duplicates":[],"cited_messages":[]}