# RUN-001 — corpus identity: the packages are the originals; the pages around them are not exact

**Arm:** 懸衡 (Xuán Héng) / AMRAL Research Lab
**Date:** 2026-10-18
**Subject:** the Moser case as published at [amral.evemisslab.com/moser/](https://amral.evemisslab.com/moser/) and its
English edition `/en/moser/` (site revision `127fb1c9`; the case's two directories are the same trees, `eccb1c2b` and
`0590bafe`, as at `d7a8e7a4`, the revision whose manifest `corpus.py` pins), against the fifteen round packages
**Tools:** [`corpus.py`](../code/corpus.py), [`fetch_source.py`](../code/fetch_source.py),
[`run001_corpus_identity.py`](../code/run001_corpus_identity.py)
**Log:** [`run001-corpus-identity.json`](../data/gate-logs/run001-corpus-identity.json)

**Verdict: the packages PASS; the pages FAIL five of seven checks, all on presentation.** The fifteen zips are the
originals the site says they are: size, SHA-256 and member count agree with both manifests and with the bytes the
site serves (C1, C2). What fails is what the pages say about them. Five served documents are not the package bytes
(a correct but undisclosed repair); three size labels are wrong; the English hub's fifteen download links are dead;
one quotation is spliced; and the hub's quoted claim about the READMEs holds for twelve of fifteen. None of this
touches the packages, which is what every later run reads. The drill planted 65 defects; every one was caught by
exactly the checks named for it, and the 4 controls disturbed nothing (411/411 must-stay-green assertions held).
Two cold runs wrote the same gate log, byte for byte.

---

## Why this is round one

Every later run reads a package and reasons about what the first layer says it is. The first layer makes five kinds
of claim about the packages:

> 原始封包未經改動,逐輪留痕,含驗證與雜湊。 … SHA-256 逐包核驗 · 原始位元組,不重新打包

> 每一輪的 README 都自己聲明「不構成 Moser 問題的新上下界」

and, on each round page, a status line marked 「包內文件自陳的階段性狀態,原樣照登」 (the stage status the package's
documents state of themselves, reproduced as written), a quotation 「…」 attributed to a numbered section of a named
document, a file list, and the package's size and SHA-256. Each is checked against the package bytes, by content,
never by filename.

## What was compared

| side | what | count |
| --- | --- | ---: |
| packages | the fifteen pinned zips, read in memory | **15**, 12,039,698 bytes, **282** members |
| manifests | `moser/manifest.json`, `en/moser/manifest.json` | 2 × 15 entries |
| served packages | `moser/packages/*.zip` | 15 |
| round pages | `moser/p/<round>/`, `en/moser/p/<round>/` | 2 × 15 |
| served files | the zh pages' `files/` | **272** |
| English documents | the en pages' `files/` | 38 |

## The checks

| id | guards | result |
| --- | --- | --- |
| C1 | every package matches its pinned size, SHA-256 and member count | **PASS** |
| C2 | both manifests list exactly the pinned packages in the programme's order, with filename, size, SHA-256, member count; the served zips match | **PASS** |
| C3 | every file a zh page serves is byte-identical to the package member at the same path | **FAIL** — 267/272; 5 differ |
| C4 | each `files.json` names its own package and lists exactly the served files with their sizes, each a member of that size | **FAIL** — the same 5, listed at their package sizes |
| C5 | each page shows its own round, version, date, size, SHA-256, package link, previous/next round; each hub links every package | **FAIL** — 21: 6 size labels, 15 English hub links |
| C6 | each status line and 「」 quotation occurs in the package; an attributed quotation lies, in order, in the cited section | **FAIL** — 1 quotation (round 1), 2 parts |
| C7 | every round's top-level README contains 「不構成 Moser 問題的新上下界」 | **FAIL** — 12/15 |

## Findings

### 1. Five served documents are repaired copies, not the package bytes (C3, C4)

Five documents in three packages were written through a non-raw string literal, so TeX backslash sequences became
control characters inside the package itself: `\boxed` is a backspace followed by `oxed`, `\varepsilon` a vertical
tab followed by `arepsilon`, `\frac` a form feed, `\ast` a bell, `\text` a TAB, and the `\n` of `\nabla` a newline.

| round | document | in the package |
| --- | --- | --- |
| 4 | `reports/ROUND_04_CUSP_AUDIT.md` | 0x07 ×1, 0x08 ×2, 0x0c ×1, one `\nabla` split by a newline |
| 8 | `reports/ROUND_08_DENSE_POINTCLOUD_CROSSCHECK.md` | 0x0b ×1 |
| 8 | `reports/ROUND_08_FINITE_WIDTH_AUDIT.md` | 0x08 ×1, 0x0b ×2 |
| 8 | `reports/ROUND_08_PEAK_DENSE_POINTCLOUD_CROSSCHECK.md` | 0x0b ×1 |
| 12 | `reports/ROUND_12_REPORT.md` | 0x08 ×9, 0x09 ×4, 0x0b ×1 |

No other text member of any package has a control character, or a TAB in Markdown. The site serves all five as
repaired copies, and each repaired copy is **exactly** the package text with those escapes put back — checked byte for
byte, not by eye (`equals_package_with_escapes_restored`, true for all five). So the site's versions say what the
authors meant. But they are not the package bytes. The page presents them as the package's files, says nothing about
the repair, and its `files.json` still gives the package sizes (1–14 bytes smaller than the files it serves).

The hub's sentence 「原始封包未經改動」 is about the zips and holds. The file lists are what is inexact.

**For every later run:** read the package bytes, never the served copies, and restore these five documents' escapes
before reading their TeX. `restore_escapes` in the run code is the restoration, and the check above shows it is the
one the site used.

### 2. The English hub's download buttons are dead; six size labels are wrong (C5)

- The English hub builds each download link as `./packages/<file>`, relative to `/en/moser/`. The site has no
  `/en/moser/packages/`, and its configuration serves static assets with no redirect. All fifteen buttons on the
  English hub are dead links. Checked on the live site the same day by HTTP HEAD, outside the gate log:
  `/en/moser/packages/Moser_Skew_Lab_v0.1.zip` returns 404; `/moser/packages/Moser_Skew_Lab_v0.1.zip` returns 200.
  The English round pages link `../../../../moser/packages/<file>` and work.
- Three round pages state the package size wrongly, in both languages: round 8 says 1575.6 KB (the package is
  1,613,363 bytes, 1575.5 KB), round 14 says 1409.4 KB (1409.3), round 15 says 3943.7 KB (3942.8). The SHA-256 beside
  each is correct, so a reader who verifies the hash is not misled; the hub, which computes sizes from the manifest,
  shows them right.

Everything else C5 guards holds on all thirty pages: round number, version, date, SHA-256, the package link, the
progress counter and the previous/next links.

### 3. Status lines: all fifteen hold, as written up to punctuation width (C6)

Every status line occurs in the round's main report. None is byte-identical: each source has full-width semicolons
（；）and the page has ASCII ones. 「原樣照登」 holds word for word, not character for character; the site uses ASCII
punctuation in all its Chinese text.

### 4. Quotations: thirteen hold, one is spliced, one ends early (C6)

Each quotation was split at its ellipses (……) and its parts looked for, in order, inside the section(s) its
attribution names. The attributions themselves all check out: every cited section exists, has the title the page
gives it, and holds the figure the page cites (579 leaf boxes, round 12). The tier at which each quotation held:

| tier | means | rounds |
| --- | --- | --- |
| typographic | identical once punctuation width and nested quotation marks are mapped | 12 |
| markup | identical once Markdown list markers and TeX markup (`\boxed{\text{…}}`, `$s_+>1$`) are removed | 2, 3, 4, 6, 8, 9, 10, 11, 13, 15 |
| words | identical in letters and digits; punctuation changed beyond width | 5, 7, 14 |
| **not found** | | **1** |

Round 14 reaches only "words" because the page ran a bulleted list together with 、; round 5 because it closed a
boxed formula with 。 where the source has a full stop after the formula's closing brace. Nothing in either is
reworded. Round 7's case is below.

**Round 1 is spliced.** The page quotes, from §4 「初步結構發現」:

> 「固定相位下,平移項只占據 Fourier 的一階正弦與餘弦模態……真正壓迫容器的是平移後仍存在的高階峰值,對應曲線凸包的角、…」

The source's first sentence is 「它只占據 Fourier 的一階正弦與餘弦模態。」. The page replaced its subject 它 with the
antecedent from the sentence before (固定相位下，平移項), without brackets. The second part joins the heading of §4.3,
「真正壓迫容器的是平移後仍存在的高階峰值」, to the bullet list below it. That drops the body's own clause,
「當一階模態已由平移吸收後，剩餘高階正歪度峰值對應：」, without an ellipsis, and turns three bullets into one sentence. The
sense is the source's; the words in quotation marks are not. It should be marked as a paraphrase, or quoted as
written with the interpolation bracketed.

**Round 7 ends early.** The quotation closes 「…而是:曲率在曲線參數上的集中位置。」. In the source, the boxed phrase
is followed without a stop by 「以及它如何控制：」 and a list of the contacts it controls. The page's full stop makes the
working proposition narrower than the report states it. The words are the source's (so C6 passes), but the sentence is
not.

The round 5 status note's own quotation, 「真正成果不是小數點後的提升,而是把候選的生成原因完整寫出。」, likewise ends where
the source continues with a colon and the boxed result it announces; the sentence is complete in sense.

### 5. 「不構成 Moser 問題的新上下界」 — twelve READMEs say it, two in other words, one not at all (C7)

The hub quotes this phrase as something every round's README says of itself. Twelve READMEs contain it verbatim
(rounds 3–7, 9–11, 13–15 as 「本封裝不構成…」, round 2 as 「這些結果不構成…」). Two say the same thing in other words:

- round 1: 「本封裝不是普適覆蓋證明，也沒有提出新的上下界。」
- round 8: 「本封裝不構成新的 Moser 上下界。」

Round 12's README is one line about its partial `mpmath.iv` replay, and makes no statement about bounds. Nor does any
other document in the round 12 package; the only "lower bound" sentences there are about interval enclosures, not
the Moser constant. Read as a paraphrase, the hub's sentence holds for fourteen rounds; as a quotation, for twelve.
For round 12 it does not hold in either reading. This layer's own README had repeated the hub's sentence. It is
corrected in the same commit as this report.

### 6. The English edition serves translations under the original names

The English round pages render 38 English translations of the packages' report documents. They are served under the
original file paths and listed, through the same `files.json` as the Chinese pages, at the Chinese originals' sizes.
Every other file is marked "(Chinese)", but the translations are not marked as translations. The English status note
reads "reproduced verbatim" over an English rendering of a Chinese status line. Neither is a defect in the packages;
both are presentation an English reader cannot see through.

### Not defects, recorded for later runs

- **What the file lists leave out.** 10 of 282 members are not served on the pages. They are all JSON over
  30,000 bytes or CSV over 1 MiB, and all are in the downloadable zip: round 1 `data/benchmark_records.json`;
  round 6 `data/antisymmetric_mode_profiles.json` and `data/round06_summary.json`; round 8 `data/round08_summary.json`;
  round 10 `data/round10_summary.json`; round 11 `data/phase_derivative_box_certificate.json`; round 14
  `data/asymmetry_congruence_audit.json`, `data/double_peak_best_curve.csv` and `data/single_peak_base_curve.csv`;
  round 15 `data/final_candidate_curve.csv`. The pages do not say the lists are partial.
- **Version names.** Four packages carry a sub-version in the filename (v0.2.2, v0.4.1, v0.6.1, v0.8.3) and a base
  version in their wrapper folder (`Moser_Skew_Lab_v0.2/` …). Three of their READMEs say the base version; round 8's
  says v0.8.3. The filename is the identifier used throughout this tree.
- **Dates.** Each page's date tag is the package's own `MANIFEST.json` date (round 1, which has none, shows its zip
  date), and all fifteen agree. The packages' dates and their zip timestamps disagree in order, though. Round 12
  declares 2026-07-27, and rounds 13–15 declare 2026-07-26, while round 12's files are the older ones (2026-07-26 16:56
  against 2026-07-27 02:49–03:39). The hub labels the zip timestamps UTC, but DOS timestamps carry no zone and none of
  these zips has an extended-timestamp field, so the packages do not support that label.
- **Names.** Neighbouring pages name rounds 2, 11 and 14 differently: 「相位跳躍與拓撲導引搜尋」 against
  「相位跳躍與手性修正」; 「精確接觸邊界與導數區間盒」 against 「導數區間盒與 120°/270° 專用證書」; 「雙峰曲率分裂與手性破缺」 against
  「雙峰分裂與手性破缺的局部穩定性」. Five English pages (rounds 6–10) label their links "Previous"/"Next", the others
  "Previous round"/"Next round".

## The drill

| | |
| --- | ---: |
| planted defects | 65 |
| caught by exactly the checks named for them | **65** |
| controls (member order, index order, punctuation made full-width) | 4 |
| controls that disturbed nothing | **4** |
| must-stay-green assertions held | **411/411** |

"Trip" means a failure the unplanted corpus does not already have, so a plant is visible even in a check that fails
on the real site. Plants include a byte appended to a source zip, a pin edited, a served zip flipped, a manifest
reordered, a served document flipped in each of the fifteen rounds, a status line and a quotation edited in each of
the fifteen rounds, a section title, a section number, two quotation parts swapped, an attributed figure, and the
README disclaimer edited at the same length. The drill-of-the-drill replaced each check in turn with one that always
passes: all seven were reported blind.

The first version of this instrument was wrong in three ways, all caught by reading its failures against the pages
before believing them. It took the English pages' "Previous"/"Next" labels for missing links, it did not decode
`&gt;`, and it called a quotation altered when the page had only flattened Markdown lists or dropped
`\boxed{\text{…}}`. The tiers above are the fix, and each is reported, so that "found" is never stronger than what
was found.

## What this round does not settle

Whether any figure in any package is right. That is what the runs from RUN-002 on are for, one round at a time, read
from the package bytes.

## Re-running

```
python code/fetch_source.py
python code/run001_corpus_identity.py --site <site>/public --site-rev 127fb1c9e38d4324495625f04ac3fec43975e7c5 --drill
```

`<site>` is a checkout of the AMRAL site at that revision (or any revision whose `moser/` and `en/moser/` trees are
`eccb1c2b` and `0590bafe`). The run is correct when the gate log is byte-identical to the committed one.
