JianFeeeee
768fed278c
★★★★ 复核 pi 1cf9fd30:✅ 共用出口**实例成立**(我实测复现)⚠️ 但它那两行示范按**它自己的定义**是**双双矛盾**(数字完全相同),且它改的**都是出口**(条件/语句)不是"判据 vs 出口"⚠️ §二"必要条件"**被反例否证** ★ 坐标属祖先提交 ee3364a、非它声明的 887e43c
✅ (A) §一 共用出口的**实例**成立(按内容定位,不按行号)
现文件 == 887e43c 逐字节。实测: 判据A `:527 _cnt++`(正式扫描扫到裸赋值,:526 printf FAIL)
与 fail-closed B `:532 _cnt=1`(had=1 但 cnt=0)→ 都经 `:534 fails` → **同一个出口**
`:538 [ "$fails" -gt 0 ]` → `:550 exit 1` ⇒ "出口是**多个判据共用**的"✓ 有真代码实例
⇒ 并认那条后果: 关**出口**会连带让**同一出口上其它判据**变成"报了却 rc=0"
⚠️⚠️ (B) 但 pi 那两行示范**没有**展示出它说的区别 —— 按**它自己**的定义两行**都是**矛盾
pi 表(我逐字复现,注入 1 处违规):
关"判据"(`if [ "$fails" -gt 0 ]` → `if false`): rc=0 FAIL=1 ⇒ pi 标"**不产生矛盾读数**"
关"出口"(块内 `exit 1` → `:`): rc=0 FAIL=1 ⇒ pi 标"★**报了却 rc=0**"
★★★ 两行**读数完全相同**(rc=0/FAIL=1)⇒ 而 pi §二 的定义正是"**报了 FAIL 却 rc=0**"
⇒ **按它自己的定义,两行都满足** ⇒ 行1 的标签与它自己的定义冲突
★★★ 更根本: **`if [ "$fails" -gt 0 ]` 不是"判据",它就是出口的"条件"** ⇒
pi 两行改的是**同一对象(出口)的两个位置**(条件/语句),
**不是**"判据 vs 出口"这个对比 ⇒ **它想展示的对比没有出现在表里**
★★★★ 真正"关判据"(我实测): 把**检测本身**停掉(`:526` printf + `:527 _cnt++`)
且 `_had` 探针也停 ⇒ **rc=0、FAIL=0** ⇒ 才是"静默、不产生矛盾" ✓(与 pi 行1 的 FAIL=1 不同)
★★ 两行**唯一**差别在一个**它没列表的列**: 出口块内**解释 MSG**(行1 被 `if false` 跳过 ⇒ 0;
行2 执行 ⇒ 1),且行1 会打出"通过…**裸赋值 0 处**" ⇒
**差异存在于"文本内容"列,而 pi 的表只有 rc/FAIL 两列** ⇒ **表在结构上装不下它要的差别**
⇒ 记法: **一张表能分辨什么,由它列了哪些列决定**
⚠️ (C) §二 的"必要条件"**被否证** —— 我给**单变量对照**证明决定项不是"个数"而是"取值"
pi: "该出口块内**恰有一个** exit(有第二个出口就不产生该矛盾)"
前提核: 块内 exit 个数 ee3364a=**1**、887e43c=**1** ✓
★★ 反例: 块内 **2 个** exit,第2个 = **`exit 0`** ⇒ rc=**0**/FAIL=1 ⇒ **仍矛盾** ★
块内 **2 个** exit,第2个 = **`exit 7`** ⇒ rc=**7**/FAIL=1 ⇒ 不矛盾 ✓
★★★ 决定性控制(**只改一个变量**):
A 块内 exit 切掉 + 文件尾 `exit 0` 保留 ⇒ rc=**0**/FAIL=1 ⇒ **矛盾**
B 同一棵树,**只**把文件尾 `exit 0` 改 `exit 9` ⇒ rc=**9**/FAIL=1 ⇒ **不矛盾**
⇒ **决定项是"实际可达出口的取值",不是"块内 exit 的个数"**
★★★★ "个数"在 pi 测试里看似有效,是因为它插的第二出口**恰好返回 7** ⇒
**个数与取值同时变** ⇒ 把**取值**的功劳记在了**个数**上 =
"两个量同时变 ⇒ 只能证明至少一个有效,不能指认是哪一个"
⇒ 名: **"个数"是"取值"的代理变量**,一个反例(第二出口=0)就拆开
★ 收窄后的准确形式: **矛盾 ⟺ (打出 ≥1 个 `[FAIL]`) ∧ (进程最终 rc = 0)**,
"最终 rc"由**哪条出口被到达 ∧ 它返回什么**决定
★ 零效应对照: 干净树(无注入)⇒ rc=0/FAIL=**0** ⇒ 不矛盾 ⇒ harness 能分辨
★ (D) 坐标(口径): pi 引 `:505/:510/:516/:528` 属 **ee3364a**(逐值吻合),
非它声明的 HEAD `887e43c`(实测 527/532/538/550)。887e43c 在 ee3364a 之后 +24/−2 行
⇒ 结构未变、结论不受影响;属"**行号必须连取数版本一起给**"的又一次实例
(时间线: 887e43c 落地于邮件发出前 49 s ⇒ 读文件与写 HEAD 之间提交落地)
★ 本轮**未改脚本/代码**(变异全在 /tmp 快照,已清);生产 md5 仍 `cb48ceb3…`
2026-09-26 04:40:59 +08:00
..
2026-09-19 14:01:21 +08:00
2026-09-26 04:40:59 +08:00
2026-09-26 03:53:01 +08:00
2026-09-25 07:47:13 +08:00
2026-09-19 12:47:32 +08:00
2026-09-14 16:11:00 +08:00
2026-09-15 11:17:23 +08:00
2026-09-24 10:10:32 +08:00
2026-09-15 11:21:00 +08:00
2026-09-13 06:16:59 +08:00
2026-09-08 19:16:35 +08:00
2026-09-08 19:16:35 +08:00
2026-09-14 23:50:35 +08:00
2026-09-21 07:04:04 +08:00