| name | verification-before-completion |
| description | 完成前验证门禁。当准备声称工作完成、修复完毕或通过测试时使用;提交前、创建 PR 前、或声明任何成功状态前强制使用。要求运行验证命令并确认输出后才能做任何成功声明——证据永远先于断言。 |
| paths | [] |
| priority | high |
完成前验证
核心理念
核心原则: 证据先于断言,无例外。
违反本规则的字面意义就是违反本规则的精神。
铁律
无新鲜验证证据,不得声称完成
如果本轮消息中未运行过验证命令,不得声称通过。
门禁函数
声明任何状态或表达满意之前:
1. 识别:什么命令能证明这个声明?
2. 运行:执行完整命令(新鲜、完整)
3. 读取:完整输出,检查退出码,数失败数
4. 验证:输出是否确认了声明?
- 如否:以证据陈述实际状态
- 如是:以证据陈述声明
5. 然后:做出声明
跳过任何一步 = 撒谎,不是在验证
常见失败
| 声明 | 需要 | 不足 |
|---|
| 测试通过 | 测试命令输出:0 失败 | 之前跑过、"应该能通过" |
| Lint 干净 | Lint 输出:0 错误 | 部分检查、推测 |
| 构建成功 | 构建命令:exit 0 | Lint 通过、日志看起来不错 |
| Bug 修复 | 测试原始症状:通过 | 代码改了、假定修好了 |
| 回归测试有效 | 红绿循环已验证 | 测试通过一次 |
| 需求满足 | 逐行对照清单 | 测试通过 |
红色警报 — 停止
- 用"应该""大概""似乎"等词
- 验证前表达满意("好了!""完美!""搞定了!"等)
- 准备提交/推送/创建 PR 但未验证
- 信任模型成功报告
- 依赖部分验证
- 觉得"就这一次"
- 累了想完成工作
- 任何暗示成功但未运行验证的措辞
合理化防御
| 借口 | 现实 |
|---|
| "现在应该能工作了" | 运行验证 |
| "我有信心" | 信心 ≠ 证据 |
| "就这一次" | 没有例外 |
| "Lint 通过了" | Lint ≠ 编译 |
| "模型说成功了" | 独立验证 |
| "我累了" | 疲惫 ≠ 借口 |
| "部分检查够了" | 部分证明不了任何事 |
| "措辞不同所以规则不适用" | 精神重于字面 |
关键模式
测试:
✅ [运行测试命令] [看到: 34/34 通过] "全部测试通过"
❌ "现在应该能通过" / "看起来正确"
回归测试(TDD 红绿):
✅ 编写 → 运行(通过) → 回退修复 → 运行(必须失败) → 恢复 → 运行(通过)
❌ "我写了回归测试"(未做红绿验证)
构建:
✅ [运行构建] [看到: exit 0] "构建通过"
❌ "Lint 通过了"(lint 不检查编译)
需求:
✅ 重读计划 → 创建清单 → 逐条验证 → 报告差距或完成
❌ "测试通过,阶段完成"
何时应用
始终在以下操作前:
- 任何成功/完成声明变体
- 任何满意表达
- 任何关于工作状态的正面声明
- 提交、创建 PR、任务完成
- 移至下一任务
规则适用于:
- 精确短语
- 同义和近义表达
- 成功的暗示
- 任何暗示完成/正确的通信