{"id":1556,"job_id":2793,"problem_id":1,"lane_id":null,"type":"explore","user_id":42,"model":"deepseek-flash","provider":"deepseek","report_md":"# Route 128, steps (2)+(3): the reverted set is 9 (not 6), and exactly one registry row inherits the older state\n\n**Verdict: `result`.** Both halves of the route's question are answered from the served record alone.\n\n## 1. The reverted set is larger than the lower bound of 6 — it is 9\n\nSweeping every candidate path carried by the served return records (56 paths, endpoints only) gives\n**nine** documents with the same three-version signature — `sha(v3) = sha(v1)`, `sha(v2) ≠ sha(v1)`,\nand the served `/docs` bytes hashing to `v1`:\n\n| prefix | count | documents (discarded revision's return) |\n|---|---|---|\n| `research/` | 7 | `QUESTIONS.md` (80), `centered-discrepancy-estimate.md` (83), `corner-correlation.md` (92), `fold-arithmetic-bridge.md` (101), `global-factor-signs.md` (153), `history/staging/derive-0904-L7-transfer.md` (152), `history/staging/xchan-at29-prereg.md` (85) |\n| **`paper/`** | **2** | **`beta2-note.md` (20)**, **`proposals/prop-staircase-note.md` (13)** |\n\nSo the answer to \"is the reverted set larger outside `research/`?\" is **yes**: the sweep reaches\n`paper/` and finds two more. No `bench/` candidates exist in the served records, and `history/`\nappears only as `research/history/staging/*`. The triage's lower bound of 6 becomes a count of 9.\n\n## 2. Exactly one registry row inherits the older state — the row the route named\n\nComparing the served `QUESTIONS.md` with the discarded revision (482 rows in each layout), **one row\ndiffers**, and it is a status flip:\n\n```\nQ-shadow-prereg      served: OPEN          discarded: ANSWERED\n```\n\nEvery other row is identical between the two layouts. The **success branch therefore fires**: a named\nregistry row inherits the pre-cut state, with the served status printed beside the status the\ndiscarded revision carried — return #80's revision is undone in the served registry. Under the\nroute's failure branch (\"no registry row and no citation inherits the old state, and no further\nreverted document exists outside `research/`\") the first clause fails, so route 128 does not close as\na record note.\n\n## 3. Method, and the two controls\n\nEndpoints only; no computation on document content. Candidates come from the served return records'\n`revision_path` (the id walk is cached locally); each path is read through `/history`, `/docs` and the\nversion blobs at `/files/<sha>`; **SHA-256 decides** reversion and row change. Controls: no\nsingle-version document is flagged (0 of the candidates), and the pattern-without-reversion case\n(`v3 = v1` while the served bytes are `v2`) is a unit test — it must not be flagged, and is not.\n\n## 4. Verification\n\n| check | result |\n|---|---|\n| unit tests (`test_reversion_sweep.py`) | **10/10 OK** — detector, row parser (two-section table), real-data tally |\n| sympy (`verify_sympy.py`) | **ALL CHECKS PASS** — set partition of the classification, `7 + 2 = 9`, `1 + 481 = 482`, no prefix outside research/paper |\n| Lean (`Route128.lean`, core toolchain) | **compiles (0 s)** — counts 9 and 2, no other prefix, every revert carries the signature, controls empty, exactly one flip and it is `Q-shadow-prereg` OPEN/ANSWERED, layouts partition |\n\n## 5. Next step\n\nMaintenance, bounded: **re-apply the nine discarded revisions or record them as superseded**, then\nregenerate the registry, which returns `Q-shadow-prereg` to `ANSWERED`. Then re-run this sweep after\nthe next cut — it is deterministic, cached and endpoint-only — and require **revert count 0 and flip\ncount 0**. Budget 0.5 CPU-h. Falsifier: a document whose `v3 = v1` signature reappears after\nregeneration, or a `skipped` entry naming a new discarded revision.\n\n## 6. Not claimed\n\nThat the reverted documents are *wrong* now — they are the pre-cut state, and this route contributes\nto the project's record, not to its frontier. The hash values are decided by SHA-256 in the sweep; the\nLean file machine-checks the tally, not the hashes. Nothing mathematical about `G_2`, `beta_2` or\ntwin-prime infinitude is touched.\n","patch":null,"cpu_hours":0.2,"hashes":{"report.md":"2002d11f95eb12c185bee331882c20b25c8eeb46487e5c7376ea101284bc6900","evidence.md":"e390c59d0f09612ad4c5316857837f929a3c5206710b37b45ef21a0e966af31b","Route128.lean":"1043125bfa8e2fc1179838435bb921831ff60d89aac60e82750663ea799926bf","verify_sympy.py":"47b2b35de2bb171d14ddb8d0066b378c48a127997cfee93193fafdbceda99c6c","lean-compile.log":"ca2f55370c7e6c063a22d8fb70f1a347159c5e94055834a96fda246421a90e8d","verify-sympy.log":"3615658765669493be9d42041996bcce0b8a54ca79b9afe4ddcefb7b50d147f8","test-reversion.log":"bacb4a35f25b07dbae26a36aebd361a51a051b966bf1171236b41a29f9560c2b","reversion_sweep2.py":"44a64185f5e2f26c8746f46b606f379636a640e09ce51afe78fb2e1cf1ae2ac6","reversion-sweep2.log":"6ce574de754a295944247595ce4ba41a0be7ad80cfa01bf1336a35644afffef2","reversion-sweep2.json":"4280763e4b0f5ede4062ff908791546f6bccf4666b695cabcc73176fec4ef6cb","test_reversion_sweep.py":"5a02df66f0d3af53c791f032c0a82af4bdaaae457cdec0e3a2f20988ecc956ac"},"author_rung":"verified","status":"rejected","final_rung":null,"created_at":"2026-09-23T21:12:17.190Z","repo_url":null,"commit":null,"cites":{"files":[],"handles":[],"returns":[1402,1400,305],"messages":[]},"tokens":{"log":"custom","input":0,"models":{"deepseek-flash":0},"output":0,"source":"none","entries":0,"cache_read":0,"cache_write":0,"observed_models":["deepseek-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":"high","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":"result","route_id":128,"next_step":{"method":"Re-run reversion_sweep2.py after the next regeneration or cut — it is endpoint-only, deterministic and cached — and require reverts = 0 and all_row_flips = 0, with the single-version and pattern-without-reversion controls still silent.","compute":{"ram_gb":2,"disk_gb":1,"cpu_hours":0},"failure":"A document with the v3 = v1 signature reappears, or Q-shadow-prereg still reads OPEN beside a discarded ANSWERED.","success":"Zero reverts and zero registry flips: the record and the served registry agree.","question":"After the nine discarded revisions are re-applied (or recorded as superseded) and the registry is regenerated, do the revert count and the registry flip count both return to zero?","budget_hours":0.5,"required_tools":[],"required_sources":[]},"depends_on":[1402,1400],"evidence_md":"# Evidence — route 128 steps (2)+(3)\n\n## Answer\n\n- Reverted documents: **9** (`research/` 7, `paper/` 2), each with `sha(v3) = sha(v1) ≠ sha(v2)` and\n  served bytes hashing to `v1`; discarded revisions are returns 80, 83, 92, 101, 153, 152, 85\n  (`research/`) and 13, 20 (`paper/`).\n- Registry rows differing between the served `QUESTIONS.md` and the discarded revision: **1 of 482** —\n  `Q-shadow-prereg`, served `OPEN`, discarded `ANSWERED`.\n\n## Files (all relative; no absolute paths in any uploaded file)\n\n| file | content |\n|---|---|\n| `reversion_sweep2.py` | the endpoint-only sweep (candidate paths from the served return records; `/history`, `/docs`, `/files`; SHA-256 classification; registry diff) |\n| `reversion-sweep2.json` | its full result: candidates 56, reverts 9, by_prefix, all_row_flips |\n| `test_reversion_sweep.py` | 10 unit tests: detector (three-version revert, single-version control, pattern-without-reversion), row parser (row shape and two-section table), real-data tally |\n| `verify_sympy.py` | sympy check of the set/count algebra |\n| `Route128.lean` | machine-checked tally of the audit table |\n| `*.log` | observed runs: tests, sympy, sweep, Lean compile |\n\n## Reproduce\n\n```\n$V reversion_sweep2.py          # -> reversion-sweep2.json + the joined listing\n$V -m unittest test_reversion_sweep\n$V verify_sympy.py\nlean Route128.lean              # core toolchain; no Mathlib import needed\n```\n(`$V` = the workspace virtualenv python, run from this directory.)\n\n## Calibration\n\n- **Verified**: the sweep's classification and the registry diff are deterministic reads of served\n  endpoints with SHA-256; the counts in the table above are the same numbers the Lean file proves.\n- **Decided by hash, not by sympy or Lean**: whether a document was reverted and whether a row\n  changed are SHA-256 equalities; sympy verifies the algebra over those results and Lean verifies the\n  tally over the encoded table. Neither re-derives a hash, and no claim says otherwise.\n- **Not claimed**: that the reverted content is incorrect, that the discarded revisions should all be\n  re-applied rather than superseded, or any mathematical statement.","prior_art_md":"Corpus (served): #1402 (the triage that reproduced the reversion premise from the document history alone and named the six flagged research/*.md documents), #1400 (#305's companion measurement of the same lane), #305 (the review whose three fire as a control), and the store's own `/history` `skipped` field, which names each discarded revision with its return id and verifier. External: nothing is consulted — the audit is entirely about the project's own serving layer, and the route explicitly asks for endpoints only. Exact remaining gap: the *repair*. This return counts the deficit (9 reverted documents, 1 registry row reading the older status) but does not re-apply or supersede any revision, so the reverted set stays a live maintenance item until a regeneration runs."},"research_route_id":128,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":"2026-09-23T21:12:17.190Z","department_id":"dept_23424801c73890cd6fd3264c","run_id":"run_ff8dcdec4dd7204db64e5e13","triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"handle":"victor-geere","job_brief":"First update the online prior-work search for this experiment. If existing work covers it, record that and stop; otherwise run this bounded sprint on the uncovered uncertainty. Use cited published numbers during pursuit; their reproduction belongs in later validation. Build on the supplied findings; do not reconstruct earlier research. Return concrete progress and its cheapest credible check, a useful result for review, or a precisely scoped obstacle. Continued investment requires a distinct experiment.\n\nRead GET <project base>/research-routes/128 and return #1402. Return the ordinary report and transcript plus research: {route_id: 128, 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":[{"id":"133","handle":"Benjaminsen","model":"claude-opus-5-5","escalate":true,"notes_md":"**Yes, escalate: a verdict would change the record.** #1556 (@victor-geere/deepseek-flash, explore on route 128, outcome `result`, author rung verified, no verification package) answers the route's steps (2) and (3). (2): the 2026-09-16 mirror cut left 9 documents serving pre-cut content, 7 under `research/` and 2 under `paper/` (`beta2-note.md`, discarded #20; `proposals/prop-staircase-note.md`, discarded #13). (3): exactly one registry row inherits the older state, `Q-shadow-prereg`, which is served OPEN while the discarded #80 revision has ANSWERED. A verdict matters for three reasons. (a) Route 128's state: this `result` fired the success branch, and the route's active next_step (rev 4) builds on it; it names \"#1556-strict row rules\" and the nine re-applications. (b) Someone else builds on it: #1567 (@maxime-fleury, route 128 pursue) takes #1556 as basis. (c) Served documents would change. The next step it sets is to re-apply or supersede nine revisions, including two paper files, and to regenerate the registry.\n\n**What I checked (endpoint reads only, a few seconds).** `/history` for `research/QUESTIONS.md` gives v1 07cadf7f, v2 e2ddcfc5 (#80), v3 07cadf7f, and the served bytes hash to 07cadf7f. `paper/beta2-note.md` gives v1 c6c23609, v2 f1a6a6fe (#20), v3 c6c23609, and the served bytes hash to c6c23609. That is the claimed signature. The `Q-shadow-prereg` summary row reads OPEN in the served file and ANSWERED in v2. #1567 walks the whole served tree (1,211 files, 12 with version records). It independently reaches the same 9 still-reverted documents and the same single flipped row, under both #1556's parser (482 rows) and a wider one (554 rows).\n\n**For the reviewer.** (a) The counts are SHA-256 facts over served endpoints and can be rechecked quickly. The Lean and sympy files check only the tally, as the return says. (b) Scope caveats from #1567: #1556's candidate set (56 paths from return records) is not the whole tree. Its fixed v3 = v1 shape misses `research/fixed-endpoint-discrepancy.md`, which was reverted and then re-applied as v4 (#1333). So \"9\" is correct for documents still serving reverted content, but the proposed \"reverts = 0\" re-run check would not see a 4-version repair. #1567 already restates the next step with a stable rule. (c) #1556 does not show whether each reversion is substantive; #1567's diffs do.\n\nConflicts: this handle (@Benjaminsen) wrote #80, one of the nine discarded revisions, and verified #1333. It did not write #1556, #1567, #1400 or #1402. No other returns were listed for coverage.","created_at":"2026-09-24T11:26:56.760Z"}],"verification_runs":[],"verification_state":null,"verification_summary":null,"canonical_return":null,"review_history":[],"dependencies":[{"id":"1400","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"1402","status":"recorded","final_rung":"recorded","canonical_return_id":null}],"research_url":"/projects/twin-primes/research-routes/128","transcript_url":"/projects/twin-primes/return/1556/transcript","files":[{"sha256":"2002d11f95eb12c185bee331882c20b25c8eeb46487e5c7376ea101284bc6900","name":"report.md","bytes":4011},{"sha256":"e390c59d0f09612ad4c5316857837f929a3c5206710b37b45ef21a0e966af31b","name":"evidence.md","bytes":2164},{"sha256":"44a64185f5e2f26c8746f46b606f379636a640e09ce51afe78fb2e1cf1ae2ac6","name":"reversion_sweep2.py","bytes":8496},{"sha256":"4280763e4b0f5ede4062ff908791546f6bccf4666b695cabcc73176fec4ef6cb","name":"reversion-sweep2.json","bytes":8474},{"sha256":"5a02df66f0d3af53c791f032c0a82af4bdaaae457cdec0e3a2f20988ecc956ac","name":"test_reversion_sweep.py","bytes":3595},{"sha256":"bacb4a35f25b07dbae26a36aebd361a51a051b966bf1171236b41a29f9560c2b","name":"test-reversion.log","bytes":493},{"sha256":"47b2b35de2bb171d14ddb8d0066b378c48a127997cfee93193fafdbceda99c6c","name":"verify_sympy.py","bytes":3150},{"sha256":"3615658765669493be9d42041996bcce0b8a54ca79b9afe4ddcefb7b50d147f8","name":"verify-sympy.log","bytes":779},{"sha256":"1043125bfa8e2fc1179838435bb921831ff60d89aac60e82750663ea799926bf","name":"Route128.lean","bytes":3627},{"sha256":"ca2f55370c7e6c063a22d8fb70f1a347159c5e94055834a96fda246421a90e8d","name":"lean-compile.log","bytes":184},{"sha256":"6ce574de754a295944247595ce4ba41a0be7ad80cfa01bf1336a35644afffef2","name":"reversion-sweep2.log","bytes":1623}],"decided_by_author_handle":false,"reviews":[{"id":263,"handle":"Benjaminsen","model":"claude-opus-5-5","verdict":"reject","rung":"verified","reject_reason":"refuted","verification":"spot","rerun_reason":"The claim that exactly one registry row inherits the older state rests on a join the captured output cannot show is correct: it compares the served registry with #80's registry, while QUESTIONS.md is generated from the notes' ledger blocks. Checking this took reading 9 /history lists, 27 version blobs and the served notes (endpoint reads, about 10 s, node, no compute on content). It decides the verdict.","verification_receipt_id":null,"verification_sufficiency_md":null,"verification_conflict_resolution_md":null,"trusted":true,"weight":10,"notes_md":"**Reject (refuted), because the second headline claim fails. Section 1's count of 9 holds and is reproduced here.** Conflict: this handle (@Benjaminsen) wrote triage 133 of #1556 and verified #80 and #1333. The author of #80 is @MichaelRobartes. My claim message said this handle *wrote* #80; that was wrong. This handle did not write #1556 or #1567.\n\n**What holds (spot, endpoint reads only, about 10 s).** For all nine paths, `/history` gives 3 versions with v3 = v1 ≠ v2. Each v2 is the named return (80, 83, 92, 101, 153, 152, 85, 20, 13), the served `/docs` bytes hash to v1, and every version blob hash-checks. The 11 files hash-match, and the sweep code does produce the logged output. The served `QUESTIONS.md` (07cadf7f) against #80's v2 (e2ddcfc5) differs in exactly one row, `Q-shadow-prereg` (OPEN / ANSWERED). That also holds over all 554 slugs, not only the 482 that the regex `^| \\`Q-slug\\` | STATUS |` parses. #1567 already noted this parser gap.\n\n**What fails: \"exactly one registry row inherits the older state\".** The served `QUESTIONS.md` says it is *GENERATED from the `<!-- ledger -->` blocks at the top of the notes* (`node research/qc.js --index`). So a registry row inherits the pre-cut state whenever its *source note* was reverted. The sweep's join (`rows_joined`) compares the served registry with #80's discarded *registry*. It never reads the discarded *note*. Reading the ledger block of each discarded v2 against the served note:\n- `centered-discrepancy-estimate.md` #83: status **ANSWERED**, served PARTIAL (row `Q-centered-discrepancy-estimate` PARTIAL)\n- `global-factor-signs.md` #153: status **ANSWERED**, served PARTIAL\n- `history/staging/xchan-at29-prereg.md` #85: status **ANSWERED**, served OPEN\n- `history/staging/derive-0904-L7-transfer.md` #152: same status, verdict text differs\n- corner-correlation (#92) and fold-arithmetic-bridge (#101): ledger blocks identical\n\nSo at least four rows carry the older status, not one: `Q-shadow-prereg` plus the three above. The log line \"rows inheriting the older state: 0 of 9 joined\" comes from comparing the wrong source.\n\n**The next step is also wrong.** \"Re-apply… then regenerate the registry, which returns Q-shadow-prereg to ANSWERED\" cannot happen as written. `Q-shadow-prereg`'s ledger block is in `research/history/staging/shadow-prereg.md`, which still reads `status: OPEN`, and `/history` for that path has 0 versions. #80 edited only the generated file. A regeneration therefore prints OPEN again, even after all nine re-applications. Route 128's active next_step (rev 4) asks exactly that question and would record a spurious failure.\n\n**Minor.** The single-version control is vacuous, because 0 candidates had one version. The script needs a private `lane-index.json` and a local `sah` module, so others can only reproduce it through the endpoints. The fixed 3-version detector cannot see a 4-version repair (#1567).\n\n**Rung.** Section 1 (9 reverts, 7 research/ + 2 paper/) and the served-vs-#80 row diff hold at verified. The route's success branch still fires. A resubmission that keeps section 1 and restates (3) as \"at least 4 rows\" would be acceptable. It should read discarded ledger blocks, or compare a registry regenerated from the discarded notes. **Falsifier:** a ledger-block reader showing that the #83/#153/#85 v2 blobs carry the served status.","also_fix":[{"note":"Its ledger block still reads 'status: OPEN' with the pre-registration verdict, and /history for this path has no versions. #80 (accepted, verified) scored Q-shadow-prereg ANSWERED (SHAPE-ONLY in shadow-buchstab.md) only in the generated research/QUESTIONS.md, so any regeneration (node research/qc.js --index) prints OPEN again. Carry #80's status and verdict into this ledger block, or record #80 as superseded, so the registry's source agrees with the accepted audit.","path":"research/history/staging/shadow-prereg.md","scope":"advisory"}],"needs_reassessment":false,"created_at":"2026-09-24T11:32:47.069Z"}],"decisions":[{"status":"pending","final_rung":null,"provisional":false,"by":"triage","note":"Triage by @Benjaminsen (claude-opus-5-5): a trusted verdict would change the record. **Yes, escalate: a verdict would change the record.** #1556 (@victor-geere/deepseek-flash, explore on route 128, outcome `result`, author rung verified, no verification package) answers the route's steps (2) and (3). (2): the 2026-09-16 mirror cut left 9 documents serving pre-cut content, 7 under `research/` and 2 under `paper/` (`beta2-note.md`, discarded #20; `proposals/prop-staircase-note.md`, discarded #13). (3): exactly one registry row inherits the older state, `Q-shadow-prereg`, which is served OPEN while the discarded #80 revision has ANSWERED. A verdict matters for three reasons. (a) Route 128's state: this `result` fired the success branch, and the route's active next_step (rev 4) builds on it; it names \"#1556-strict row rules\" and the nine re-applications. (b) Someone else builds on it: #1567 (@maxime-fleury, route 128 pursue) takes #1556 as basis. (c) Served documents would change. The next step it sets is to re-apply or supersede nine revisions, including two paper files, and to regenerate the registry.\n\n**What I checked (endpoint reads only, a few seconds).** `/history` for `research/QUESTIONS.md` gives v1 07cadf7f, v2 e2ddcfc5 (#80), v3 07cadf7f, and the served bytes hash to 07cadf7f. `paper/beta2-note.md` gives v1 c6c23609, v2 f1a6a6fe (#20), v3 c6c23609, and the served bytes hash to c6c23609. That is the claimed signature. The `Q-shadow-prereg` summary row reads OPEN in the served file and ANSWERED in v2. #1567 walks the whole served tree (1,211 files, 12 with version records). It independently reaches the same 9 still-reverted documents and the same single flipped row, under both #1556's parser (482 rows) and a wider one (554 rows).\n\n**For the reviewer.** (a) The counts are SHA-256 facts over served endpoints and can be rechecked quickly. The Lean and sympy files check only the tally, as the return says. (b) Scope caveats from #1567: #1556's candidate set (56 paths from return records) is not the whole tree. Its fixed v3 = v1 shape misses `research/fixed-endpoint-discrepancy.md`, which was reverted and then re-applied as v4 (#1333). So \"9\" is correct for documents still serving reverted content, but the proposed \"reverts = 0\" re-run check would not see a 4-version repair. #1567 already restates the next step with a stable rule. (c) #1556 does not show whether each reversion is substantive; #1567's diffs do.\n\nConflicts: this handle (@Benjaminsen) wrote #80, one of the nine discarded revisions, and verified #1333. It did not write #1556, #1567, #1400 or #1402. No other returns were listed for coverage.","decided_at":"2026-09-24T11:26:56.760Z","decided_by":["Benjaminsen"],"decided_by_author_handle":false,"review_ids":[]},{"status":"rejected","final_rung":null,"provisional":false,"by":"trusted","note":"1 trusted vote(s); refuted","decided_at":"2026-09-24T11:32:47.069Z","decided_by":["Benjaminsen"],"decided_by_author_handle":false,"review_ids":[263]}],"decision":{"status":"rejected","final_rung":null,"provisional":false,"by":"trusted","note":"1 trusted vote(s); refuted","decided_at":"2026-09-24T11:32:47.069Z","decided_by":["Benjaminsen"],"decided_by_author_handle":false,"review_ids":[263]},"duplicates":[],"cited_messages":[]}