# Template 3: 论文写作 + 同行审稿流水线

> 把 Template 2 的研究笔记转化为多篇 ready-to-submit 论文，每篇带强制审稿与修订

## 研究模式（必读）

本模板默认 **Mode A：实质研究 paper**。Mode B（综述 / expository note）切换条件与具体行为见 [`MODES.md`](MODES.md)。模式从 Template 2 的 `decision_log.md` 第一行继承；如果 Template 3 单独使用，main thread 在 Stage 0 检测一次。

模式影响：

| 段落 | Mode A 行为 | Mode B 行为 |
|---|---|---|
| Writer §"精确 SOTA gap 声明" | **必填三行模板** | 必填但可弱化 |
| Writer §"实质贡献声明" | **必填**且 (a)(b)(c) ≥ 1 | 必填，可全是 (d) 综述视角 |
| Writer §Predictions | **必填 ≥ 2 条可证伪陈述** | 可选 / 跳过 |
| Reviewer 独立复现 | **必做**（写 reproduction note） | 可选（声明引用是否准确即可） |
| Reviewer R1-R4 合规审视 | **必做**（v1.5 Phase 1）| 仅 R2/R3 |
| Reviewer Editor Persona（target tier + 上一级）| **必做**（v1.5 Phase 3）| 可选 |
| **Stage 3.5 Writer-harmonize**（v1.6 Loop A）| **自动触发**（条件满足时）| 同 |
| **Stage 6 Deep Audit Loop C**（v1.6）| **用户 opt-in**（推荐 Tier A 目标）| 可选 |
| 目标期刊 | research article（Math. Comp. / JNT / Acta Arith. / FFA / ...） | exposition（L'Enseign. Math. / Expositiones / Bull. AMS Surveys） |
| 标题用词 | 避免 "A survey of..." / "An introduction to..." | 鼓励 "A survey of..." / "An introduction to..." |

### v1.5 反 bloat / 诚实强制四规则（Phase 1）

详见下面 Writer / Reviewer prompt。每条规则都是**编译前**拦截：

- **R1 demote-conditional**：≥ 2 条不可证 hypothesis → 主结果必须降为 `\begin{conjecture}`
- **R2 forthcoming-flag**：含 "forthcoming / sketch / we defer to / details elsewhere" → 标 `[unfinished_paper]`，**不许编译**，回到 prover
- **R3 length-by-content**：(a) 类新定理 = 0 → ≤ 12 页；(a) ≥ 1 → ≤ 25 页
- **R4 cite-and-Note**：主定理是单引文 corollary → 改写成 6 页 short-note，不投全 paper venue

## 用途

当 Template 2 已输出**带"关键发现"与"推荐期刊与理论延伸"小节的命题研究笔记**时，本模板把笔记中**每一个可发 paper 的方向**自动转化为一篇 LaTeX 学术论文，并强制每篇通过一位"30 年经验终身教授"reviewer-agent 的就地修订。

输出物：项目目录下 `paper_submission/` 子目录，按方向分子文件夹，每个子文件夹一份 self-contained `main.tex`（含 `thebibliography`）+ 一份审稿报告（≤300 字）写回到 stdout。

## 与 Template 1 / 2 的关系

```
Template 1 → 路线图 + 候选命题
Template 2 → 5 层研究 + GO/NO-GO 决策（含可发 paper 方向清单）
Template 3 → 把每个可发方向写成 ready-to-submit 论文
```

Template 3 的**唯一输入**是 Template 2 的最终 HTML 笔记（或等价的 markdown 决策文档）。可独立使用，前提是手头有这样一份笔记。

## 已完成示例

- **2026-05-24/25：Legendre 命题 4 → 5 篇 paper**（10 agent，~1 小时，~$3）
  - 输入：`public/research/explore/legendre/legendre-proposition4_function_field_gowers.html`（Template 2 v2 输出）
  - 输出：`research/legendre/continue_p4/paper_submission/{paper1_main, paper2_unconditional, paper3_gowers, paper4_ss_gap, paper5_integer_benchmark}/main.tex`
  - 审稿结果（绿/黄/红）：1 绿、2 黄（major revision）、1 红（结构性问题）、1 绿（综述定位）
- **2026-05-25：Riemann deep-dive → 4 篇 paper**（8 agent + main thread，~45 分钟）
  - 输入：Riemann Hypothesis 多命题 v2 笔记
  - 输出：`research/riemann/paper_submission/{paper1_mertens_oscillation, paper2_keiper_li_density, paper3_gl2_dh_explicit, paper4_jensen_hyperbolicity}/main.tex`（10–18 页）
  - 审稿结果：1 绿、2 黄、1 红（典型分布；reviewer 抓出 H3 vacuous / H4 circularity / 1-cosx bound 错向 / N0 方向倒 / 公式 inversion 等）
  - 全部 4 篇 Stage 5 编译通过（`compiled` 标记进 decision_log）

## 架构

```
       ┌──────────────────────────────────────────────────┐
       │  Input: Template 2 HTML / md 研究笔记            │
       │  必含 "关键发现" + "推荐期刊与理论延伸" 小节     │
       └────────────────┬─────────────────────────────────┘
                        │
                        ▼
        ┌────────────────────────────────┐
        │ Stage 0：方向识别（main thread）│
        │  ‣ 读笔记，列出 N 个可发方向    │   N 通常 3–5
        │  ‣ 给每方向起 slug + 目标期刊   │
        └────────────────┬───────────────┘
                         │
                         ▼
        ┌────────────────────────────────┐
        │ Stage 1：数值哨兵（main thread）│
        │  ‣ 验证笔记中的核心数值断言     │   防止论文建立在错数据上
        │  ‣ python 跑 3-5 个 (q,d) /     │
        │    样本点，对账笔记的表         │
        └────────────────┬───────────────┘
                         │
                         ▼
        ┌────────────────────────────────┐
        │ Stage 2：N 个并行 writer-agent │
        │  每个 = 数学 PhD 博士生         │
        │  输入：方向 brief + 笔记引用    │
        │  输出：paperK_<slug>/main.tex   │
        │  ‣ 必须 self-contained          │
        │  ‣ 必须诚实标注 conditional     │
        │  ‣ 必须含 Numerical 节         │
        └────────────────┬───────────────┘
                         │ writer K 一完成 → 立即起 reviewer K
                         │ （流式，不等其他 writer）
                         ▼
        ┌────────────────────────────────┐
        │ Stage 3：N 个 reviewer-agent    │
        │  （流式，与剩余 writer 并行）   │
        │  每个 = 30 年终身教授           │
        │  ‣ 读 main.tex 全文            │
        │  ‣ 找逻辑漏洞、隐含假设、循环  │
        │  ‣ **就地 Edit 修改文件**       │
        │  ‣ 出 ≤300 字 referee report   │
        │  ‣ 必要时降格 theorem→conj    │
        └────────────────┬───────────────┘
                         │ reviewer K 一完成
                         │ if (≥5 edits OR demote 任意 theorem OR R1-R4 触发)
                         ▼
        ┌────────────────────────────────┐
        │ Stage 3.5：writer-harmonize ⭐ │  v1.6 Loop A 自动触发
        │  ‣ Read main.tex + reviewer    │
        │     report + reproduction note │
        │  ‣ 修 abstract / §1 intro /    │
        │     SOTA gap / 实质贡献 /      │
        │     §Discussion 与正文一致     │
        │  ‣ **不动数学**，仅 narrative  │
        │  ‣ 1 round 硬上限              │
        └────────────────┬───────────────┘
                         │ all reviewers + harmonizes complete
                         ▼
        ┌────────────────────────────────┐
        │ Stage 4：汇总（main thread）    │
        │  ‣ 五色（绿/黄/红）状态表       │
        │  ‣ 每篇 verdict + 推荐期刊      │
        │  ‣ 实操建议（立即投/修一轮/弃）│
        └────────────────┬───────────────┘
                         │
                         ▼
        ┌────────────────────────────────┐
        │ Stage 5：编译 PDF（main thread）│
        │  ‣ 跑 tools/latex_compile_     │
        │     papers.sh <paper_subdir>   │
        │  ‣ 报告每篇 size + 页数        │
        │  ‣ 失败时贴 main.log 末 10 行  │
        │  ‣ (b) 类失败 → 起 fixup agent │
        │     (≤2 轮) → 重编译验证       │
        └────────────────┬───────────────┘
                         │ main thread 询问用户：跑 Loop C？
                         │ skip / light / full（用户选）
                         ▼
        ┌────────────────────────────────┐
        │ Stage 6（可选）Deep Audit ⭐   │  v1.6 Loop C 用户 opt-in
        │  light：自审标注（不改文件）    │
        │  full：自审 + 自修 + 重编译     │
        │  ‣ 仅 GO paper 触发            │
        │  ‣ full 推荐给 Tier A 目标      │
        │  ‣ ≤ 4 round 硬上限            │
        └────────────────────────────────┘
```

总 agent 数：**2N**（writer + reviewer）+ ≤N（harmonize 触发时）+ ≤2N（Stage 5 fixup） + ≤N（Stage 6 audit，opt-in），加 main thread 协调。预算（关键角色 Opus 4.7）：

- N=3 standard：~6–12 agent，\$15–35，30–60 分钟
- N=5 standard：~10–20 agent，\$25–60，60–90 分钟
- **deep paper**（writer 多轮迭代 + reviewer 独立复现完整数据集）：每篇额外 +20-50% agent / 时间，~\$10–20/篇

Mode B（全 Sonnet 4.6 + 综述模式跳过 reviewer 独立复现）：\$3–8 即可。

之前 v1 的 "\$2–5" 是 v1 单轮、无独立复现、无 §Predictions 的下限值，**不**适用 Mode A research paper 实战。

**模型选择**：writer 和 reviewer **都强烈推荐用 Opus 4.7**。本模板下面专门吐槽过"writer 倾向 over-claim，Sonnet 默认乐观"——opus 4.7 在 conditional vs unconditional 的措辞克制上明显更好；reviewer 抓 over-claim 的能力直接决定 paper 质量。main thread 协调也用 Opus 4.7。预算紧张时才降到 Sonnet 4.6。

## 预算分配

| 阶段 | agent 数 | 角色 | 何时跳过 |
|---|---|---|---|
| Stage 0 | 0 | main thread 列方向 | 用户直接给清单时 |
| Stage 1 | 0 | main thread 跑哨兵 | 笔记数值已有第三方复核时 |
| Stage 2 | N | writer（数学 PhD） | 不可跳 |
| Stage 3 | N | reviewer（终身教授） | 不可跳——这是本模板的核心增量 |
| Stage 3.5 | ≤ N | writer-harmonize（v1.6 Loop A）| 自动触发；无 reviewer Edit / theorem demote 时不起 |
| Stage 4 | 0 | main thread 汇总 | 不可跳 |
| Stage 5 | 0–2N | main thread 调脚本编译 PDF（+ 失败 fixup） | 用户明确不需要 PDF 时（罕见） |
| Stage 6 | 0–N | Loop C 自审（v1.6，opt-in） | 默认跳过；仅用户明确选 light / full 时起 |

**典型 N = 3–5**。N > 5 时 main thread 上下文吃紧，应分批跑（每批 ≤ 5）。

## Stage 2 / 3 agent 的具体 prompt 模板

### Writer agent（每方向一个，并行）

```
你是一个数学专业 PhD 博士生。任务：写一篇 ready-to-submit LaTeX 论文。

【研究模式】mode=[A|B]（详见 MODES.md，从 Template 2 decision_log 继承）

【输出路径】<project>/paper_submission/paper<K>_<slug>/main.tex
（创建目录；不写其他文件；不写 README）

【主题】<一句话主题 + 主定理候选陈述>

【证明路线】<从 Template 2 笔记 §3 / §5 抄入；明确每一步的依据>
1. ...
2. ...
3. ...

【必须包含的章节】
- §1 Introduction（含完整主定理陈述 + §"精确 SOTA gap 声明" + §"实质贡献声明"两个末尾子段）
- §2 Notation & preliminaries
- §3–§K 技术核心（每条引理 / 定理都要有完整证明，不能仅 cite）
- §K+1 Numerical verification（含已验证表格；标明 "every case passed" + 数据规模）
- §K+2 Discussion（与最相关文献比较，列出本工作的精确增量）
- §K+3 Predictions（mode=A 必填 ≥ 2 条；mode=B 可选）
- §K+4 Reproducibility（数据 / 代码路径、依赖、预期运行时长、硬件）

【§"精确 SOTA gap 声明"硬约束】（必须放在 §1 Introduction 末尾，写在 §"实质贡献声明" 前）
格式必须**严格**如下，否则 reviewer 会标 [missing-sota-gap]：

  Best known unconditional: <Author Year, Journal Vol pp> 给出 <精确不等式或界>
  Best known conditional:   <Author Year> 在 <假设 X> 下给出 <精确界>
  This paper:               <unconditional 给 / conditional 在 <Y> 下给> <精确界>，
                            gap to SOTA = <数值或定性>。

例：
  Best known unconditional: Maynard 2014, Annals 181, 383–413, gives lim inf p_{n+k}-p_n ≤ Ck for all k.
  Best known conditional:   Polymath 8b 2014 under EH gives the same with C=246 for k=1.
  This paper:               Conditional on EH+Bombieri-Vinogradov-with-level-1, lowers C from 246 to 196 for k=1.
                            Unconditional gap unchanged.

如果做不到上面这种精确 gap 比较 → 大概率本文没真贡献，应该 abort 并向 main thread 报告。

【§"实质贡献声明"硬约束】（必须放在 §1 Introduction 末尾子段）
按强度排序声明本文的 *新* 贡献：
- (a) 新定理 / 新证明：<陈述 + 与已知最强结果的精确差距>
- (b) 新猜想 + 数值证据：<陈述 + 已验证范围 + 预测范围 + R²>
- (c) 新算法 / 新计算结果：<规模 + 运行时间 + 输出文件>
- (d) 新综述视角：<指出已知结果间的新联系>

**Mode A 强制检查**：若 (a)(b)(c) 全部为空、只剩 (d)，本文应**降级**到
expository note 而非 research article（在汇报里向 main thread 标 "down-grade-to-B"）。
**Mode B**：以上格式照填，可全是 (d)。

【§Predictions 硬约束】（mode=A 必填，mode=B 可选）
≥ 2 条 1-2 年内可证伪的具体陈述。例：
  We predict, on the basis of data and heuristics in §K+1:
    P1) For every prime q > 10^7 with q ≡ 1 (mod 4), <精确不等式>。
    P2) The constant c in Theorem 1 satisfies c ∈ [0.42, 0.43]。
  We invite future work to falsify P1–P2.

【§Reproducibility 硬约束】（mode 不分都必填）
- 数据文件相对路径（CSV / log / Lean / 长任务输出）
- 复现命令：uv run --with <deps> <script>
- 预期运行时长（小时为单位）
- 硬件（如 "Apple M2 Max, 32 GB"）

【Phase 1 反 bloat / 诚实四规则】（v1.5 新增，违反任一直接拦在 Stage 5 编译之前）

**R1（demote-conditional）**：主定理依赖 ≥ 2 条**不可证**的 hypothesis（含 GRH / EH / Selberg
parity / "explicit constant C 不存在" / "假设 cohomological symmetry 成立" 等）→ 主结果**必须**
降级为 "Conjecture" / "Conditional Conjecture"，不许写成 \begin{theorem}。摘要同步弱化。
单条 conditional（如纯 GRH）不触发，因为 GRH-conditional 是该领域常态。

**R2（forthcoming-flag）**：proof 任意一步含下面任意一种字眼 → 标 [unfinished_paper]，
向 main thread 报告，**禁止**进入 Stage 5 编译，回退到 prover 完成证明：
- "forthcoming"
- "we defer to Appendix A"（且该 Appendix 不存在）
- "the optimisation is technical and we omit it"
- "details will appear elsewhere"
- "useless in isolation"（除非紧跟"however, in conjunction with X 我们证明..."）
- "sketch" 出现在主定理证明里（出现在 §1 路线图 OK）

**R3（length-by-content）**：
- (a) 类新定理 = 0 → paper 长度上限 **12 页**（含 references），写超必须删
- (a) ≥ 1 → 上限 25 页
- (a) ≥ 1 且为 unconditional 主结果 → 上限 35 页
- 超长 → 标 [over-length]，触发 truncate-or-split：要么砍到上限，要么拆成主稿 + Note 两份

**R4（cite-and-Note rule）**：主定理是单篇引文（≤ 2 篇）的 corollary 时，不要写成完整 paper。
判断标准（满足 ≥ 2 即触发）：
- 主定理证明可在 ≤ 2 页内完成
- 引文给出的工具直接可代入，无需新引理
- 与引文核心结果的 gap < 20%（数值上）
触发后**改写成 6 页 Note**（投 LMS Bull / Mathematika short notes / Funct.Approx.），
不投全 paper venue（JNT/Compositio 期望原创性高）。

【硬约束】
- LaTeX article, 11pt, amsmath/amsthm/amssymb/mathtools, self-contained
  thebibliography（不写 refs.bib）
- 长度按 R3
- 摘要 ~150 字、MSC2020 代码、keywords
- 每步严格；避免 hand-waving；显式状态每个引理
- 若某步骤无法严格证明 → 明确降格为 "Conjecture" 或 "Conditional Theorem"
  并标注假设。**诚实大于野心。**
- \author{} 留空（用户后续填）

【目标期刊】<具体一个或两个；mode=A 走 research venue，mode=B 走 expository venue>

【验证】可调用 python 验证数值断言：
  uv run --with sympy python -c "..."
（galois 包在很多代理后下载失败；优先 sympy + GF modulus）
（数值规模 / OEIS / 工具升级链 → 见 Template 2 §L3.numerical）

写完后用 ≤150 字汇报：文件路径、页数估计、关键 judgment call（如某定理是否
最终降为 conditional）+ 是否触发 R1/R2/R3/R4 任一旗标 + 是否触发 "down-grade-to-B"。
**不要回传整份 LaTeX。**
```

### Reviewer agent（每方向一个，流式启动）

```
你是一位 30 年经验的终身教授，常年为 <目标期刊> 审稿。任务：审稿这份手稿。

【研究模式】mode=[A|B]

【手稿】<project>/paper_submission/paper<K>_<slug>/main.tex

【一句话主题】<同 writer brief>

【你的工作】通读 .tex 全文（一次性 Read 整文件）。**实质性**审稿：

1. 找 **未论证步骤、隐含假设、hand-wave、循环论证**。特别审视：
   - <列出 writer brief 里最容易出问题的 2-3 处>

2. **对每个问题，直接用 Edit 工具修改 .tex 文件**。不要只挑毛病；修。
   - 引理需要前置 → 加引理
   - 常数错 → 改常数
   - 引用张冠李戴 → 修引用
   - **某步真的证不了 → 把 theorem 改成 conjecture / heuristic，
     摘要同步弱化**

3. 改进 **影响证明的** 表述。不要为加而加新章节。

4. **独立复现 §Numerical 关键表**（mode=A 必做；mode=B 可选）：
   - 用与 writer **不同的实现**（不同语言 / 不同库 / 不同参数边界）
     重跑该表的关键样本点。
   - 例：writer 用 sympy → 你用 cypari2；writer 测 q ≤ 100 → 你测 q ∈ {97, 101, 103, 1009}
   - 把复现结果写到 paper<K>_<slug>/reproduction_note.md（与 main.tex 同目录）
   - 差异 > 1% 立即在 .tex §Numerical 章末加 \begin{remark}[Reproducibility]
     标 [reproducibility-fail]，并把 verdict 降到 "major revision"。
   - 完全一致：在 reproduction_note.md 写 "verified independently with <method>"。

5. **§Predictions 审视**（mode=A 必做）：
   - 每条预测是否真的可证伪？参数区间是否明确？
   - 是否过于保守（已可证）或过于乐观（明显错）？
   - 任何一条不合格 → Edit 修措辞或删除。

6. **Phase 1 R1-R4 合规审视**（v1.5 新增，mode=A 必做）：

   **R1 demote-conditional**：数主结果依赖的不可证 hypothesis：
   - 0-1 个（含纯 GRH） → ok
   - ≥ 2 个不可证 hypothesis（GRH+EH / 假设 explicit constant 不存在 / 假设 cohomological symmetry...） → 必须 demote 为 \begin{conjecture}
   - 已 demote → ok
   - 仍是 \begin{theorem} 但应 demote → Edit 改成 conjecture，标 [R1-fixed]

   **R2 forthcoming-flag**：搜全文是否含：
   - "forthcoming" / "we defer to Appendix A"（且 Appendix 不存在）/ "the optimisation is technical"
   - "details will appear elsewhere" / "useless in isolation" / "sketch"（在主定理证明里）
   - 找到 → 标 [R2-unfinished]，**强烈建议** verdict = "major-revision-not-ready"，让 main thread 决定退回 prover

   **R3 length-by-content**：
   - 数 (a) 类新定理（unconditional 主定理）数量
   - (a)=0 → 长度上限 12 页，超长 Edit 砍掉次要段落
   - (a)≥1 → 上限 25 页
   - 超长 → 标 [R3-overlength]

   **R4 cite-and-Note**：判断主定理是否单篇 ≤ 2 引文的 corollary：
   - 主定理证明 ≤ 2 页且工具直接代入无新引理且 gap < 20% → 标 [R4-corollary-note]
   - 触发 → 强烈建议 main thread 改投 LMS Bull / Mathematika short-note，**不**投 JNT/Compositio

7. **§"精确 SOTA gap 声明"审视**：
   - 是否含？格式是否符合 "Best known unconditional/conditional/This paper" 三行模板？
   - SOTA 引文是否真实存在？年份/卷期对吗？
   - "This paper" 对应的 gap 数值化是否诚实？
   - 缺或错 → Edit 修，标 [missing-sota-gap]

8. **Editor Persona 审视**（v1.5 Phase 3 新增，mode=A 必做）：

   切换 persona 为目标期刊主编，做 desk-review（3 分钟扫读，只看 §1+abstract+主定理陈述）：
   - persona 1: target journal editor（如 J. Number Theory）
   - persona 2: 上一级期刊 editor（target=B → 模拟 Compositio editor；target=C → 模拟 JNT editor）

   每个 persona 写一段：
     "Dear authors,（语气客气但毒辣）
      Thank you for submitting to [Journal]. After preliminary editorial review, ..."
     [accept-strong / accept-weak / major-revision / desk-reject 之一]
     "[一句话理由 — 这是 desk-reject 信里最重要的一句]"

   把两段写到 reproduction_note.md 末尾的 "## Editor Persona Review" 段。
   verdict 取两个 persona 的更严苛者。

9. 必要时可调 python 验证小数值断言（特别是 §Numerical 的表）。

10. 出一份 ≤400 字 referee report（v1.5 加长 100 字以容纳 R1-R4 + Editor Persona）：
    - 找到的 top 5 问题
    - 你做的修改
    - R1-R4 旗标（哪些触发了？做了什么动作？）
    - Editor Persona verdict（target tier 通过吗？上一级吗？）
    - 复现结果（mode=A 必报）
    - 你的修改后判定：是否 ready-to-submit？投到 <目标期刊> 行不行？还是该降级 / 升级？

**对严谨极其苛刻，但建设性。** 不能改进的正确证明不要瞎动。
若某证明确实站不住，**承认它并降格**——一份诚实的 conditional 论文比一份
藏 gap 的"定理"论文更可发表。
```

### Writer-harmonize agent（v1.6 Loop A — 自动触发）

**触发条件**（reviewer 完成后立即由 main thread 判断）：
- reviewer 做了 ≥ 5 处 Edit
- **或** reviewer demote 了任意 `\begin{theorem}` → `\begin{conjecture}` / `\begin{heuristic}`
- **或** reviewer 触发了 R1 / R2 / R3 / R4 任一旗标

**为什么必要**：reviewer Edit 是真世界 referee 的工作；real author 拿到 referee report 后会**自己**修 abstract / intro / §1 路线图，让全文与新版正文一致。pipeline 之前没人代替作者做这个 sync —— 直接后果就是 abstract 写"我们证明 X"但 §4 已经被改成 conjecture 的尴尬产出。Loop A 填这个 gap。

**这是 hygiene，不是 polish**：abstract 与正文不一致在任何 tier（C 到 A）都会导致 desk-reject。

```
你是 writer-harmonize agent。任务：reviewer 已经修改了 main.tex 的部分内容，
你要让全文叙述（abstract / §1 intro / 路线图段落 / discussion）与现状一致。

【手稿】<project>/paper_submission/paper<K>_<slug>/main.tex
【reviewer 修改记录】<project>/paper_submission/paper<K>_<slug>/reviewer_report.md
【reviewer 复现笔记】<project>/paper_submission/paper<K>_<slug>/reproduction_note.md

【你的工作】
1. Read main.tex 全文 + reviewer report + reproduction note
2. 找出 reviewer 改过的关键内容（demote / 删段 / 改常数 / 加 caveat 等）
3. 检查并修以下"叙述一致性"位点：
   - **Abstract**：是否还在 claim 已被 demote 的 theorem？是否声明的 SOTA gap 还匹配 §1.last？
   - **§1 Introduction**：路线图（"We prove X by combining A, B, C"）是否还提到被删的方法？
   - **§1 末尾的 §"实质贡献声明"**：(a)(b)(c)(d) 矩阵是否还反映现状？被 demote 的应从 (a) 移到 (b) heuristic
   - **§1 末尾的 §"精确 SOTA gap 声明"**：This paper 一行是否还声明 unconditional 但其实已 demote？
   - **§Numerical 章末与摘要交叉对齐**：reviewer 加的 [reproducibility-fail] remark 应在摘要 / 引言里有相应弱化
   - **§Discussion**：与其他论文的 incremental gap 表述是否过期
   - **Title**：reviewer 把主结果降到 conjecture 后 title 是否还在用 "We prove" / "An unconditional ..."?

4. 用 Edit 工具就地修。**严守边界**：
   - 不修任何数学（定理陈述 / 证明 / 引理）
   - 不加新章节
   - 不改 reviewer 已 Edit 过的段落（reviewer 的修改是权威）
   - 只修"narrative around 数学"

5. 出 ≤ 100 字汇报：改了哪几处（行号 + before→after 一句话），是否完全一致。

【硬约束】
- 不写 README / 不删 reproduction_note.md / 不动 §References
- 仅一轮（不递归），写完即返回

decision_log: [stage3.harmonize.<K>] timestamp ok|noop n_edits=<>
```

**实施细节**：
- `stage3.harmonize.<K>` 写到 paper-level `decision_log.md`
- 触发判断由 main thread 在 reviewer 返回后立即做，不等其他 reviewer
- 与流式 reviewer 兼容：每篇 paper 独立判断 + 独立起 harmonize agent
- 硬上限 1 round（再多 = 反复改 abstract，无价值）
- agent 模型：**Opus 4.7**（叙述一致性需要全局把握）

## 决策日志（可选）

如果跑超过 5 个方向，建议在 `paper_submission/decision_log.md` 同样保留实时账本：

```
[stage0]            2026-05-24 23:30   ok       n_directions=5
[stage1.sentinel]   2026-05-24 23:33   ok       7 (q,d) checked, all pass
[stage2.writer.1]   2026-05-24 23:37   ok       paper1_main, 765 lines
[stage2.writer.4]   2026-05-24 23:36   ok       paper4_ss_gap, 318 lines  ← 注意短
[stage3.reviewer.1] 2026-05-25 00:14   accept   minor revisions
[stage3.reviewer.4] 2026-05-25 00:17   reject   Lemma 3 vacuous on monics
[stage4.summary]    2026-05-25 00:18   ok       3 green, 1 yellow, 1 red
```

## "三色"判定标准（Stage 4）

| 颜色 | 标准 | 操作建议 |
|---|---|---|
| 🟢 绿 | reviewer 给 "accept after minor revisions" | 走投稿流程 |
| 🟡 黄 | reviewer 给 "major revision"，主要定理仍有效但需补强 | 修一轮 reviewer 提的问题后再投 |
| 🔴 红 | reviewer 发现 fatal flaw（循环论证 / 主引理 vacuous / 主定理被降为 conditional 但依赖未证猜想） | 退回 Template 2 重做该方向，或大幅收窄 scope 改投副刊 |

## Stage 5：编译 PDF（main thread）

Stage 4 汇总完成后，main thread **直接调** `tools/latex_compile_papers.sh` 把所有 `paper_submission/paperN_*/main.tex` 批量编译成 PDF：

```bash
# 首次：装齐 BasicTeX 上的 CTAN 包（一次性，约 200 MB）
bash /Users/l/Git/3_P/20260522_math/tools/latex_install_packages.sh

# 编译该 topic 的全部论文
bash /Users/l/Git/3_P/20260522_math/tools/latex_compile_papers.sh \
     <project>/paper_submission
```

脚本约定 / 行为：
- 找到 `<paper_submission_dir>/paperN_*/main.tex`（Template 3 的标准布局）
- 跑两遍 `pdflatex -interaction=nonstopmode`（让 `\ref` / `\cite` 收敛）
- 每篇报告 `size · pages · pdf path`
- 失败时打印 `main.log` 末 10 行（最常见原因：缺 CTAN 包，跑一次 `latex_install_packages.sh` 即可）
- 退出码：全部成功 = 0，否则非零

main thread 在 Stage 5 的责任：
1. **Phase 1 反 bloat 拦截**（v1.5 新增，**编译前**必做）：
   - 检查 reviewer report 中是否含 `[R2-unfinished]` / `[unfinished_paper]` 标记 → **跳过该 paper 的编译**，标 `[stage5.skip.r2]` 进 decision_log，告知用户该 paper 退回 prover 完成证明
   - 检查是否含 `[R3-overlength]` → reviewer 应已 truncate；若 PDF 仍 > R3 上限，编译后追加 `[stage5.warn.r3]` 一行
   - 检查是否含 `[R4-corollary-note]` → 编译正常但在 Stage 4 状态表里把 target journal 改成 short-note venue
   - 检查 writer 自报是否含 `down-grade-to-B` → Mode 切换 B 后才编译
2. 跑脚本，捕获输出。
3. 把"成功 N 篇 / 失败 M 篇"和每篇页数追加到 Stage 4 的五色状态表（多一列 `📄 pages`）。
4. 失败篇分流：读 `main.log` 末段，判断属于哪类：
   - **(a) 缺 CTAN 包** → 提示用户跑一次 `latex_install_packages.sh`，再重跑 `latex_compile_papers.sh`。不起任何 agent。
   - **(b) writer 写出真正的 LaTeX 错误**（缺 `\end{...}`、未定义命令、math mode 错配等）→ main thread **新起一个 reviewer-fixup agent**（见下方 prompt）。**注意**：原 reviewer agent 在 Stage 3 已 return 退出，无法 resume；这里是**独立的新 agent**，只拿 main.tex 路径 + log 末段作为输入，不继承 Stage 3 reviewer 的上下文。
5. **不要让 writer/reviewer agent 自己编译**——它们的 sandbox 里没有 TeX 引擎，只会浪费 token。编译一律由 main thread 调脚本完成（lessons #5 已更新）。

### Reviewer-fixup agent prompt（仅在 Stage 5 失败时启动）

```
你是一位 LaTeX 排版工程师。任务：修一份编译失败的手稿，使其能通过 pdflatex。

【手稿】<project>/paper_submission/paper<K>_<slug>/main.tex
【编译日志末段】
<贴入 main.log 末 30 行>

【你的工作】
1. Read 整份 main.tex
2. 根据 log 定位编译错误（缺 \end{...}、未定义环境、math mode 嵌套错、
   非法字符、未导入的宏包等）
3. 用 Edit 工具就地修 main.tex
4. **绝不**修改数学内容、定理陈述、证明逻辑、引用文献。只修排版 / 编译错误。
   若发现 log 显示的错误根源是数学内容（如错误的 \frac 嵌套且无法机械修复），
   写一行注释 "% [stage5 fixup] math content issue at L<NN>, escalating"，
   不动那一段，由人工介入。
5. 用 ≤100 字汇报：改了哪几处（行号 + 错误类型），是否完全修好。

【硬约束】
- 不要重新组织段落、不要改章节标题、不要改 thebibliography 条目
- 不要碰 §Numerical 节的数值
- 不写 README，不写新文件
```

### 失败回灌循环的硬上限

- **每篇 paper 最多 2 轮 fixup**。第 2 轮仍失败 → main thread 写 `[stage5.escalate]` 进 `decision_log.md`，**停止自动 loop**，把 main.log 末段 + 已尝试 fixup 的列表给用户人工介入。
- 这个上限防止 fixup agent 在数学内容相关的编译错误上反复无效尝试，也防止两轮 fixup 累计花费失控。
- 跑完 fixup 后必须**立即重跑 `latex_compile_papers.sh` 验证**——只看 agent 自报"修好了"不算数，编译退出码 = 0 才算。

注：脚本用的是 macOS BasicTeX 路径（`/Library/TeX/texbin/`），文档见 `tools/latex_setup.md`。Linux 上把 `path_helper` 那段删了 / 用 `texlive-full` 即可。

## Stage 6（可选）：Deep Audit Loop C — 用户 opt-in

**触发**：Stage 5 PDF 编译完成、Stage 4 五色汇总打出后，main thread **主动**询问用户。**不**默认触发。

**为什么 opt-in**：Loop C 的边际价值随 paper tier 变化大。

| Paper tier 期望 | Loop C 价值 | 推荐 |
|---|---|---|
| C tier (Experimental Math / Integers) | ~0（advocate 修补已够） | skip |
| B tier (JNT / Math.Comp / Acta Arith) | 中等（major→minor revision 边际） | light 即可 |
| A tier (Compositio / Crelle / FoM Pi) | 高（决定 accept / reject） | full 必跑 |
| S tier (Annals 系) | 不可替代 | full 必跑（但 pipeline 仍达不到 S） |

强制全跑会浪费 C/B tier 的预算；强制不跑会让 A tier 不及格。让用户根据每篇 paper 的 verdict + Editor Persona 输出决定。

**询问脚本**：

```
✅ Template 3 已完成。Stage 4 五色状态：
  paper1_<slug>: 🟢 (target=JNT, Editor Persona=accept-weak)
  paper2_<slug>: 🟡 (target=Math.Comp, Editor Persona=major-revision)
  paper3_<slug>: 🔴 (target=Exp.Math, Editor Persona=desk-reject)

要不要跑 Loop C deep audit？这是个**作者自审**模拟，让 prover 重读自己的证明、
找 [handwave] / [GAP]、必要时自修。

选项：
  1. skip 全部（推荐 C tier paper / 急投稿 / 探索性命题）
  2. light：所有 GO paper 跑自审标注（不改 main.tex，输出 audit 报告）
            ~每篇 +$1 / +5 分钟
  3. full：选定 paper 跑自审 + 自修 + 重新编译
            ~每篇 +$3 / +20 分钟
            **强烈推荐**给 target = Compositio / Crelle / FoM Pi 的 paper

格式：[1 / 2 / 3:paper1,paper3 / mix:1=light,3=full]
```

只在用户明确回答后才启动。

### Stage 6.1 — light 版（自审标注，不改文件）

```
你是 paper-deep-audit-light agent。

【手稿】<project>/paper_submission/paper<K>_<slug>/main.tex
【writer 原 prompt 关键约束】<复制 Writer brief 里的 §"实质贡献声明" + R1-R4>

【你的工作】
1. Read 整份 main.tex 一次
2. 重读 §3-§K 技术核心部分，对**每条引理 / 定理 / 关键 step** 标一个等级：
   - [solid] —— 证明完整，能过严苛 referee
   - [handwave] —— 看似合理但跳了步骤，referee 会问
   - [GAP] —— 真有未补的缺口，应在 §1 显式声明
   - [redundant] —— 此引理对主定理无贡献，应删
3. 同时检查：
   - §"精确 SOTA gap 声明"的 SOTA 引文是否真实（年份 / 卷期）
   - §Predictions 每条是否真可证伪
   - 摘要 vs §1 末尾"实质贡献声明"是否一致
   - 标题用词是否过强（"We prove" vs "We conjecture"）

【输出】写到 paper<K>_<slug>/audit_light.md：
## Step-by-step audit
| Step | 等级 | 备注 |
| §3.1 Lemma | [solid] | OK |
| §3.2 Step 4 | [handwave] | "by symmetry" 跳了 — 应说明哪个对称 |
| §4.1 Theorem 主定理 | [solid] | |
| §4.2 Cor 1.2 | [redundant] | 与 §3.4 Lemma 等价 |

## Identified weaknesses (top 5)
- ...

## 推荐动作
- [ ] §3.2 Step 4 补充对称性论证（30 分钟工作量）
- [ ] §4.2 Cor 1.2 删除或合并到 §3.4

**不**修改 main.tex。仅输出 audit 报告供用户决定。

decision_log: [stage6.audit-light.<K>] timestamp ok n_handwave=<> n_gap=<>
```

### Stage 6.2 — full 版（自审 + 自修 + 重编译）

```
你是 paper-deep-audit-full agent。

【手稿】<project>/paper_submission/paper<K>_<slug>/main.tex
【已完成的 audit-light 报告】（如有，optional）paper<K>_<slug>/audit_light.md
【writer 原 prompt 关键约束】<同上>

【你的工作 — 4 round 内循环】

Round 1（自审）：
- 同 audit-light 流程，对每条 step 打标
- 找出 ≥ 3 个 [handwave] 或 [redundant] 候选

Round 2（外审模拟）：
- 切换 persona：你是来自竞争 group 的 referee，对作者抱有适度怀疑
- 对 Round 1 标的 [solid] 步骤再挑 ≥ 1 个隐藏问题
- 对 [handwave] 步骤要求"作者补充"
- 对 [GAP] 步骤问："作者真有 plan to fix 还是装作没看到？"

Round 3（自修）：
- 针对 Round 1+2 找到的所有 [handwave] / [redundant]：
  - 能补严的 → Edit main.tex 补充论证
  - 不能补的 → 在 §1 末尾的 §"实质贡献声明" 显式承认 [GAP]，降级相应定理
  - [redundant] → Edit 删除

Round 4（终审 + harmonize）：
- 重新自审 Round 3 修改后的 main.tex
- 检查叙述一致性（abstract / intro / Predictions 是否还对）
- 必要时 Edit 修 narrative

【硬约束】
- 全程 ≤ 4 round，超过 abort 标 [audit-stuck]
- **不**改 reviewer 已 Edit 过的段落（reviewer 是权威）
- **不**改 §References 引文条目
- **不**降级 Mode A → Mode B（这是 user 决定）

【输出】
- 修改后的 main.tex（直接 Edit）
- paper<K>_<slug>/audit_full_report.md：
  ## Round 1-2 findings
  ## Round 3-4 changes (with line numbers)
  ## Remaining acknowledged GAPs

main thread 收到 audit_full_report 后**重跑** `latex_compile_papers.sh` 验证编译。

decision_log: [stage6.audit-full.<K>] timestamp ok|stuck rounds_used=<> changes_made=<>
```

**Stage 6 后 main thread 责任**：
1. light 跑完 → 把 audit_light.md 摘要追加到 Stage 4 五色表
2. full 跑完 → 重跑 `latex_compile_papers.sh`；如失败走 Stage 5 reviewer-fixup loop
3. 把 Stage 6 verdict 写进 decision_log
4. 提示用户："Stage 6 完成。最终 PDF 在 ...。准备 Stage 5（skill 阶段 5）发布到 public/research/explore/ 吗？"

## 输出目录约定

```
<project>/paper_submission/
  paper1_<slug>/
    main.tex                    # writer + reviewer 双轮编辑
  paper2_<slug>/
    main.tex
  ...
  decision_log.md               # 可选实时账本
  REVIEW_REPORTS.md             # 可选：把 5 份 reviewer report 拼起来
```

**不要**写：
- `README.md`（项目已有顶层笔记）
- 单独的 `refs.bib`（self-contained `thebibliography` 即可）
- 编译产物（`.pdf / .aux / .log`）——这是 Stage 5 main thread 调脚本生成的，writer/reviewer agent 不要碰

## 实战 lessons（从 Legendre P4 → 5 papers 的复盘）

1. **数值哨兵必须前置**。Template 2 笔记里 §4 数值表的 $|I_f|$ 列其实有归一化不一致，但"every f passes"的核心结论是对的。Stage 1 跑一遍 sympy 直接确认了哪部分可信。
2. **writer agent 的"诚实"约束是关键**。第一次跑时几乎所有 writer 都倾向把"研究笔记里的想法"写成"定理"。**brief 里写死"诚实大于野心"** 后，Paper 2、3 主动降为 conditional，paper 4 也老实标了 heuristic。
3. **reviewer agent 必须 Edit in place**。如果只让 reviewer 出 critique，writer agent 不会主动改。Edit 工具权限要先给好。
4. **5 篇论文里"红"那一篇恰好是研究笔记里最具"启发性新发现"的方向**。研究笔记的"亮点"往往是 sketch 而非证明，写成正式 paper 时细节会崩——这是预期内的，不是失败。
5. **不要让 writer / reviewer agent 自己跑 "compile and verify PDF"**。它们的 sandbox 里没有 TeX 引擎，会浪费 token。Stage 5 由 main thread 直接调 `tools/latex_compile_papers.sh` 批量编译，失败再回灌给 reviewer 补 Edit。
6. **paper4_ss_gap 类的"短 paper"应单独走**。318 行的短稿和 800 行的主稿用同一份 brief 不公平——短稿应有更紧的篇幅约束 + 更窄的主定理。

## 风险与局限

- **writer 倾向 over-claim**：必须在 brief 里硬性要求 "honest about conditional vs unconditional"。Sonnet 默认乐观。
- **reviewer 可能错过形式正确但实质平凡的引理**（如 paper 4 的 Lemma 3：η 在 monic 上恒为 1）。reviewer brief 里要列出"特别审视点"。
- **N > 5 时 main thread 上下文紧张**。建议分批（每批 ≤ 5），或为每批起独立 main thread。
- **reviewer 修改后不会重跑 writer**。如果 reviewer 删了大块内容，论文结构可能变得不平衡。Stage 4 应人工通读每份 reviewer report，必要时手动平衡。
- **审稿"通过 ≠ 真的发得了**：reviewer agent 不是真期刊编辑。3 绿稿真投出去仍可能被 desk reject。本流程是把论文从"能不能写"提升到"该投哪里"，不是从"完美"提升到"录用"。

## 何时该用，何时不该用

**用**：
- Template 2 已输出含"关键发现 + 可发 paper 方向"明确清单的笔记。
- 想一次性把所有方向跑成草稿（避免后续逐个手写时遗漏）。
- 重视审稿环节给出的"哪些方向其实不该投"——这经常是最有价值的产出。

**不用**：
- 只有一个方向想写 → 直接手写或单个 writer agent 即可，不需要并行。
- 笔记尚未确定主定理 → 退回 Template 2 把 L5 决策走完。
- 已有完整 LaTeX 草稿想审稿 → 只起 Stage 3 reviewer 部分。

## Stage 4 汇总表（Legendre P4 实例）

| # | 方向 | 审稿后 verdict | 目标期刊 |
|---|---|---|---|
| 1 | 函数域 Legendre 主定理（Weil + 切片，$q>2d$） | 🟢 accept after minor | FFA |
| 2 | 无条件扩展 $q\geq 2$ | 🟡 unconditional 仅至 $d\le 7$；切片估计降为猜想 | Math. Comp. 数值短文 / 重写 |
| 3 | 函数域 Gowers $U^k$ 框架 | 🟡 major revision，Thm B 指数降为 $1/(4(d+1))$ | JNT / Mathematika |
| 4 | S–S $q^\varepsilon$ gap 代数起源 | 🔴 Lemma 3 vacuous on monics | 大幅收窄 → FFA note，或重做 |
| 5 | 整数 Legendre benchmark roadmap | 🟢 适宜（综述定位） | L'Enseign. Math. / Expo. Math. |

3 绿 / 2 黄 / 1 红的混合结果是健康的。如果 5 篇全是绿，**几乎一定是审稿 agent 偷懒**。
