# 检查点机制

阶段之间的关卡。两类，作用不同，都不能静默跳过。

## 决策点 🧑（用户选分支）

阶段产出后，**下一步怎么走需要用户拍板**，编排器停下、给出选项、等用户选。编排器不替用户决定研究方向、结论、投稿去向。

典型决策点：
- m03→m04 后：idea 不过关，**回 m03 重提** 还是 **微调放行**？
- m13 后：投哪个 venue（不同 venue 后续写法/周期不同）？
- m12 前：输出什么格式（LaTeX / Word / PDF）？
- 任何"AI 给了几个选项、必须人选一个"的地方。

呈现方式：简明列出选项 + 每个选项的后果，让用户选。不要长篇分析后替用户下结论。

## 确认点 ✓（机器先验，用户确认）

阶段产出后，**先跑机器闸门**，出一份 PASS/FAIL 报告，用户确认后才推进。这是 self-review / consistency / research-ethics 等常驻闸门在 pipeline 里的显式落点。

流程：
1. 跑该阶段对应的闸门检查（见下表）。
2. 出报告：每项 通过✓ / 不通过✖ / 警告! + 严重级。
3. **不达标处理**：
   - Critical 项 → **阻断**，必须修。同一阶段最多 **2 轮整体返修**（一轮 = 把该阶段所有 Critical 项一起修一遍再复检，不是每个 claim 单独计 2 轮）。
   - 2 轮后仍有 Critical 未达标 → 转为"已知局限"如实记入台账，**不假装修好**，并明确告知用户。
   - Important/Minor → 记录，用户可选择带病推进（写入台账）。
4. 用户确认报告 → 推进。

### 各阶段闸门对照

| 阶段 | 主要闸门 | 阻断条件（Critical） |
|------|----------|----------------------|
| 数据评估 | a10 + a08 + `check_access_level.py` | 数据泄漏、train/test 污染、raw 数据流向公开 sink |
| 实验 | a08 证据闸门 | 结果不可复现、指标异常高未排查 bug |
| 结果分析 | a08 | 统计方法错误、过度解读 |
| 写作 | **诚信门**（m07 integrity_gate）| claim 无源、幻觉引用/结果（M2/M3）|
| 引用 | m10 verify_citation_edge + **locator 审计** | 引用查无此文、key/DOI 对但原文不支撑该句（`unsupported`）|
| 排版 | a08 | 编译报错 |
| 跨阶段 | a07 consistency | 术语/指标/创新点跨材料不一致 |

## 分级：什么时候不卡

轻任务（单技能闭环）不需要显式检查点——常驻闸门照常后台跑即可。检查点是 pipeline 专属机制，目的是防止跨阶段交接时跳步、漏验、静默带病推进。宁可在关键处卡死，也不在无关处空设关卡。

闸门内部的力度也分档：确认点调用 a08 self-review 时，按其**分级执行档**取力度——重产出阶段（出整节、有数字结论、对外交付、改代码）跑全量 11 项；阶段内的轻微改动跑最小三项（证据/事实/夸大）。判据见 `light-self-review/SKILL.md`「分级执行档」节，单一口径在那边，本表不复写判据。

## 断点恢复探针（SKILL §0 的全文）

用户说"继续/刚断了"时，先跑这六探针拼出"当前事实状态"再行动：

1. **工作区与版本**：读 `git status --short`、`git log --oneline -5`、当前分支、remote；若有 GitHub remote，再读最近 CI（如 `gh run list --branch <branch> --limit 3`）。
2. **当前任务单**：读取当前 Todo/TodoWrite/todo 工具状态；若没有，就从 passport、db09、最近提交重建最小任务单。
3. **项目台账**：优先读项目根目录 `.light/passport.yaml`；没有则读 `databases/db09-projects/projects/<project_name>/project_card.md`、`decision_log.md`、`version_history.md`。
4. **对话/外部交接**：只在两种情况下检索 transcript：①用户明确给出 Claude/Codex/Hermes 对话记录路径；②缓存路径/会话标题/项目 slug 与当前仓库或 db09 项目名明确匹配。检索时限定关键词为当前项目名、仓库路径、最近任务关键词；无法证明相关就标 `transcript: unavailable`，不得猜测不存在的记录，不读无关项目会话。
5. **产物与脏文件**：读相关 manifest / plan / diff / 未提交文件，判断"已完成但未提交""已提交但未推送""已推送等 CI""CI 失败待修"等状态。
6. **恢复摘要**：继续前先内部形成五项事实：`当前阶段`、`已完成`、`未完成`、`阻塞/风险`、`下一步最小动作`。若下一步有副作用（提交、推送、重写历史、删除文件），按范围纪律确认或确保用户已授权。

某探针（gh/CI/todo/transcript）不可用不当硬阻断，标 `unavailable` 用其余证据继续。严禁：只凭聊天记忆说"应该到 X 了"；重跑已完成阶段（除非用户要求或产物失效）；看到未提交改动直接覆盖（先读 diff 辨本轮遗留还是用户新改）。
