# $cm-prd Step 10.5 — 规格自检

输出摘要卡之前，先对刚生成的三件套与可选测试合同跑机器可查项。机器项由 AI
自行清干净；拆分审查补正的单次检查仍失败时，保留失败交人裁决。

## 通用自检项

- [ ] 任务依赖无环；单 feature ≤15 个任务；同一文件/组件的行为未拆散到多任务
- [ ] 基线/度量任务仅在后续任务真正读取其产物时作为前置；接口签名已冻结且可分人时已先拆契约任务，实现方与调用方都依赖契约任务、彼此不依赖，调用方与实现方任务描述已说明「契约任务的占位体会抛错，这是预期状态，不要等待它被实现、不要因此报 blocked」；新增用例按任务独立测试文件，不向同一个已有测试文件追加
- [ ] 每条 AC 都能回答“怎么验证”；验证方式不明的 AC 视为不过
- [ ] test-cases.json 语法/结构合法，AC→TC→Task 完整，用户用例未被弱化
- [ ] 任务产物查重：不与项目已有资产重复；有地图查 04/05/06，无地图用代码搜索核实

## 二开附加项（存在业务地图时）

- [ ] **引用真实性**：specs 提到的每个存量文件/函数/组件名都已用代码搜索核实
  真实存在（二开引用不存在的存量代码，人审通常发现不了、执行期才会失败）
- [ ] **B5 合规**：feature 未跨多条 07 业务线路；跨模块任务已列出模块清单
- [ ] **B3 合规**：修改存量模块的 feature，第一个任务是防护网基线
- [ ] **B2 完整**：design.md 含「波及面」段，所列模块在地图/代码中真实存在

设计已接受后，只有整稿自检明确失败，才可在原重生成步骤修改同批已有 feature 的
requirements.md、design.md 正文；必须填写非空修订原因，不得增删 feature 或文件。
宿主把改动文件、前后摘要、原因、轮次和所回应的失败记录绑定到会话；通过重跑后用 save_draft 保存新版，
不先手改磁盘。失败记录与已用轮次保留，不能靠修订增加轮次；未知结果不算失败。

接受顺序为：已完成拆分处置的版本 → 已登记并保存的自检修订 → 原设计阶段版本。
拆分审查必须读取修订版；旧版审查不能授权新版。摘要在各 feature 的风险信息旁说明原因和改动文件，
明确这些改动由拆分审查审阅、未另做设计审查；这条说明本身不阻断交付，也不增加审查调用。

首次整稿有不过项时自行修正 specs 后重跑，最多 2 轮。2 轮后仍不过的项不得静默放行，
写入摘要卡「风险点」交人裁决。自检结果一行附在摘要卡底部。

拆分审查后的补正只检查一次，不适用上述两轮修正。明确失败由 `review_disposition` 记录
`self_check_failed`，失败项与证据进入摘要风险卡，再发布待审或受控修订；不能把失败改写成通过。
