# contract.md — 先盲后明物理分离 + 反谄媚硬协议

本文件定义两条**强制执行序**，防止"被 idea 叙事带跑"和"被作者反驳就软化"。SKILL.md 把它们写成可执行步骤。

## A. 先盲后明（Blind-then-Open，物理分离）

借 academic-paper-reviewer 的 Sprint Contract，但**强化为物理信息隔离**：Phase 1 只允许看 idea 的 stub，不许看正文。

### Phase 1 — BLIND（只给以下三项，不给方法/实验/结论）
输入仅限：
- idea **标题**
- **领域 / 子领域**
- **关键词**（≤8 个）

Phase 1 必须产出（且只能产出）：
1. **验收维度清单**：照 rubric.md 八维度，用自己的话写下"这个题目要打到通过，每一维需要看到什么具体证据"。
2. **block 触发条件**（硬否决，命中即最高"有条件通过"或"不通过"）：例如"若创新点是已成熟的 A+B 直接拼接且无非平凡适配""若验证所需数据现实拿不到"。
3. **warn 触发条件**（软警告，命中需在判决里点名）：例如"若只在单一数据集验证""若 baseline 可能未对齐超参"。
4. 结尾输出一行字面量：`[CONTRACT-ACKNOWLEDGED]`

未输出 `[CONTRACT-ACKNOWLEDGED]` 不得进入 Phase 2。Phase 1 期间若不慎获得正文信息，作废本轮，重启。

### Phase 2 — OPEN（给全文打分）
拿到 idea 全文后：
- 按 rubric.md 八维度逐条打 0–100 + 理由（指到点、给反例、给替代解释）。
- **若 Phase 2 的实际打分偏离 Phase 1 预设的验收标准/触发条件**（例如 Phase 1 说"无机理就判 <45"，Phase 2 却想给 70），**必须先输出 `Scoring Plan Dissent`**：写明哪一维偏离、偏离方向、为什么正文证据值得改判。无 Dissent 而擅自偏离 = 协议违规。
- 命中 Phase 1 的 block/warn 条件必须显式点名"命中 block#/warn#"。

物理分离的意义：标准在没看叙事前就钉死，作者的精彩叙述无法回头改写验收线。

---

## B. 反谄媚硬协议（Anti-Sycophancy，作用于 Devil's Advocate 与反驳环节）

作者/用户必然会反驳。本协议把"让步"变成需要打分和配额的受限动作，杜绝"一被怼就软"。

### 反驳应答 1–5 评分制
作者每提出一条反驳，Devil's Advocate（或对应视角）必须先给该反驳打 1–5 分，再据此响应：

| 评分 | 反驳质量 | 强制响应 |
|---|---|---|
| **5** | 反驳给出新证据/检索，直接证否原质疑 | **撤回**原质疑，记入 concession |
| **4** | 反驳有理但只部分成立 | **降级**严重度（CRITICAL→MAJOR 等），保留剩余关切 |
| **3** | 反驳是合理澄清但没消解核心担忧 | **保持**原质疑，复述为何仍成立 |
| **2** | 反驳是重述原文/换措辞，无新信息 | **重述**原质疑，指出反驳未触及要害 |
| **1** | 反驳回避问题/诉诸权威/转移话题 | **加强**质疑，点名其逻辑谬误 |

### 三条硬约束
1. **禁连续让步**：不得对同一作者的连续两条反驳都给 ≥4（撤回/降级）。第二条若也想让步，必须先证明它独立地拿到了新证据，否则按 ≤3 处理。
2. **concession-rate 自检与报警**：本轮所有反驳里，给 4 或 5（即让步）的比例 = concession-rate。**> 50% 必须自报警**：输出 `⚠ SYCOPHANCY-ALERT: concession-rate=XX%`，并重新审视是否在迎合作者而非证据。可用 `scripts/sycophancy_guard.py` 计算。
3. **让步必须挂证据**：任何 4/5 的让步都要写明"基于哪条新证据/哪次检索"。无证据的让步一律降为 ≤3。

### 与判决的关系
反谄媚协议跑完后，**未被 5 分反驳撤回的 CRITICAL** 仍然有效，按 rubric.md 否决项压顶判决。即"作者说得我没话讲"不等于"质疑消失"——只有拿到 5 分新证据才算真正化解。
