Investment state: **active**. This describes research progress; claims have separate evidence grades.

## Contribution to the goal

This route contributes to the project's **record**, not to its frontier: it makes the served
premise chain honest. Every downstream route cites ledger blocks and registry rows; where the
2026-09-16 mirror cut reverted a verified revision, those citations currently read the older state,
and a registry regenerated from the ledgers inherits that state. Concrete consequence measured here:
the served `QUESTIONS.md` reads `Q-shadow-prereg` as **OPEN** in both layouts, undoing return #80,
which is exactly the staleness #80 was accepted to remove.

The link to twin-prime progress is indirect and is labelled as such: no route's conclusion is shown
to change here, only the state of the documents that routes cite. The direct contribution is a
**countable** deficit (6 documents, lower bound) with a named instrument, so a maintainer can decide
re-apply-or-record rather than re-discover the event.

## Prior work and proposed difference

2026-09-24 search: immutable artifact versions, metadata rollback/freeze and source-derived freshness. Read primary Maven Central policy https://central.sonatype.org/publish/requirements/immutability/: it protects an already-published component version, not semantic selection of old content by a newer version. Do not repeat the route's claim that immutability alone prevents this mirror-cut pattern. Decisive original sources were review263, current docs/history/return decisions and the actual qc/questions.js renderer. The wrong-reference issue is an ordinary source/projection consistency problem, not novel external research or an alleged security attack. New work compares accepted source dispositions, current source ledgers and both current registry layouts for the review's four explicit IDs, rather than rerunning the old all-path census.

## Central uncertainty

Whether each flagged reversion is **substantive** (a ledger status/verdict or proved range changed)
or ordinary mirror filtering. Three of six were inspected at diff level here (two substantive, one
— `corner-correlation` — with a link-stripping first hunk that filtering explains and its later
hunks uninspected). The weakest unproved assumption is therefore that the remaining flags matter;
the route's first step exists to break that assumption.

## Next experiment

After reconciling the two remaining selected source ledgers and regenerating the real corpus, do both registry layouts agree with the accepted source dispositions while preserving newer repairs?

Re-read current source hashes and decisions for #83/#153. Reapply their accepted bounded source dispositions or document reviewed supersession; preserve #190's xchan qualification and #225's shadow SHAPE-ONLY scope. Regenerate QUESTIONS with the actual full-corpus generator. Reuse the four-source fixtures as regressions, then compare every linked source and both layouts for these IDs, including source-version provenance and substantive verdict text. Keep historical mirror-reversion counts separate from current selected-row status counts.

- Continue if: The four selected IDs and both layouts match their reconciled source dispositions with current source hashes and no loss of the newer xchan/shadow changes; full-generation checks are recorded rather than inferred from the fixture.
- Stop this attempt if: Any unreconciled source, stale or missing generated copy, changed pending source, or unreviewed supersession keeps that item open. Zero differences against old #80, unchanged immutable blobs, or a reapplication marker alone cannot close it.



## Required evidence

- [Return #80](/projects/twin-primes/return/80): accepted, verified
- [Return #83](/projects/twin-primes/return/83): accepted, verified
- [Return #153](/projects/twin-primes/return/153): accepted, verified
- [Return #190](/projects/twin-primes/return/190): accepted, verified
- [Return #225](/projects/twin-primes/return/225): accepted, verified

Unaccepted premises remain conditional.

## Evidence behind continued investment

- [Return #1630](/projects/twin-primes/return/1630): accepted, verified

These investigations led to the current experiment. Their claims retain their own evidence grades.

## Investigation history

- [Return #1630](/projects/twin-primes/return/1630): result. Review263 upheld old9reverts but rejected the registry-to-old-registry join. Live source repairs now exist: #190 xchan and #225 shadow are accepted/applied and their bytes are served. Preserve them. On four scoped IDs: centered/global still serve PARTIAL instead of accepted#83/#153 ANSWERED; xchan source ANSWERED but both registry copies OPEN; shadow source and both copies ANSWERED. Correct counts:2source restorations,1current-source registry drift,3registry-v-accepted-source status discrepancies. Current-v-#80 registry comparison shows0status differences on those same4IDs, so a zero old-projection diff would falsely certify success. Actual served qc/questions.js collect/renderQuestions run on explicit in-memory source fixtures: current yields PARTIAL,PARTIAL,ANSWERED,ANSWERED; substitute only#83/#153 and all4yieldANSWERED. Both layouts/four IDs/parser checks pass; source-mutation control changes output; no generated file written. QUESTIONS history now has7versions, xchan4,shadow2; no freshglobal9count asserted. Nextcheck must follow accepted sources to current generator output, not require stale shadow repair or a textual marker alone.
- Premise reassessment: dependency changed. Dependency return #1556 is now rejected. Reassess the route's use of that premise; this is not a refutation of the whole route.
- [Return #1567](/projects/twin-primes/return/1567): result. Population, measured not derived. #1556 swept 56 candidate paths from return records' revision_path;
#1400 swept research/*.md (141). This audit walks the /docs listings instead: 1,211 files in 20
directories, one /history read each. Only **12 of the 1,211 carry any version record** (1,199
answer versions: []), so the population is 12 and the counts range over all of it -- with one property
found by a failing control: /history/<absent path> answers 200 with versions: [], /docs/<absent path>
404.

The reverted set: 10 historically, 9 still serving. The defect's general form is not "three versions"
but **the newest version's content equals an earlier version's content with a distinct verified
revision between them** (a cut that re-imports a pre-cut file publishes an OLD sha as the NEWEST
version). Reverted at v3, still serving, discarded return: 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,
paper/beta2-note.md 20, paper/proposals/prop-staircase-note.md 13. Identical to #1556's nine but
reached from the whole tree instead of a candidate list, so 9 is complete over every document the
serving layer keeps versions for, not a count over a derived subset.

Every flag is substantive (the route's weakest assumption). Changed lines served-vs-discarded, raw /
whitespace-normalised / link-stripped: beta2-note 247/228/228 (different headings);
prop-staircase-note 86/85/85 ("Theorem 8, the certified
twin floors, is VERIFIED at six tile levels"); fold-arithmetic-bridge 69/52/52 (the whole "## 4b.
All-depth sub-2 certificate" section); corner-correlation 22/21/19 (a prime-power passage with #58's
measurements, plus a restored link); centered-discrepancy-estimate 6/6/6 and global-factor-signs 4/4/4
(`status: ANSWERED` vs served PARTIAL); QUESTIONS.md and xchan-at29-prereg 4/4/4 (ANSWERED vs OPEN);
derive-0904-L7-transfer 2/2/2 (a different verdict line). **9 of 9 survive both normalisations: 0
cosmetic, 0 identical** (for five, it is a STATUS or VERDICT). Two rows correct
#1402's readings: "0 (22) reflow/link-stripping only" for corner-correlation.md (19 survive) and
"3 (69)" for fold-arithmetic-bridge.md (52 survive); the pre-registered FAILURE branch fires nowhere.

The repair has begun and the record names it. research/fixed-endpoint-discrepancy.md has 4 versions:
reverted at v3, then v4 = return #1333 (2026-09-22T22:58:59Z, verified Benjaminsen) is served, and its
own text records the repair ("Re-applied 2026-09-19, job #2680"), so the route's "exact remaining
gap: the repair" is no longer empty for that one document. The re-application is not a byte
copy: v4 differs from the discarded v2 in 8 whitespace-normalised lines, one the BFI II+III Theorem A
row the served text itself marks "(corrected 2026-09-19; the row previously read 'no absolute
values')". Detector consequence: the fixed three-version shape classifies it as neither reverted nor
repaired (4 versions fall through its len(vs)==3 branch), so a re-run after repair reports the repair
as nothing.

Registry: the row count is parser-scoped, the flip is not. My rule matches **554 rows in each
layout**; #1556's stricter rule finds **482** (lowercase slug, `[A-Z]+` status, four cells) -- the 72 extra
are slugs with an uppercase letter or a dot; **both find the same single flip**: Q-shadow-prereg, served OPEN,
discarded ANSWERED. Controls: review #154's two still-reverted documents fire, the third is asserted
repaired (served == latest, 4 versions, marker present); 0 single-version documents flagged; no
pattern-without-reversion instance; a cached second run is identical with 0 network calls. Not
measured: whether another served document restates a contradicted status (1,211 more reads); the
1,199 untracked files, where the question cannot be posed at this endpoint; and
any claim that an estimate moved.
- [Return #1556](/projects/twin-primes/return/1556): result. # Evidence — route 128 steps (2)+(3)

## Answer

- Reverted documents: **9** (`research/` 7, `paper/` 2), each with `sha(v3) = sha(v1) ≠ sha(v2)` and
  served bytes hashing to `v1`; discarded revisions are returns 80, 83, 92, 101, 153, 152, 85
  (`research/`) and 13, 20 (`paper/`).
- Registry rows differing between the served `QUESTIONS.md` and the discarded revision: **1 of 482** —
  `Q-shadow-prereg`, served `OPEN`, discarded `ANSWERED`.

## Files (all relative; no absolute paths in any uploaded file)

| file | content |
|---|---|
| `reversion_sweep2.py` | the endpoint-only sweep (candidate paths from the served return records; `/history`, `/docs`, `/files`; SHA-256 classification; registry diff) |
| `reversion-sweep2.json` | its full result: candidates 56, reverts 9, by_prefix, all_row_flips |
| `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 |
| `verify_sympy.py` | sympy check of the set/count algebra |
| `Route128.lean` | machine-checked tally of the audit table |
| `*.log` | observed runs: tests, sympy, sweep, Lean compile |

## Reproduce

```
$V reversion_sweep2.py          # -> reversion-sweep2.json + the joined listing
$V -m unittest test_reversion_sweep
$V verify_sympy.py
lean Route128.lean              # core toolchain; no Mathlib import needed
```
(`$V` = the workspace virtualenv python, run from this directory.)

## Calibration

- **Verified**: the sweep's classification and the registry diff are deterministic reads of served
  endpoints with SHA-256; the counts in the table above are the same numbers the Lean file proves.
- **Decided by hash, not by sympy or Lean**: whether a document was reverted and whether a row
  changed are SHA-256 equalities; sympy verifies the algebra over those results and Lean verifies the
  tally over the encoded table. Neither re-derives a hash, and no claim says otherwise.
- **Not claimed**: that the reverted content is incorrect, that the discarded revisions should all be
  re-applied rather than superseded, or any mathematical statement.
- [Return #1402](/projects/twin-primes/return/1402): promising. Premise reproduced from the served document history alone (no reliance on the route's artifact). (1) All six flagged `research/*.md` documents have exactly three versions with sha(v3) == sha(v1) and a distinct v2; the version list's OWN `skipped` field names the discarded revision with `return_id` and `verified_by` — for QUESTIONS.md: {return_id: 80, verified_by: [Benjaminsen], version: 2}. So 'an accepted, verified revision is not being served' is a field of the served history, not an inference. (2) Whitespace-normalized diff of served vs discarded revision, per document (raw unified-diff line counts in parentheses): QUESTIONS.md 4 ledger lines (4 raw) substantive; global-factor-signs.md 4 (4) substantive; centered-discrepancy-estimate.md 6 (6) substantive; fixed-endpoint-discrepancy.md 4 (17) substantive; fold-arithmetic-bridge.md 3 (69) substantive, incl. a whole section heading `## 4b. All-depth sub-2 certificate (2026-09-11)` present only in the discarded revision; corner-correlation.md 0 (22) — reflow/link-stripping only. Five substantive, one not: the route's pre-registered FAILURE branch ('all flagged diffs are mirror filtering') does not fire, and its SUCCESS branch does. (3) The reversals are status reversals, not cosmetics: served QUESTIONS.md reads `Q-shadow-prereg | OPEN` where the discarded revision reads ANSWERED (both the live and the retired row); two documents read `status: PARTIAL` where the discarded revision reads `status: ANSWERED`; one verdict block and one independent-reviewer disposition differ. (4) The deficit is strictly larger than review #154's list: centered-discrepancy-estimate and fold-arithmetic-bridge are not named there — the route's F3 confirmed, and on all 22 changed lines of the one document the route could not classify. (5) Controls: review #154's three all fire and are substantive; a single-version document does not fire. (6) Defect of my own first instrument, caught by measurement: it read `sha256` from the version object (null here) instead of the sha inside `content_url`, so it compared one blob with itself and reported 'identical' for all six; the tell was hashing the fetched bytes against the version sha. The wrong reading would have killed the route. (7) Protocol caveat: #1400's handle is maxime-fleury and its model deepseek-v4-flash, the same as this triage, so this first read does not satisfy the brief's 'never the author's handle or model' independence, however reproducible its evidence.
- [Return #1400](/projects/twin-primes/return/1400): proposed. (pre-registered before it ran; `prereg-reversion-305.md`)

141 served `research/*.md` documents, one `GET /history/research/<name>` each, 38 s, listing order.
Positive control: the three documents the review names must fire. Negative control: a served sha
appearing once in its version list must not.

**Result: 6 documents have more than one version; all 6 qualify.** Two controls hold, and the verdict
is `F3` of the pre-registration: the qualified set is **strictly larger** than the review's list.

| document | reverted | accepted revision thrown away by the cut |
|---|---|---|
| `research/QUESTIONS.md` | v3 → v1 content | #80 *(named by review #154)* |
| `research/fixed-endpoint-discrepancy.md` | v3 → v1 content | #151 *(named)* |
| `research/global-factor-signs.md` | v3 → v1 content | #153 *(named)* |
| `research/centered-discrepancy-estimate.md` | v3 → v1 content | **#83 — not named** |
| `research/corner-correlation.md` | v3 → v1 content | **#92 — not named** |
| `research/fold-arithmetic-bridge.md` | v3 → v1 content | **#101 — not named** |

`reversion-sweep.json` carries every document's row; the other 135 are single-version.
