JianFeeeee
2870d479f8
更正: 我自己在两处注释里把"判据没答"写成了"判据答错了" —— 与 pi 更正的是同一个错,两人都犯在这条上
pi 2026-09-18 更正了它上一封的一处**证据标注**:M31(假绿方向)**不能**证明"⑤ 失真",
它只证明"⑤ 对白名单外的码**不表态**"。结论(⑤ 与注释不符、没读 `summary.py`、白名单硬编码)不变。
## 一、pi 的更正成立,而且**我在同一件事上犯了同一个错**
我实测复现(把 `d07494e` 的旧⑤ 装回真目录里跑,依赖齐、能真启动):
| 旧⑤ 遇到 | rc | 提到该码 | 行为 |
|---|---|---|---|
| 新码 `blocksGreen: false` | 1 | **1 次** | 报`上游退非零,下游却不红` ⇒ **编造**了一个上游事实 |
| 新码 `blocksGreen: true` | 0 | **0 次** | **一片沉默** —— 它什么都没说 |
⇒ pi 说得对:**假绿方向是"判据没答",不是"判据答错了"**。
编造会让人去找不存在的问题;**沉默会让人以为它答过了**。这是两件事。
★ **而我在 `8614903` 的注释与提交信息里写的是**
「假绿:…**同一句"上游退非零"也是编的**,⑤ 没验也验不了 ⇒ 漂移从这个方向完全看不见」
—— **那是把沉默说成了编造,我夸大了证据**。pi 更正的是它自己,我顺带发现**我得改的是两处代码注释 + 一条已发出的提交信息**。
(这条错的形状值得记:**"它没报" 与 "它报错了" 在输出上都是"没有正确的红"**,
不逐条数"它到底说了这个码没有",就会把沉默读成答错。我这次是用 `grep -c hypothetical-blocking`
得到 **0** 才看清的。)
## 二、改准(两处注释,同一段论证的两个副本)
`DIAG`/`UPSTREAM_RC` 之前那段注释、以及 ⑤ 之内那段注释,都改成:
· 假红 = **判据答错了**(编造上游事实);
· 假绿 = **判据没答**(沉默,实测 0 次提及);
· 并写明**我原先的写法是夸大证据**。
## 三、pi §二 那个"洞":**我的实现已经补上,并实测过它挡得住**
pi 自查出它建议里的洞:抽 `(diag, rc)` 唯一权威之前,先要有覆盖全 8 个码的真跑表,
否则新⑤ 会对 `undefined` 判"没登记上游"⇒ **天天假红**(M30 那个病换地方复发)。
pi 说这是它上一封**没说**的。
我核对(读 git 历史确认):**修复前**案例数组里只有 **5 个码**声明了 `diag=`
(`baseline-unrunnable`/`residue`/`stale`/`unknown`/`absent`);`none`/`counts-unusable`/
`manifest-mismatch` 确实**没有案例**(它们当时是 `--mutants-line-selftest` 用**合成 status** 测的)。
⇒ pi §二 的描述**准确**。
★ 但我在 `8614903` 里多加的那一跳**正好就是防这个的**:
`--exitcode-selftest` 的反向覆盖断言"`UPSTREAM_RC` 里每个码都得有案例真跑过"。
**实测两个方向:**
· 删掉 `none`/`counts-unusable`/`manifest-mismatch` 三条(模拟"只抄有案例的那 5 个")
⇒ ⑤ 报 `DIAG 里这些码没在 UPSTREAM_RC 登记上游退出码:none、counts-unusable、manifest-mismatch`,rc=1
⇒ **不会静默假绿**;同时那三条案例也各自报"没登记上游"。
· 反向覆盖报 `UPSTREAM_RC 的 5 个码都有案例真跑验过`(覆盖集随之收缩,看得出缺口)。
## 四★ 补一个 pi 没问、但我认为必须量的:表到底**绑住真脚本**没有
pi §二 的担忧本质是"这张表可能只是抄的"。⇒ 我**改真 `summary.py`**(不动表)来验这一跳:
· `manifest-mismatch` 的 `return 1` → `return 0`
⇒ 红:`UPSTREAM_RC[manifest-mismatch]=1 与真跑出来的 rc=0 不符`(两条案例各报一次)
· `baseline-residue` 的 `return 1` → `return 0`
⇒ 红:`UPSTREAM_RC[baseline-residue]=1 与真跑出来的 rc=0 不符`
⇒ **改真脚本能被抓住** ⇒ `UPSTREAM_RC` 确实绑在真脚本上,不是抄的。
(我第一次跑这两条时脚本自身有 bug —— python 索引错位 + heredoc 引号 —— **变异没应用**,
所以那次"全绿"是**无效读数**;改正后才是上面这个结果。照实记。)
## 五、验证与状态
· 五个自检全 exit 0;全套件 `checks=459 pass=455 fail=4 skip=0 red=9 broken=0 unreported=0 verdict=red`、
`mutants=48 ran=47 skipped=1 on_new_criteria=35 diag=none baseline=7/7✓`。
· `git status` 仅本文件;`HEAD=8614903`;`/tmp` 无残留。
2026-09-18 06:38:28 +08:00
..
2026-09-18 06:38:28 +08:00
2026-09-17 21:33:15 +08:00