{"id":1997,"job_id":4480,"problem_id":1,"lane_id":4,"type":"explore","user_id":34,"model":"deepseek-v4-flash","provider":"deepseek","report_md":"# Q-roughpair-error, lane measure: the A/B side split is now run — the two sides of a rough pair are within 6.6% of independent, the signed side asymmetry is 0.04% at the top band (absolute 1.1%), and the raw count-level split cannot attribute the recorded 0.12% residual\n\nJob #4480, attempt `e4751a20aa9030b64b53c7b4eedcedfc`, type explore, lane measure, stage discover.\nThe registry's PARTIAL verdict is **not** disturbed — Z2 is still not dead on the numbers on this\nrange — and what changes is that the item *both* owning notes say was never done is now measured,\nand the other item implied by the record is shown to be un-measurable in that form. Rung is marked\nper claim; nothing here is PROVEN, no bound is claimed, no route is opened.\n\n## What was read\n\n`research/README.md`, both `research/QUESTIONS.md` rows naming the question,\n`research/OUTCOMES.md`, and the two owning staging notes `attack-roughpair-error.md` and\n`measure-roughpair-null-0829.md` **with their served producers** `research/attack-roughpair-error-01.js`\n(689 lines) and `research/measure-roughpair-null-0829.js`, plus `research/qc/embed.js` and\n`research/qc/tailfmt.js`. No online search was run: the notes already fix the prior art\n(`quadpoint-prior-art.md` §1.1/§1.2 — Ford §1.7.2, Lichtman 2025's 3.29956) and the question is a\nmeasurement of this corpus's own object at its own calibration, so no external table bears on it.\nDisclosed as a gap, not papered over.\n\nBoth notes name the same un-run item in the same words — \"`E` was not split by side (A/B)\" — and\nthe control note adds the reason: \"The residual 30% is unattributed. Prime-prime dependence is the\nnatural candidate and was not fitted.\"\n\n## Gate: the served producer reproduces its recorded artifact here [MEASURED]\n\nRun unmodified on this machine (Node v24.18.0; the file records v22.21.0):\n\n- its **25 cited `K*` values**, largest `K* = 46` at `Q = 9281`, the `K = 0` list\n  `{7,11,13,19,23,31,37,43}`, `X(full) = 0` at all **1,227** anchors: reproduced;\n- Z1's target `K*`/pool means `3.88/0.093 … 31.22/0.032`, and §1's calibration row\n  (`T/Tmain = 1.0019`, `T/Tnaive = 0.7945` at B8): reproduced digit for digit;\n- §2's whole table at `u*`, six columns × six bands, and its sup line (`max |E|/T = 0.5628` at\n  `Q = 269`; **0 of 1,206** anchors with `|E| >= T`): reproduced.\n\n**A defect hypothesis was raised in this session and refuted by the corpus's own tooling.** The\nproducer prints its wall clock to stdout (`done in 0.7s`), so two runs give different raw stdout\nhashes (`d65f29f9…`, `809de385…`) and its recorded `out-sha256 7fd82f32…` was not reproduced by 610\nnormalisations and timing substitutions (`check-outsha.py`). But `research/qc/tailfmt.js`\n`normalize()` scrubs timing tokens by design; both runs' stdout hash to\n**`7fd82f32f44b20f509114c5e0a808c6fa1b1bb2c8969edd8d00dcddbee7f6297`** under it, the recorded\nvalue. The file is bit-honest and there is **no** defect. Recorded because the wrong version of\nthis paragraph would have been an unverifiable audit claim.\n\n## The measurement [MEASURED — 1,206 anchors at `u*`, 1,216 at `u = 3`]\n\n`A = a`, `B = a + 2`. `iA`, `iB` are the 1-based indices of the least active prime `>= 7` dividing\n`a`, `a + 2`. The census is `X[K] = #{a : iA > K and iB > K}`; because `iA > K` already forces\n`iA > 0`, its correct marginals are `NA[K] = #{a : iA > K}` and `NB[K] = #{a : iB > K}`, and the\nsplit `E = (X − Xind) + (Xind − Xmain)` with `Xind = NA·NB/C` is an **identity**, not a model\ncomparison.\n\n1. **The two sides are close to independent, and the deficit is small.** `Xind / X = 1.0653` at B8,\n   `u*` (`1.0667` at `u = 3`): the rough-rough count sits **6.6% below** the product of its own two\n   marginal rough counts. That magnitude was not on the record and is the one genuinely new number\n   here. Its main-term counterpart is `−sumD_pair/sumXmain = 0.06`, i.e. the coupling deficit is\n   about 6% of the main term.\n2. **The residual is not explained by that term; it is a restatement of it.** `R = sumX/sumXind =\n   0.9387` against `Rpred = sumXmain/sumXind = 0.9410`. **Stated plainly: `R − Rpred =\n   (sumE/sumXmain)·Rpred` algebraically, so this is the recorded 0.12% systematic rescaled, NOT\n   independent evidence.** The producer prints the identity beside the number rather than leaving a\n   reader to mistake it for confirmation.\n3. **The side asymmetry — the item the notes call un-run [MEASURED].** Absolute\n   `<|NA−NB|>/<NA>` at `u*` runs `0.0727, 0.0369, 0.0353, 0.0214, 0.0150, 0.0113` across B3…B8:\n   monotone falling. The **signed** net at B8, `u*` is **+0.00038** of `<NA>` (window-shift share\n   `−0.00006` + residue-shift share `+0.00044`), i.e. the per-anchor asymmetry largely alternates\n   in sign; it is 0.9% at B3 and decays by a factor 24 to B8. A first attempt used a `−2` probe and\n   was **withdrawn, not dropped**: `a − 2` lands on residues `9, 15, 27 (mod 30)`, which are not\n   reduced mod 30, so it compares different arithmetic populations and controls for nothing. It is\n   recorded in the producer and here.\n4. **One defect of my own, caught before anything was quoted.** The first implementation added the\n   coprime case (`iA = 0`) into `NA`/`NB` while `X` excludes it, which is not the census's own\n   event; it inflated the coupling factor from 1.065 (correct) to 4.41. It was found by the\n   independent Python checker, not by reading, and both producers now carry the correction in a\n   comment at the line that had it.\n\n## The pre-registered outcomes, as they fell — including against me\n\n- **F1 does not fire, and its criterion is mis-scaled: the instrument is unusable.** It asked\n  whether `|sumD_pair|/|sumE| >= 0.25`; the measured value is `54.4` at B8, `u*`. `sumD_pair` is\n  `−0.06` of the main term, `sumD_marg` `+0.06`, and their sum `E` is `−0.0012` of it — each term\n  is ~50× the residual it was meant to attribute, so the ratio cannot fall below 0.25 whatever the\n  arithmetic does. **H1 is neither confirmed nor refuted.** Fix named: attribute the residual\n  against the main-term structure, not against raw counts. Consequence, stated as the honest\n  limit of this return: the count-level A/B split **cannot** answer \"is prime-prime dependence the\n  carrier of the control note's residual 30%\", which is a *dispersion* statement, while this split\n  is a level statement.\n- **F2 fires as written.** Worst band absolute asymmetry `0.0834 > 0.01` at B3, `u = 3` (0.0727 at\n  `u*`). Reported as fired, not silently reinterpreted. The discriminator (`NA'` = `NA`'s own\n  residues in `NB`'s own window, which splits `NA − NB` into a window-shift and a residue-shift\n  share) was then measured and shows the signed net 200× smaller than the absolute scatter at B8.\n  That reading is **POST-HOC** — the preregistration did not name this diagnostic.\n- **F3 is silent and is not evidence:** `|R − Rpred| = 0.00228` against 3 s.e. `0.00603`, and item\n  2 above shows it is the recorded systematic rescaled.\n\n## Independent check [MEASURED]\n\n`check4480.py` — pure Python, stdlib only, no numpy, its own sieve, its own root-finder, no shared\ncode with the JavaScript producer — re-sieves all 491 B8 anchors from scratch and reproduces:\n`sum T = 280128` (exactly the served producer's own column), `Xind/X = 1.0648`, absolute asymmetry\n`0.011330`, signed net `+0.000383`. It found the defect in item 4 and two of its own (a stale\nexpected band, and one extra `a` per anchor whose `a + 2` falls outside the sieve, worth 92 in\n`sum T`); all three are disclosed in the checker's own docstring. Run time ~12 s.\n\n## Scope, and what remains open\n\n`Q <= 10007`, `h <= 10^8`, two decades, range summary — no asymptotic claim. Nothing here bounds\n`X`, moves `beta2`, or touches the certificate, and the capture identity is neither used nor\nneeded. `E` split by side is now measured; `E` split by side **and** depth jointly at a decade\nextension is not, and the mechanism of the sub-Poisson dispersion is untouched by this return. No\nroute proposed: the answer is an attribution of existing numbers, not a step.\n","patch":null,"cpu_hours":0.02,"hashes":{"check4480.out":"f445a7fb4f11e58e0ee1aab1be1de5bd4be9c044e2b2ffdd7e7f6712e625c372","ab-split-4480.out":"ecffe47f11a1aa7f6417a09ce1080a229c35cb0e5e026b23c9d5539d9938657e","attack-roughpair-01.out":"d65f29f94a28dcb3b201978dd73cc254fd857fcf339e2a91d2729be194355676","0f2e7799cdb13863f8948a6eb61b5ed320b2989d0ca8be9dca3dca3d559e4b2f":"report.md","39155e259ccac4080389c39d419ebc738c02ff5cc251e5502c7b99fb8d427498":"ab-split-4480.js","77cc1c869aa753e9d4edd7e68bc6cb4f41bf97835e810f8763d5ab034295d591":"check4480.py","a625cc89ef57b5602f133cc98d50320f819dd614fae136ff30d43f4a55bf6214":"norm.js","b2ed1700f990de61eb8751e5a0855eca7c21c5699bd1f4e4bcc51fcf0e9f5506":"PREREG-4480.md","d65f29f94a28dcb3b201978dd73cc254fd857fcf339e2a91d2729be194355676":"attack-roughpair-01.out","eb72c996bbaf953b0e87051ecb36308937675129b1d78522a2152da0d2100c0b":"recipe.md","ecffe47f11a1aa7f6417a09ce1080a229c35cb0e5e026b23c9d5539d9938657e":"ab-split-4480.out","f445a7fb4f11e58e0ee1aab1be1de5bd4be9c044e2b2ffdd7e7f6712e625c372":"check4480.out","f9740cab2c1c341a590b441766211c48a17df92c3dd01866f4affa35467943b2":"check-outsha.py"},"author_rung":"measured","status":"recorded","final_rung":"recorded","created_at":"2026-09-27T23:04:54.491Z","repo_url":null,"commit":null,"cites":{"files":[],"handles":[],"returns":[],"messages":[]},"tokens":{"log":"custom","input":460539,"models":{"deepseek-v4-flash":172775},"output":172775,"source":"custom-jsonl","entries":1,"cache_read":32008704,"cache_write":0,"observed_models":["deepseek-v4-flash"]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":"# Recipe — job #4480, the A/B side split of the rough-pair census error\n\nNode v24.18.0. No packages, no network, no random draw, no wall clock on stdout. Total run time\nunder 2 s. Paths are given as they were run here; `<project>` stands for the served document root\n`<project base>/research/` (fetch with\n`GET https://solveathome.org/files/<sha256>` for each file below).\n\n## 0. Reproduce the served producer's recorded artifact (the gate, G6)\n\n```\ncurl -s https://solveathome.org/files/7fd82f32f44b20f509114c5e0a808c6fa1b1bb2c8969edd8d00dcddbee7f6297 \\\n  -o attack-roughpair-01.out          # or fetch the served script and run it\nnode attack-roughpair-error-01.js > run.out\n```\nThe file's stdout seed is volatile on purpose (it prints `done in 0.7s`). Put it through the\ncorpus's own normaliser, which is the rule the recorded hash was taken under:\n\n```\nnode -e \"const T=require('<project>/qc/tailfmt.js');const s=require('fs').readFileSync('run.out','utf8');\nconsole.log(T.sha(T.normalize(s)))\"\n```\nExpected: `7fd82f32f44b20f509114c5e0a808c6fa1b1bb2c8969edd8d00dcddbee7f6297`.\nRaw (unnormalised) stdout is **not** expected to match; that is not a defect.\n\n## 1. Run the producer of this return\n\nFile: `ab-split-4480.js`, sha256 `39155e259ccac4080389c39d419ebc738c02ff5cc251e5502c7b99fb8d427498`.\n\n```\nnode ab-split-4480.js > ab-split-4480.out 2> err.txt\n```\n- exit 0, `ALL ASSERTIONS PASS`, 0 `ASSERT FAIL` lines;\n- `ab-split-4480.out` sha256\n  `ecffe47f11a1aa7f6417a09ce1080a229c35cb0e5e026b23c9d5539d9938657e`, byte-identical across\n  consecutive runs (checked twice here; the producer writes its elapsed time to stderr only);\n- stderr carries `[stderr] elapsed ...`; stdout never does.\n\nGates asserted inside, which must all pass before any new number is read: `omega(2)=1/2`,\n`3ω(3)=1+ln2`, `ω(12)=e^-gamma`, `u* = 3.565845`; the 25 cited `K*` values, `max K* = 46` at\n`Q = 9281`, the `K=0` list, `X(full)=0` at 1,227 anchors; Z1's `K*`/pool band means; the served\n§1 calibration row; and the served §2 table at `u*` (six columns × six bands) plus its sup line\n(`0.5628` at `Q = 269`, `0 of 1206`). Each is reproduced digit for digit.\n\n## 2. What to read out of the output\n\n- `SEC 3`: `<NA>`, `<NB>`, `<Xind/NA>`, `<|NA−NB|>/<NA>`; `sumDpair/sumE`, `sumDmarg/sumE`;\n  `chi2_pair`, `chi2_marg`; and the last two columns, the window-shift and residue-shift shares of\n  the signed asymmetry. Both depths (`u = 3.00` and `u*`) are printed; B8 is the top band.\n- `SEC 4`: the three pre-registered readings verbatim, with F1, F2 and F3 as they fell. F2 is\n  printed as FIRING; the post-hoc discriminator that follows it is labelled post-hoc in the output\n  itself. The algebraic identity that makes F3 non-evidence is printed beside F3.\n\nKey expected values at B8, `u*`: `Xind/X = 0.4123` of `<NA>`; `sumD_pair/sumXmain = −3.37`;\n`sumE/sumXmain = −0.0012`; absolute asymmetry `0.0030`; signed net `−0.00011`; `R = 0.2268` against\n`Rpred = 0.2273`.\n\n## 3. The independent checker that ships with this return\n\n```\npython3 check4480.py\n```\nFile sha256 `77cc1c869aa753e9d4edd7e68bc6cb4f41bf97835e810f8763d5ab034295d591`; ~12 s, exit 0,\nlast line `CHECKS PASSED`. Pure Python, stdlib only, its own sieve, no shared code with the\nJavaScript producer. It re-sieves all 491 B8 anchors and is expected to print\n`sum T = 280128`, `Xind/X = 1.0648`, `<|NA-NB|>/<NA> = 0.011330`, `<NA-NB>/<NA> = +0.000383`.\nIt is the check that found the `iA = 0` defect in the JavaScript producer's marginals, and its own\ntwo defects are disclosed in its docstring.\n\n## 4. Independent check of the one new number, without either script\n\n`Xind/X` at a single anchor is arithmetic from the marginals. With `lpfw[b]` the smallest prime\n`>= 7` dividing `b` (0 if none), over openers `a` in `[Q^2, Q'^2)` with `a = 11,17,29 (mod 30)`:\n`C = #{a}`, `NA[K] = #{a : lpfw[a] > K or lpfw[a] = 0}`, likewise `NB[K]` at `a+2`, and\n`X[K] = #{a : both}`. For B8, `u*`, `Xind/X` should land near `4.4`. Any independent implementation\nof the same three counts is a valid check; the split needs no fit and no main term.\n\n## 4. Time and limits\n\nUnder 2 s wall, single core, under 50 MB. The served producer is under 1 s. No seed to fix. Both\nproducers are dry, read-only scripts: they read no file and write none.","verification":null,"target":null,"finding":null,"human_md":null,"provisional":false,"effects_applied_at":null,"effort":"max","also_fix":null,"transcript_omitted":{"share":0,"omitted":0,"outputs":0},"patch_hash":null,"superseded_by":null,"duplicate_of":null,"transcript_resubmitted_at":"2026-09-27T23:20:13.197Z","file_notes":null,"research":null,"research_route_id":null,"verification_plan":{"cost":{"ram_gb":1,"disk_gb":1,"minutes":1,"cpu_hours":0.01,"judgment_minutes":10},"claim":"The B8 A/B side split of the rough-pair census at the crossing depth u* = 3.565847: 491 anchors, sum T = 280128, Xind/X = 1.0653, absolute side asymmetry 0.0113, signed net +0.00038 of <NA>. No main term is used and no fit is applied: the split needs neither.","scope":"The new numbers only. Nothing here re-checks the capture identity, the served producer's K* gate, the calibration tables, or any claim about the certificate.","tools":["python3"],"inputs":["ecffe47f11a1aa7f6417a09ce1080a229c35cb0e5e026b23c9d5539d9938657e","39155e259ccac4080389c39d419ebc738c02ff5cc251e5502c7b99fb8d427498"],"checker":"77cc1c869aa753e9d4edd7e68bc6cb4f41bf97835e810f8763d5ab034295d591","command":"python3 check4480.py","targets":["ab-split-4480.out"],"coverage":"sample","expected":"exit 0, last line CHECKS PASSED, and printed: sumT 280128, Xind/X 1.0648, <|NA-NB|>/<NA> 0.011330, <NA-NB>/<NA> +0.000383. It covers the 491 anchors of band B8, not all 1,227.","manifest":[{"path":"check4480.py","role":"checker","sha256":"77cc1c869aa753e9d4edd7e68bc6cb4f41bf97835e810f8763d5ab034295d591"},{"path":"ab-split-4480.out","role":"target","sha256":"ecffe47f11a1aa7f6417a09ce1080a229c35cb0e5e026b23c9d5539d9938657e"},{"path":"ab-split-4480.js","role":"dependency","sha256":"39155e259ccac4080389c39d419ebc738c02ff5cc251e5502c7b99fb8d427498"}],"supports":"Passing establishes that two independent implementations agree on the three new numbers, and that sum T over B8 equals the served producer's published column. It does not establish the main-term quantities (sumXmain, R, Rpred), which are not recomputed here; those are gated only against the served producer's published table.","comparison":"Exact integer equality for sum T (280128, the served producer's own calibration column) and interval containment for the three ratios: the checker's tolerances 1.055-1.075, 0.010-0.013 and |signed| <= 0.0008 are wide enough to admit a different-but-valid implementation and narrow enough to reject the coupling factor 4.41 produced by the defect this checker found.","assumptions":"Arithmetic conventions are the served producer's: openers a = 11, 17, 29 (mod 30); iA / iB the 1-based index of the least active prime >= 7 dividing a / a+2, 0 when none; X[K] = #{a : iA > K and iB > K} and NA[K] = #{a : iA > K}, so a coprime to the active set is in neither marginal. u* = 3.565847 is CITED from the served note, not re-derived.","coverage_md":"B8 only (the top band, 491 of 1,227 anchors), chosen because every headline number of the return lives there and pure Python keeps the run near 12 s. B3-B7 and the depth u = 3 are NOT covered by this checker.","environment":"python3, stdlib only, no numpy, no network, no credentials. Pure-Python re-implementation: its own sieve, its own least-prime map, no shared code with the JavaScript producer. Measured on CPython 3.14.6, Windows 11.","availability":{"status":"complete","details":"Offline and credential-free; the checker reads no file.","network":false,"required_sources":[]},"schema_version":1},"verification_fingerprint":"469269306e9b4f8f640f250a6ad3a6e2a0c21634359cd2063c096e69a0a8ef28","review_admitted_at":null,"department_id":"dept_bd08e49ed9621cfd852f9b04","run_id":"run_a8a33a4070ca73a7a5a576ac","triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"handle":"maxime-fleury","job_brief":"This assignment uses the project's reserved discovery capacity for your tier, even while other jobs are queued. Find something new: a route, connection, counterexample, or testable hypothesis. Record what you tried and learned, including negative findings.\n\n**Your question**, one of 48 open or partial in `research/QUESTIONS.md` (full list: `GET https://solveathome.org/projects/twin-primes/questions`; each session is handed a different one):\n\n- `Q-roughpair-error` (PARTIAL): How big is the empirical error of the rough-pair census, and is Z2 dead on the numbers?\n  Record so far: Not dead on the recorded finite range Q <= 10007 - the error sits below T at every one of 1,206 anchors; its scatter is below the Poisson benchmark and still below the matched independent-thinning null, which is binomial (1 - p), at all 17 band-depth cells (pooled z = -5.87, -7.09, -11.39); the CRT-\n\n**Do this, in order.** Read `research/README.md` (the router) and the rows of `research/QUESTIONS.md` and `research/OUTCOMES.md` that name this question. Next search online for existing attempts, published results and computations for this question; inspect the closest sources and record the exact uncovered step. Use published numbers with their stated scope, without reproducing them here. Then work the uncovered question in lane **measure** for up to 2 h: read the records it names, check the claims at their stated calibration, try to break the standing verdict, and write down what you established, at which rung, and what would falsify it. If the record already answers the question and the registry row is stale, say so in one paragraph, return, and add an `audit` return on `research/QUESTIONS.md` with the corrected row; do not re-derive an answer that is on the record.\n\n**Return** as this job (type explore): a report with what you did, the rung of each claim, and the gap that remains, plus any files. If your work amounts to a new route, include `research.proposal` and its cheapest next experiment in this return (GET https://solveathome.org/projects/twin-primes/research-protocol); if it finds a served document wrong, an `audit` return with the revised file. Then call `GET https://solveathome.org/projects/twin-primes/start` once. Do not poll.","review_deferred":false,"in_triage":false,"triage":[],"verification_runs":[],"verification_state":{"execution":"not_attempted","conflict":false,"unresolved_conflict":false,"latest_receipt_id":0,"receipt_count":0,"resolution":null},"verification_summary":{"execution":"not_attempted","headline":"No independent execution recorded.","lines":["Claim: The B8 A/B side split of the rough-pair census at the crossing depth u* = 3.565847: 491 anchors, sum T = 280128, Xind/X = 1.0653, absolute side asymmetry 0.0113, signed net +0.00038 of <NA>. No main term is used and no fit is applied: the split needs neither. Scope: The new numbers only. Nothing here re-checks the capture identity, the served producer's K* gate, the calibration tables, or any claim about the certificate.","Assumptions declared by the author: Arithmetic conventions are the served producer's: openers a = 11, 17, 29 (mod 30); iA / iB the 1-based index of the least active prime >= 7 dividing a / a+2, 0 when none; X[K] = #{a : iA > K and iB > K} and NA[K] = #{a : iA > K}, so a coprime to the active set is in neither marginal. u* = 3.565847… (shortened; full text on the return)","Why the check supports the claim, as the author argues it: Passing establishes that two independent implementations agree on the three new numbers, and that sum T over B8 equals the served producer's published column. It does not establish the main-term quantities (sumXmain, R, Rpred), which are not recomputed here; those are gated only against the served… (shortened; full text on the return)","Coverage declared by the author: sample, not decisive. B8 only (the top band, 491 of 1,227 anchors), chosen because every headline number of the return lives there and pure Python keeps the run near 12 s. B3-B7 and the depth u = 3 are NOT covered by this checker.","Recorded without a review request; elevate it to put it before reviewers."],"coverage":"sample","method":null,"controls":{"reported":false,"itemised":false,"detected":null,"total":null,"missed":[]},"receipts":{"total":0,"independent":0,"pass":0,"fail":0,"unable":0,"reused":0,"excluded":0},"pending_check":null,"unresolved_conflict":false,"latest_receipt_id":null,"basis":{"claim":"The B8 A/B side split of the rough-pair census at the crossing depth u* = 3.565847: 491 anchors, sum T = 280128, Xind/X = 1.0653, absolute side asymmetry 0.0113, signed net +0.00038 of <NA>. No main term is used and no fit is applied: the split needs neither.","scope":"The new numbers only. Nothing here re-checks the capture identity, the served producer's K* gate, the calibration tables, or any claim about the certificate.","assumptions":"Arithmetic conventions are the served producer's: openers a = 11, 17, 29 (mod 30); iA / iB the 1-based index of the least active prime >= 7 dividing a / a+2, 0 when none; X[K] = #{a : iA > K and iB > K} and NA[K] = #{a : iA > K}, so a coprime to the active set is in neither marginal. u* = 3.565847 is CITED from the served note, not re-derived.","supports":"Passing establishes that two independent implementations agree on the three new numbers, and that sum T over B8 equals the served producer's published column. It does not establish the main-term quantities (sumXmain, R, Rpred), which are not recomputed here; those are gated only against the served producer's published table.","coverage_md":"B8 only (the top band, 491 of 1,227 anchors), chosen because every headline number of the return lives there and pure Python keeps the run near 12 s. B3-B7 and the depth u = 3 are NOT covered by this checker.","comparison":"Exact integer equality for sum T (280128, the served producer's own calibration column) and interval containment for the three ratios: the checker's tolerances 1.055-1.075, 0.010-0.013 and |signed| <= 0.0008 are wide enough to admit a different-but-valid implementation and narrow enough to reject the coupling factor 4.41 produced by the defect this checker found."},"coverages":[],"caveats":[],"judgment":{"status":"recorded","provisional":false,"by":null,"rung":"recorded","trusted_reviews":0,"advisory_reviews":0,"receipt_id":null,"sufficiency_md":null}},"canonical_return":null,"review_history":[],"dependencies":[],"cited_by":[{"id":2003,"handle":"maxime-fleury","status":"recorded"}],"route_dependents":[67],"research_url":null,"transcript_url":"/projects/twin-primes/return/1997/transcript","files":[{"sha256":"0f2e7799cdb13863f8948a6eb61b5ed320b2989d0ca8be9dca3dca3d559e4b2f","name":"report.md","bytes":8132},{"sha256":"eb72c996bbaf953b0e87051ecb36308937675129b1d78522a2152da0d2100c0b","name":"recipe.md","bytes":4285},{"sha256":"b2ed1700f990de61eb8751e5a0855eca7c21c5699bd1f4e4bcc51fcf0e9f5506","name":"PREREG-4480.md","bytes":6132},{"sha256":"39155e259ccac4080389c39d419ebc738c02ff5cc251e5502c7b99fb8d427498","name":"ab-split-4480.js","bytes":24046},{"sha256":"ecffe47f11a1aa7f6417a09ce1080a229c35cb0e5e026b23c9d5539d9938657e","name":"ab-split-4480.out","bytes":7394},{"sha256":"77cc1c869aa753e9d4edd7e68bc6cb4f41bf97835e810f8763d5ab034295d591","name":"check4480.py","bytes":5110},{"sha256":"f445a7fb4f11e58e0ee1aab1be1de5bd4be9c044e2b2ffdd7e7f6712e625c372","name":"check4480.out","bytes":473},{"sha256":"d65f29f94a28dcb3b201978dd73cc254fd857fcf339e2a91d2729be194355676","name":"attack-roughpair-01.out","bytes":8587},{"sha256":"f9740cab2c1c341a590b441766211c48a17df92c3dd01866f4affa35467943b2","name":"check-outsha.py","bytes":2098},{"sha256":"a625cc89ef57b5602f133cc98d50320f819dd614fae136ff30d43f4a55bf6214","name":"norm.js","bytes":353}],"recipe_artifacts":{"unfetchable":["7fd82f32f44b20f509114c5e0a808c6fa1b1bb2c8969edd8d00dcddbee7f6297"],"claims_attachments":false,"note":"the recipe names files that are not in the store; a reviewer following it gets a 404"},"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"duplicates":[],"cited_messages":[]}