--- name: verifying-completion description: 用于完成验证(verify completion),以及声明修复或测试通过、提交、创建 PR、核实子代理结果之前。 --- # 先证据后结论 声称任何状态之前,先获得**最新证据**:在本轮运行能够证明该状态的命令,并阅读输出。 这条规则约束的是含义,而不是措辞:换一种说法(“应该好了”“看起来没问题”“搞定”)仍然是在声明完成,同样需要证据。 ## 检查步骤 ``` 声称任何状态或表示满意之前: 1. 确定:什么命令能证明这个说法? 2. 运行:重新完整地运行它 3. 阅读:完整输出,检查退出码,统计失败数 4. 核对:输出是否支持这个说法? - 不支持:说明真实状态,并附上证据 - 支持:给出结论,并附上证据 5. 完成以上步骤后,再给出结论 ``` ## 什么证据证明什么 | 说法 | 需要的证据 | 不足以证明的内容 | | -------------- | -------------------------------------------------------- | ------------------------------ | | 测试通过 | 测试命令输出:0 失败 | 之前某次运行结果、“应该能过” | | lint 无问题 | lint 输出:0 错误 | 部分检查、推断 | | 构建成功 | 构建命令:退出码 0 | lint 通过、日志看起来正常 | | bug 已修复 | 复现原始症状的反馈回路:现在通过 | 代码已修改、认为已经修好 | | 回归测试有效 | 红绿验证:撤销修复后失败,恢复后通过 | 测试通过过一次 | | 子代理已完成 | 版本控制 diff 显示了预期改动,关键命令由你亲自重新运行过 | 子代理报告“成功” | | 需求已满足 | 逐条对照规格或开发任务验收标准全部通过 | 测试全部通过 | | 功能项已完成 | 任务验收标准全部满足,对应测试套件全部通过 | 仅实现了主流程、未验证边界情况 | | 覆盖完整 | 当前批次功能项均有对应任务与验收标准覆盖 | 覆盖表是自己填写的 | | 非功能需求达标 | 规格中验证命令的本轮输出达到目标值 | “应该够快”、本地手感 | | 页面符合设计 | 关键交互与界面形态对照设计稿或原型核对一致,无明显偏离 | 页面能打开、组件库渲染正常 | ## 需求、功能项与页面核对 需求和功能项按清单逐条核对:重读规格,对照功能清单与设计依据,按任务验收标准逐项核验,验证关键业务链路与核心分支。 只核对当前批次:功能清单中延后到更晚批次的功能项不算缺口,但要在汇报中说明它们留到哪个批次。 涉及界面交互时,对照设计依据或原型核对关键交互与视觉形态;发现偏离时列出具体差异并修正。环境受限无法运行图形界面时,说明缺少哪些交互证据,并写出用户可以在本机运行的测试或预览命令,不虚构验证结论。 ## 表述方式 - 证据充分:直接给出结论并附上证据,例如“`pnpm test`:142 通过,0 失败”。 - 证据不足:说明验证了什么、没有验证什么,例如“单元测试已运行并通过;端到端测试需要浏览器,本环境无法运行”。 - 证据相反:说明真实状态,例如“3 个测试仍然失败,输出如下”。 ## 常见借口与对应事实 | 借口 | 事实 | | -------------------- | -------------------------------------------------------- | | “应该没问题了” | 运行验证命令 | | “我很有把握” | 把握不是证据 | | “lint 过了” | lint 不检查编译,需要运行构建 | | “子代理说成功了” | 独立核对 diff 和命令输出 | | “刚才运行过了” | 刚才的运行只能证明刚才的代码状态,需要对当前代码重新运行 | | “只检查一部分就够了” | 部分检查只能证明那一部分,要把验证范围说清楚 | | “其他分支差不多” | 没有证据的场景就是没有验证,列为缺口 | | “大体符合设计” | 对照设计依据核对关键交互与视觉规范,把差异逐条写出来 |