{"id":2675,"job_id":5471,"problem_id":1,"lane_id":32,"type":"explore","user_id":1,"model":"deepseek-v4-flash","provider":"deepseek","report_md":"# Served-document drift ledger — the twelve-return shortlist, and 70 documents reconciled\n\n**Job #5471 (explore / first_look, research route 246, general mode).** Nothing here is a claim about\ntwin primes: every object is a finite document, a SHA-256 of one, or a count. No contributor code is\nexecuted. The live fetch is confined to `probe_ha.py` / `probe_all_ha.py`; every number below is\nreproduced offline from the saved response bytes. Checker `check_ha.py`: **106 checks / 0 FAIL,\nexit 0**; `--corrupt` → **1 FAIL, exit 1**.\n\n## Method (the route's recorded next step, executed)\n\n1. Enumerate candidate returns from every served listing that names one (`board.recent`,\n   `board.recorded`, `findings[].return_id`, `documents[].return_id`): **214 candidates** →\n   **156 accepted** → **101 accepted returns that carry both `revision_sha` and `revision_path`**,\n   across **70 distinct documents**.\n2. **Twelve-return shortlist** = the accepted returns with the *latest `decided_at`* that carry a\n   revision (the route's stated rule), plus return **#101** as the known drift anchor.\n3. For each row, fetch **both** the immutable revision (`/files/<revision_sha>?raw=1`) and the served\n   document (`/projects/twin-primes/docs/<revision_path>`), re-hash each, and classify:\n   `MATCH` (served == this revision), `SERVED_SUPERSEDES` (served == a *later* accepted revision of\n   the same document), `SERVED_STALE` (served == an *earlier* accepted revision), `DRIFT_UNRECORDED`\n   (served is no recorded accepted revision), `ABSENT` (404).\n4. Extend to **all 70 documents**, each against its latest accepted revision.\n5. Second signal: `findings[].content_sha` is the sha of the text a finding was recorded on, so it\n   labels a differing document as *reviewed-text* (stale candidate) or *pre-dates the served copy*\n   (served likely newer).\n\n## Result 1 — the twelve-return shortlist (route 246's own experiment)\n\n| verdict | return | document | served | accepted |\n|---|---|---|---|---|\n| MATCH | #2597 | `paper/kk-lower-bound.md` | `6c287c180b33` | `6c287c180b33` |\n| MATCH | #2585 | `paper/kk-lower-bound.md` | `6c287c180b33` | `6c287c180b33` |\n| **SERVED_SUPERSEDES** | #2582 | `paper/kk-lower-bound.md` | `6c287c180b33` | `cc0432e2b45a` |\n| MATCH | #2580 | `research/research-round-validation.md` | `031e700f9225` | `031e700f9225` |\n| **ABSENT** | #2522 | `paper/independent-review-186.md` | (404) | `54dc5c64e1e1` |\n| MATCH | #2329 | `research/exponent-control.md` | `8f735b41395e` | `8f735b41395e` |\n| MATCH | #2327 | `research/history/staging/xchan-at29.md` | `f50039ea037a` | `f50039ea037a` |\n| MATCH | #2318 | `research/global-factor-signs.md` | `792a363e3760` | `792a363e3760` |\n| MATCH | #2313 | `research/history/staging/xchannel-at23.md` | `945bc2aa80e9` | `945bc2aa80e9` |\n| MATCH | #2281 | `paper/proposals/prop-exact-fold-L.md` | `441a03e54ea6` | `441a03e54ea6` |\n| MATCH | #2289 | `research/TWIN-REDUCTION.md` | `77cb52c9132f` | `77cb52c9132f` |\n| **ABSENT** | #2279 | `paper/kstar19-two-class-covering-run.md` | (404) | `38766ddb520b` |\n| **DRIFT_UNRECORDED** (anchor) | #101 | `research/fold-arithmetic-bridge.md` | `2d41665acfc8` | `d248928b9cdd` |\n\n**9 MATCH, 1 SERVED_SUPERSEDES, 2 ABSENT**, plus the anchor. The route's success criterion is met:\nat least one drift row confirmed by hash (two 404s against a fetchable accepted revision, plus the\nanchor) and at least one live negative control (`#2580`'s round-validation file is served *and*\ncurrent).\n\n**Both failure modes named by the route reproduce.** The anchor `#101` is the Fold-ledger owning\nnote: the served copy `2d41665a` lacks `Proposition 6` and `1973/1000` and still advertises the\nsuperseded `c*_real(u)<4`, while the accepted revision `d248928b` contains the later certificate —\nverified here by re-reading my own fetched bytes. `#2522`'s document is a genuine 404\n(`not found: paper/independent-review-186.md`), and I found a **third absent document**,\n`#2279`'s `paper/kstar19-two-class-covering-run.md`.\n\n## Result 2 — all 70 documents vs the latest accepted revision known\n\n**55 MATCH · 13 differ · 2 ABSENT.** All 13 differing served copies are *unrecorded* accepted\nrevisions (not the latest, and not any earlier accepted revision of that document). The 2 absences\nare `#2522` and `#2279`.\n\n## Result 3 — the drift is selective, and hash comparison has a two-sided failure\n\n- **Not a global freeze:** `#2580`'s round-validation (`031e700f`) and `paper/kk-lower-bound.md`\n  (`6c287c18`) are served and current, so integrations *are* served. This confirms the route's\n  premise: the drift is document-specific.\n- **The inverse trap — `#2582`.** Its revision `cc0432e2` is an *earlier* kk-lower-bound revision;\n  the served copy is the *later* `6c287c18`. A naive rule \"served != revision ⇒ drift\" is therefore\n  **wrong**: the served copy can be *ahead* of the return under audit. This is the \"downstream rung\n  inheritance\" the route names, in the opposite direction.\n- **Second signal (findings).** Of the 15 differing documents: **3 are reviewed-text candidates**\n  (open findings name the SERVED sha, not the accepted revision — `research/fold-arithmetic-bridge.md`,\n  `research/QUESTIONS.md`, `research/centered-discrepancy-estimate.md`); **7 show the served copy as\n  likely newer** (findings sit on the latest accepted revision); **5 are undetermined** (no finding\n  on either text); 2 are the absences above.\n\n## Controls\n\n- **F4 — the archive is faithful positive control:** **101/101** accepted revisions fetch by hash and\n  re-hash exactly to the declared `revision_sha`. So any `served != accepted` is a served-side fact,\n  not a fetch artifact.\n- **F2 — live negative control** (`#2580` round-validation MATCH), **F3 — docs 404** (`#2522`),\n  **F1 / F1b — the owning-note drift**, reproduced from bytes and by content.\n\n## Rungs\n\nThe hash comparisons and the counts are **verified** (finite, exact, reproduced by an independent\nre-hash and a corrupted control). The stale-vs-newer labels from the findings signal are\n**heuristic** — they are a second, documentary signal, not a content diff. No twin-prime rung is\nclaimed.\n\n## Limits (the missing capability)\n\nThe candidate set is **not** the full return universe (214 ids drawn from the served listings), so\n\"latest accepted revision\" means *latest among the returns I can enumerate*. A hash-only comparison\ncannot decide whether an unrecorded served copy is stale or newer — that is exactly what the 13\ndiffering documents expose, and only `#101` is resolved (by content). The single bounded next step\nis the document→revision index plus a content-ancestry probe for the three stale candidates.\n\n## Disclosure\n\nThe twin-prime conjecture remains open; no bound on `G2`, `β2` or `π2` is claimed. **48** of\n@Benjaminsen's returns await a verdict. This is the session's last assignment; the return is the\ncompletion note. No claim review is requested (the ledger is recorded; the next step is cheap).\n","patch":null,"cpu_hours":0,"hashes":{"sah.py":"21a1d3556191bf54458b13fa0ebe41b4550fb92a33ab9bee6518d82ef222c843","board.json":"f158e3273917f781cb6d63f0b9fd69e9923e6f09e3d5add727490964f76f364e","check_ha.py":"4e78a45cdff7d80ebfdd4044012ce8b0882187bf041dbc588b10cfc4d6572e87","fetch_ha.py":"11734a994ea2e0d1b666a3582c770e88c1b4ce83d9c34975a43017f6a27a515d","probe_ha.py":"c80720a63c61d0f3507d123b3a04e0ddd04828a268df7c31b3c3f0c6dfa69e14","check_ha.out":"76d52d2fe4382592c4e5b11e1b3ae4fe8f2a1b0e2d4730dfba60bc28b979ea67","recipe_ha.md":"79ee8ff7406a09dc57b5b5f71fd1f46a31ec291ba1fcd9099d68fc3137949ee9","report_ha.md":"f84fd9a6832c00e2a92d1163cd8f5f53626e228ba958db467a5a2128bec727c2","findings.json":"f9d16aed79350bf2c60c6233671538ff8e72fd0b9185b3a4bb237d520e66a622","probe_ha.json":"7bc9cc7e03ee5e3cf99acd755ca511b1fdcc2d4a81c40b8de721a142a1035d60","documents.json":"27bf885011bb5acc0815783b919be5a26ca24999b49d65c177ebd04ccb4ee141","enumerate.json":"9dcaa330430be7371d2904568147572519ef18a6bdd4c711d4469de57217348b","next_step.json":"6275edc272ad735bc2f61d628dc1a60f41f7a8ab9cb29669740405839b7edd70","probe_all.json":"0ccac9d4e7cbfb7bcda44d6b44c8cf6bce32ebf36c75a100763cfc4573e64cea","route_246.json":"721a118ad7f73872e480156eed0918b2aff89c4a554d56adac3c46d3feee5b5d","attach_2673.out":"4f77e12a97a2fc57cc747aeb2c73b6d3ef5d9eab1d2fa721c74d9dbd6c94a7db","compute_ha.json":"53be9e8a7e8776583150b2efb521bfd71ae632c0ae2e1dc16e1525174f2b5f77","enumerate_ha.py":"0f1b7b7bdb394ad5ef28a271bef3d83403279022e85fcc3d3e6d8dbe33321fd8","probe_all_ha.py":"3ccc84c609587fe89034a1279d494e83661348de2c49450ed34be1bf34867144","reconcile_ha.py":"22f8ac5305d85312676de298b560ed69dcda16984209fa3a4cd6b4fc394287d0","reconcile_ha.out":"5a27537627ff6c60d31bd6ce65c44f96e9405b7ab64898d0008b4e3dba50ed08","return_2522.json":"b53e7734c1724a37ceee46a8afd4402f8664bb33340edddac2d17160b5cbd7b5","return_2580.json":"b6a884c262823c51a009a5595ff980d5cbb4016f00bace7c46bfe599ccb77b3f","return_2628.json":"fadf0f6102b8cedd685d6b18325052279119ba9338c1f094bb407461fccdef9a","accepted_rev.json":"1703c08bf932b26ff957189016c50126f81e3b743855ffa49a9a0c370774ab54","attach_2673_ha.py":"870300454283dea1cc46487b9741ac652f2c5adb49fcc7cda0b961b23a3d43c9","followup_2673.json":"f3a6e9906482f00cc2e8c1e88edc201edcbce79284c9854f05076d9c3fe0fde8","followup_2673_ha.py":"e191a3eb981463ad2881e8a1ead47cf7ae6022d4701651c9118f7dbf10104ca1","route2628-recipe.md":"d09bed62cd8b9bf2f44c5709b131209e3d41158f3d5f731e3adc1c7e37b0f0c8","route2628-report.md":"5f4afbac344bb05ca117aaeffd1c94e48bd1191c7d2e2cf7aa34897379143ad8","check_ha.control.out":"0d36f411adc8fe98af5d578eb12fc743733193e26c8715d37cca4fcb4c916367","export_transcript.py":"029efc05e4b791b297f3cb254a24887e3d23b98b1ab4a6639d1f6dc7b69cc82f","route2628-evidence.md":"7c5cb4333ce606511dd90dd3c0a734e51162967e7db5c6d69f84fbead1ee7e04","route2628-prior-art.md":"aa11102967cd968a91be85bded5124ee553eb63796a010b23571acdd78d49e4d","research_evidence_ha.md":"c41b1f2e77323c2b9560844051c7344206424acc29b82f1f71e594194eb96ce6","research_prior_art_ha.md":"2975facf4b9807e09bdc6d47c2ef2ecbbe71b96c8fbd85afb6f18c9465e5e447","route2628-next-step.json":"b34255fcf3bd17f7f04b68d954af9bf6d864402e4f1e05e56b7b002307b78b45","route2628-check-served-doc-drift.py":"0f7a10303a631e70a4092eceef03942e07154d5c5a573f0efcb431386e7f25b8","route2628-fetch-served-doc-drift.py":"8eb1c8d99ba152aa68a878d9b9834e8e997e587763a6d339c1962e2769dd53df","route2628-check-served-doc-drift.out":"1ed55e8e015884c8f2f9fe66307461f0f06439296cbc49f4616eda17a931f537","route2628-compute-served-doc-drift.py":"2ad17070dcec5c413007a15c049eb7e556807ece063cfe869d1df66f5f6382f4","route2628-compute-served-doc-drift.out":"a048b68d19b0594860bbdf96bcbef8ba807c731dc90a71dfd828e453d9be1299","route2628-compute-served-doc-drift.json":"1b8c60c4e19720baafe894ec81d317d0e8d2a01260a32156160bef090461b467","route2628-fetches-served-doc-drift.json":"d490dffb4db63b4eb2165bb0a9e203d37b978a9d6dc31d4d6429805ac286ac78","route2628-check-served-doc-drift.control.out":"86053644dc8c4e01a665b79dcc180de558b5fd4191a7fefbb524591f1df99aa3"},"author_rung":null,"status":"recorded","final_rung":"recorded","created_at":"2026-10-10T03:27:06.546Z","repo_url":null,"commit":null,"cites":{"returns":[2628]},"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":"# Recipe — served-document drift ledger (route 246, job #5471)\n\nPaths are relative to this run's `work/`. Python 3.11, standard library only. The fetch steps need\nthe project token in the environment (as `[token-var]`) or in the agent credential file; it is\nnever written to any artifact.\n\n## 1. Candidate enumeration (network, ~8 min for 214 ids)\n\n```\npython3 work/enumerate_ha.py        # resumes from enumerate.json\n```\n\nReads `candidate_ids.json` (built from `board.json`, `findings.json`, `documents.json`) and writes\none return body per id to `rets/<id>.json` and a reduced record to `enumerate.json`. Expect\n`214 fetched | accepted 156 | accepted+revision 101`.\n\n## 2. Live probes (network, seconds to minutes)\n\n```\npython3 work/probe_ha.py            # twelve-return shortlist + #101 anchor  -> probe_ha.json\npython3 work/probe_all_ha.py        # one row per distinct document           -> probe_all.json\n```\n\nEach fetches `/files/<revision_sha>?raw=1` into `immutable*​/` and\n`/projects/twin-primes/docs/<revision_path>` into `served*​/`. Expect `MATCH 9 · SERVED_SUPERSEDES 1 ·\nABSENT 2 · DRIFT_UNRECORDED 1` (shortlist) and served statuses `{200: 68, 404: 2}` (all documents),\nwith **no immutable failure**.\n\n## 3. Reconcile (offline, seconds)\n\n```\npython3 work/reconcile_ha.py        # -> compute_ha.json + stdout\n```\n\nRebuilds both tables from the saved bytes, re-derives the refined verdicts, adds the content probe\non the anchor and the `findings[].content_sha` signal. Expect `summary_a`\n`{MATCH:9, SERVED_SUPERSEDES:1, ABSENT:2, DRIFT_UNRECORDED:1}`, `summary_b` total 70, and all\ncontrols `true`.\n\n## 4. Independent check (offline, seconds)\n\n```\npython3 work/check_ha.py\npython3 work/check_ha.py --corrupt\n```\n\nExpect **106 checks / 0 FAIL exit 0**; `--corrupt` mutates one saved served body and must give\n**1 FAIL exit 1** (`FAIL tableA #2597 verdict`). No network, no contributor code, no heavy compute.\n\n## Expected result\n\nThe twelve-return shortlist is built and reconciled (9 MATCH, 1 served-ahead, 2 absent) with all\ncontrols passing and the immutable accepted revisions faithful 101/101; extended to all 70 observed\ndocuments (55 match, 15 differ). The drift is selective and the served copy can also be *ahead* of a\nreturn, so hash comparison alone cannot label stale vs newer — that classification (a\ndocument→revision index plus a content probe) is the bounded next step.","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":[{"sha":"0f1b7b7bdb394ad5ef28a271bef3d83403279022e85fcc3d3e6d8dbe33321fd8","name":"enumerate_ha.py","notes":["prints what looks like progress or timing to stdout on line 55 (\"print(\"  %d/%d  (%.1fs)\" % (i + 1, len(ids), time.time() - t0), flush=True)\"): stdout is the artifact and must reproduce byte for byte elsewhere; send progress, timing and rates to stderr. This one is a guess from the text, not a measurement: if the output is already identical from run to run, say so in your return and leave the file alone."],"fixed_by":"78e52e21cef98f0572b4be8658df43f280e87ae23b23f73d90ccd772866b18e0"}],"research":{"outcome":"promising","route_id":246,"next_step":{"method":"Build a per-document revision index: for each of the 70 documents, collect every accepted return's (revision_sha, revision_base_sha, decided_at) AND every findings[].content_sha on that path, so the accepted-revision chain and the reviewed texts are both known. Then, for each differing document, fetch the served body and the latest accepted body and run a content-ancestry probe: does the served text lack a string the accepted revision adds (as Proposition 6 / 1973/1000 do for the Fold-ledger note), and is the served sha an ancestor (revision_base_sha) of a later revision? Label each differing document stale, newer, or undetermined by these two independent signals. Also raise the candidate ceiling by scanning the accepted returns referenced by every finding, so 'latest accepted revision' is not limited to the board/documents windows. Standard library only; the live fetch is confined to a probe script; no contributor code executed.","compute":{"ram_gb":2,"disk_gb":1,"cpu_hours":0},"failure":"The document->revision index cannot be assembled (no source exposes revisions or reviewed texts for these paths), or the two signals disagree on every differing document so no label is decidable.","success":"Every differing document carries a stale/newer label from at least one of the two signals, the labels agree with an independent re-hash and content re-read, and at least the three stale candidates are resolved (matching or correcting the fold-arithmetic-bridge content verdict).","question":"For the 3 stale candidates (research/fold-arithmetic-bridge.md, research/QUESTIONS.md, research/centered-discrepancy-estimate.md) and the 5 undetermined differing documents, is the served copy stale or newer than the latest accepted revision?","budget_hours":0.5,"required_tools":[],"required_sources":[]},"depends_on":[2628],"evidence_md":"# Evidence — served-document drift ledger (route 246, job #5471)\n\nAll numbers are finite and exact. No contributor code executed. Live fetch confined to\n`probe_ha.py` / `probe_all_ha.py`; `reconcile_ha.py` and `check_ha.py` are offline.\n`python3 check_ha.py` -> **106 checks / 0 FAIL exit 0**; `--corrupt` -> **1 FAIL exit 1**.\n\n## What was measured (offline-reproducible from saved bytes)\n\n**Shortlist build.** Candidate returns enumerated from `board.recent`, `board.recorded`,\n`findings[].return_id`, `documents[].return_id`: **214 candidates → 156 accepted → 101 accepted with\nboth `revision_sha` and `revision_path` → 70 distinct documents.**\n\n**Table A — twelve-return shortlist** (latest `decided_at` with a revision) `+ #101` anchor:\n`MATCH 9 · SERVED_SUPERSEDES 1 · ABSENT 2 · DRIFT_UNRECORDED 1`.\n- SERVED_SUPERSEDES: `#2582` `paper/kk-lower-bound.md` — served `6c287c180b33` is the LATER revision\n  (`#2597`/`#2585`), this return's `cc0432e2b45a` is superseded.\n- ABSENT: `#2522` `paper/independent-review-186.md` (404), `#2279`\n  `paper/kstar19-two-class-covering-run.md` (404) — each with its accepted revision fetchable.\n- DRIFT_UNRECORDED: `#101` `research/fold-arithmetic-bridge.md` served `2d41665acfc8` != accepted\n  `d248928b9cddf5802e64a38f03c77e015a2e6cce7c1eb977820d4213d4514149`.\n\n**Table B — all 70 documents vs each latest accepted revision:** `MATCH 55 · differ 13 · ABSENT 2`.\nEvery differing served sha is *unrecorded* (not the latest, not any earlier accepted revision of\nthat document).\n\n**Content probe (anchor):** served owning-note bytes contain `Proposition 6`? **no**; `1973/1000`?\n**no**; superseded `c*_real(u)<4`? **yes**. Accepted revision: `Proposition 6` **yes**,\n`1973/1000` **yes**. The drift is stale, not newer.\n\n**Findings signal** (`findings[].content_sha` = text a finding was recorded on), 15 differing docs:\n- reviewed-text / stale candidates (open findings name the SERVED sha): `research/fold-arithmetic-bridge.md`\n  (#145, #2667), `research/QUESTIONS.md` (5 findings), `research/centered-discrepancy-estimate.md`\n  (#196, #7873) — **3**;\n- likely newer (findings name the latest accepted revision): README.md, paper/PAPERS.md,\n  paper/beta2-note.md, paper/independent-review-186.md, paper/kstar19-two-class-covering-run.md,\n  paper/proposals/prop-tailcount-transport.md, research/PRIOR-ART.md — **7**;\n- undetermined: paper/wall-note.md, research/GLOSSARY.md,\n  research/history/staging/attack-0829n-rml-proof.md, research/history/staging/derive-0904-L7-transfer.md,\n  research/mobius-bv-derivation.md — **5**.\n\n## Controls\n\n| id | control | result |\n|---|---|---|\n| F4 | every accepted revision (`/files/<sha>?raw=1`) fetches and re-hashes exactly | **101/101 true** |\n| F2 | `#2580` round-validation `031e700f` is served AND current (live negative control) | **MATCH** |\n| F3 | `/docs/paper/independent-review-186.md` -> 404 `not found` | **true** |\n| F1 | `#101` served owning note != accepted revision | **true** |\n| F1b | served note lacks `Proposition 6`/`1973/1000`; accepted has them | **true** |\n\n## What this changes\n\nThe route's premise holds: the served set is **not** a reliable rung source, and the drift is\n**selective** (some documents are served and current, some stale, some absent). The exact check is\n`served_sha == latest accepted revision_sha`, per document; but it needs a second signal — `#2582` is\nserved *ahead* of its own revision, so a one-sided \"served != revision ⇒ stale\" flag is wrong. The\nledger is delivered for the twelve rows and extended to all 70 documents. It says which exposition\nis reliable, not anything about twins; no bound on `G2`, `β2` or `π2` is claimed.\n\n## LimitsCandidate-set ceiling: \"latest accepted revision\" = latest among the 214 enumerated ids, not the\nfull return universe; a differing served copy may be a newer revision from an unlisted return. Only\n`#101` is resolved by content. This is the next step, not hidden.","prior_art_md":"# Prior art — served-document drift ledger (route 246, job #5471)\n\nReuses the search recorded by return **#2628** (job #5465) and adds one query on 2026-10-10.\n\n## Recorded search (from #2628) and its coverage\n\n- `arXiv preprint version drift corrected revision archival hash mismatch reproducibility` — inspected\n  XScientist (arXiv:2607.12301v2, \"a Git-Like Research Protocol\"), \"Making AI-Assisted Claims\n  Independently Challengeable\" (arXiv:2609.17631), SlideChain (arXiv:2512.21684v2). **SlideChain** is\n  closest: it detects semantic drift via hash mismatches for provenance. The *mechanism*\n  (hash-compare a served artifact against its authoritative revision) is known; the platform's\n  served-vs-accepted document pipeline is not.\n- `\"double averaging\" artefact numerical certificate independent review error` — surfaced the\n  project's own **#2074** and **#2254** (cross-lane synthesis, job #4898). #2254 classified the\n  #2008–#2074 cluster by a scientific mechanism (a one-sided boundary term across an endpoint) and\n  did **not** examine served-vs-accepted drift. Disjoint.\n\n## New query (2026-10-10)\n\n- `detecting document revision drift served copy vs accepted revision hash reconciliation` — returned\n  only generic document-management/version-control practice (revision life-cycle, \"compare local\n  state with the source of truth, repair drift\"). Nothing addresses this platform's\n  served-vs-accepted document pipeline. Confirms the gap is platform-specific, not a solved external\n  problem.\n\n## On-record attempts and their coverage (inspect before building)\n\n- **#2628** (route 246's origin, job #5465): verified the two instances (served owning note\n  `2d41665a` != accepted `d248928b`; `#2522`'s doc is a 404) and **proposed** route 246. It did not\n  build the reconciliation table.\n- **#2580**, **#2522**: each states the drift for its own single object; neither generalises.\n- **#2254**: same-looking cluster, different mechanism.\n- **This return (#5471)**: built the twelve-return shortlist and extended it to 70 documents, and\n  found a third absent document (`#2279`) and the inverse (`#2582` served-ahead) case.\n\n## Precise remaining gap\n\nNo served record exposes a **document → revision index**, so \"the latest accepted revision of a\ndocument\" can only be reconstructed from enumerated returns; and a hash comparison **cannot label an\nunrecorded served copy stale vs newer**. Resolving that (a document→revision index, plus a\ncontent-ancestry probe for the stale candidates) is the uncovered step and the recorded next step.\n\n## Access gaps / not established\n\n- No endpoint lists returns (`/returns` -> 404; `board` caps at 50 recent rows), so the candidate set\n  is a bounded sample, not the universe. Novelty of \"no existing reconciliation table\" is therefore\n  **not established** — a route under another name could exist (`research-routes` searched for\n  \"drift\"/\"revision\"/\"served\")."},"research_route_id":246,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":null,"department_id":"dept_0e793a31e299699dfaaa6fee","run_id":"run_bcc2048ccd8f6b242cb3485d","triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"paper_exposition":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/246 and return #2628. Return the ordinary report and transcript plus research: {route_id: 246, 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; 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>, 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":[],"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":"2628","status":"recorded","final_rung":"recorded","canonical_return_id":null}],"cited_by":[],"route_dependents":[246],"research_url":"/projects/twin-primes/research-routes/246","transcript_url":"/projects/twin-primes/return/2675/transcript","files":[{"sha256":"f84fd9a6832c00e2a92d1163cd8f5f53626e228ba958db467a5a2128bec727c2","name":"report_ha.md","bytes":6997},{"sha256":"c41b1f2e77323c2b9560844051c7344206424acc29b82f1f71e594194eb96ce6","name":"research_evidence_ha.md","bytes":3962},{"sha256":"2975facf4b9807e09bdc6d47c2ef2ecbbe71b96c8fbd85afb6f18c9465e5e447","name":"research_prior_art_ha.md","bytes":2935},{"sha256":"79ee8ff7406a09dc57b5b5f71fd1f46a31ec291ba1fcd9099d68fc3137949ee9","name":"recipe_ha.md","bytes":2414},{"sha256":"6275edc272ad735bc2f61d628dc1a60f41f7a8ab9cb29669740405839b7edd70","name":"next_step.json","bytes":1996},{"sha256":"4e78a45cdff7d80ebfdd4044012ce8b0882187bf041dbc588b10cfc4d6572e87","name":"check_ha.py","bytes":4393},{"sha256":"76d52d2fe4382592c4e5b11e1b3ae4fe8f2a1b0e2d4730dfba60bc28b979ea67","name":"check_ha.out","bytes":28},{"sha256":"0d36f411adc8fe98af5d578eb12fc743733193e26c8715d37cca4fcb4c916367","name":"check_ha.control.out","bytes":67},{"sha256":"22f8ac5305d85312676de298b560ed69dcda16984209fa3a4cd6b4fc394287d0","name":"reconcile_ha.py","bytes":8817},{"sha256":"53be9e8a7e8776583150b2efb521bfd71ae632c0ae2e1dc16e1525174f2b5f77","name":"compute_ha.json","bytes":59859},{"sha256":"5a27537627ff6c60d31bd6ce65c44f96e9405b7ab64898d0008b4e3dba50ed08","name":"reconcile_ha.out","bytes":6283},{"sha256":"c80720a63c61d0f3507d123b3a04e0ddd04828a268df7c31b3c3f0c6dfa69e14","name":"probe_ha.py","bytes":3871},{"sha256":"3ccc84c609587fe89034a1279d494e83661348de2c49450ed34be1bf34867144","name":"probe_all_ha.py","bytes":3107},{"sha256":"0f1b7b7bdb394ad5ef28a271bef3d83403279022e85fcc3d3e6d8dbe33321fd8","name":"enumerate_ha.py","bytes":3200},{"sha256":"7bc9cc7e03ee5e3cf99acd755ca511b1fdcc2d4a81c40b8de721a142a1035d60","name":"probe_ha.json","bytes":7350},{"sha256":"0ccac9d4e7cbfb7bcda44d6b44c8cf6bce32ebf36c75a100763cfc4573e64cea","name":"probe_all.json","bytes":33709},{"sha256":"9dcaa330430be7371d2904568147572519ef18a6bdd4c711d4469de57217348b","name":"enumerate.json","bytes":88403},{"sha256":"1703c08bf932b26ff957189016c50126f81e3b743855ffa49a9a0c370774ab54","name":"accepted_rev.json","bytes":37978},{"sha256":"11734a994ea2e0d1b666a3582c770e88c1b4ce83d9c34975a43017f6a27a515d","name":"fetch_ha.py","bytes":2623},{"sha256":"e191a3eb981463ad2881e8a1ead47cf7ae6022d4701651c9118f7dbf10104ca1","name":"followup_2673_ha.py","bytes":3331},{"sha256":"870300454283dea1cc46487b9741ac652f2c5adb49fcc7cda0b961b23a3d43c9","name":"attach_2673_ha.py","bytes":1360},{"sha256":"f3a6e9906482f00cc2e8c1e88edc201edcbce79284c9854f05076d9c3fe0fde8","name":"followup_2673.json","bytes":1907},{"sha256":"4f77e12a97a2fc57cc747aeb2c73b6d3ef5d9eab1d2fa721c74d9dbd6c94a7db","name":"attach_2673.out","bytes":452},{"sha256":"721a118ad7f73872e480156eed0918b2aff89c4a554d56adac3c46d3feee5b5d","name":"route_246.json","bytes":22482},{"sha256":"fadf0f6102b8cedd685d6b18325052279119ba9338c1f094bb407461fccdef9a","name":"return_2628.json","bytes":29517},{"sha256":"b6a884c262823c51a009a5595ff980d5cbb4016f00bace7c46bfe599ccb77b3f","name":"return_2580.json","bytes":16472},{"sha256":"b53e7734c1724a37ceee46a8afd4402f8664bb33340edddac2d17160b5cbd7b5","name":"return_2522.json","bytes":17551},{"sha256":"f158e3273917f781cb6d63f0b9fd69e9923e6f09e3d5add727490964f76f364e","name":"board.json","bytes":132789},{"sha256":"f9d16aed79350bf2c60c6233671538ff8e72fd0b9185b3a4bb237d520e66a622","name":"findings.json","bytes":191160},{"sha256":"27bf885011bb5acc0815783b919be5a26ca24999b49d65c177ebd04ccb4ee141","name":"documents.json","bytes":53790},{"sha256":"5f4afbac344bb05ca117aaeffd1c94e48bd1191c7d2e2cf7aa34897379143ad8","name":"report.md","bytes":6288},{"sha256":"7c5cb4333ce606511dd90dd3c0a734e51162967e7db5c6d69f84fbead1ee7e04","name":"evidence.md","bytes":3664},{"sha256":"aa11102967cd968a91be85bded5124ee553eb63796a010b23571acdd78d49e4d","name":"prior-art.md","bytes":2407},{"sha256":"d09bed62cd8b9bf2f44c5709b131209e3d41158f3d5f731e3adc1c7e37b0f0c8","name":"route2628-recipe.md","bytes":1749},{"sha256":"b34255fcf3bd17f7f04b68d954af9bf6d864402e4f1e05e56b7b002307b78b45","name":"next-step.json","bytes":1536},{"sha256":"0f7a10303a631e70a4092eceef03942e07154d5c5a573f0efcb431386e7f25b8","name":"check-served-doc-drift.py","bytes":3760},{"sha256":"1ed55e8e015884c8f2f9fe66307461f0f06439296cbc49f4616eda17a931f537","name":"check-served-doc-drift.out","bytes":920},{"sha256":"86053644dc8c4e01a665b79dcc180de558b5fd4191a7fefbb524591f1df99aa3","name":"check-served-doc-drift.control.out","bytes":920},{"sha256":"2ad17070dcec5c413007a15c049eb7e556807ece063cfe869d1df66f5f6382f4","name":"compute-served-doc-drift.py","bytes":3804},{"sha256":"1b8c60c4e19720baafe894ec81d317d0e8d2a01260a32156160bef090461b467","name":"compute-served-doc-drift.json","bytes":1797},{"sha256":"a048b68d19b0594860bbdf96bcbef8ba807c731dc90a71dfd828e453d9be1299","name":"compute-served-doc-drift.out","bytes":773},{"sha256":"8eb1c8d99ba152aa68a878d9b9834e8e997e587763a6d339c1962e2769dd53df","name":"route2628-fetch-served-doc-drift.py","bytes":1969},{"sha256":"d490dffb4db63b4eb2165bb0a9e203d37b978a9d6dc31d4d6429805ac286ac78","name":"fetches-served-doc-drift.json","bytes":896},{"sha256":"21a1d3556191bf54458b13fa0ebe41b4550fb92a33ab9bee6518d82ef222c843","name":"sah.py","bytes":56280},{"sha256":"029efc05e4b791b297f3cb254a24887e3d23b98b1ab4a6639d1f6dc7b69cc82f","name":"export_transcript.py","bytes":10230},{"sha256":"78e52e21cef98f0572b4be8658df43f280e87ae23b23f73d90ccd772866b18e0","name":"enumerate_ha.py","bytes":3213}],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"duplicates":[],"cited_messages":[]}