四值判定模型
用途:给 Agent 的产出一个诚实的结论,避免“未验证”被折叠成“通过”
为什么二值不够
「为什么二值不够」小节链接只有“通过/失败”时,系统会被迫把“没跑测试”“环境不可用”“命令超时”归入某一类。实践中它们常被归入“通过”(乐观默认),于是沉默的未知变成了成功。
四个值
「四个值」小节链接| 值 | 含义 | 触发条件 | 后续动作 |
|---|---|---|---|
| 通过 PASS | 要求的证据齐备且满足门槛 | 全部必需检查项成功且达阈值 | 允许合并/交付 |
| 失败 FAIL | 有明确反证 | 编译错误、测试失败、断言缺失、规则违反 | 退回修复 |
| 阻塞 BLOCKED | 无法执行(环境或依赖问题) | 依赖服务不可用、命令超时、权限缺失、输入不完整 | 修环境或换路径,不计为完成 |
| 未验证 UNVERIFIED | 执行了但证据不足 | 缺少必需检查、覆盖率低于阈值、测试被跳过、无法在干净环境复现 | 补证据,不得当作通过 |
核心纪律:只有 PASS 才是完成;BLOCKED 与 UNVERIFIED 都不得进入交付流水线。
判定规则的表达
「判定规则的表达」小节链接verdict := if any(check.status == FAIL) -> FAIL elif any(required check == BLOCKED) -> BLOCKED elif any(required check missing or metric below threshold) -> UNVERIFIED else -> PASS要点:
- 必需检查项显式声明(哪些检查是 required),否则“没做”会被当成“不需要”。
- 阈值可配置且版本化(覆盖率下限、最少断言数、基准倍数)。
- 缺失即未验证:检查未运行不等于通过——这是 fail-closed 与 fail-open 的分水岭。
- 不可降级合并:禁止把 UNVERIFIED 显示为“部分通过”或与 PASS 合并统计。
呈现与统计
「呈现与统计」小节链接| 呈现方式 | 问题 |
|---|---|
| 只显示“完成/未完成” | 折叠了未知 |
| 用绿色表示“没跑” | 视觉误导 |
| 统计成功率时把 UNVERIFIED 计入分子 | 指标虚高 |
正确做法:四值各自计数与看板,报表里“通过率 = PASS / 总数”,并单列“未验证率”作为质量红线指标——未验证率高说明流程有洞,而不是模型好。
与置信度的关系
「与置信度的关系」小节链接模型的自我置信度打分不能替代四值判定:置信度是主观声明,判定是客观状态。二者可以并列展示(用于观察校准情况),但绝不能互相折算。
常见误区
「常见误区」小节链接| 误区 | 修正 |
|---|---|
| “没报错就是通过” | 没运行 ≠ 通过,归 UNVERIFIED |
| 环境不可用算失败 | 应归 BLOCKED,责任在环境不是产出 |
| 用三值(加“部分通过”) | 部分通过仍是不确定,拆成 PASS/UNVERIFIED 更清晰 |
| 阈值临时下调以放行 | 需审批并留痕,否则阈值失去意义 |
| 让 Agent 自己填判定值 | 判定必须由门禁工具产生 |
延伸阅读
「延伸阅读」小节链接- 本站:fail-closed 门禁设计、完成的证据层级
- 可靠性工程中的 fail-safe / fail-secure 与 fail-open 讨论