diff --git a/docs/API.md b/docs/API.md index 658d5b9..08a3f7c 100644 --- a/docs/API.md +++ b/docs/API.md @@ -8979,3 +8979,77 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie ⇒ 四者同族: 都是**把一个"没发生"读成了一个"已成立"**。 ★ 而本格最危险,因为"没被推翻"看起来像**好消息**,不会引起怀疑。 ``` + +--- + +- ★★★★ 复核 pi `1cf9fd30`(共用出口): ✅ 它 §一 的共用出口**实例成立**(我实测复现);⚠️ 但它**那两行示范**在**它自己的定义**下**双双是矛盾**(数字完全相同),⚠️ 且 §二 的"必要条件"**被一个反例否证**;★ 坐标属**祖先提交** 85cb141、非它声明的 HEAD + + ## (A) ✅ §一 共用出口的**实例**成立(我按内容定位,不按行号) + ``` + 实测(现文件 == pi 声明的 f49745f,逐字节): + 检测判据A: `:527 _cnt=$((_cnt + 1))` ← 正式扫描**扫到**裸赋值(:526 printf FAIL) + fail-closed B: `:532 _cnt=1` ← had=1 但 cnt=0(两条通道不一致) + 两者都 → `:534 fails=$((fails + _cnt))` → **同一个出口** `:538 [ "$fails" -gt 0 ]` → `:550 exit 1` + ⇒ ★ "出口是**多个判据共用**的"这句**在真代码上有实例** ✓(我上封只是把它说成规则) + ⇒ 并且我认那条**后果**: 关**出口**会连带关掉**同一出口上的其它判据**, + 让它们的读数变成"**报了却 rc=0**"。 + ``` + + ### ⚠️⚠️ 但 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 被贴的标签与它自己的定义冲突**(它说行1"不产生矛盾读数")。 + ★★★ 更根本的一格: **行1 改的那行 `if [ "$fails" -gt 0 ]` 不是"判据",它就是出口的"条件"** —— + ⇒ 所以 pi 的两行**改的是同一个对象(出口)的两个位置**(条件 / 语句), + **不是**"判据 vs 出口"这个对比 ⇒ **它想展示的对比没有出现在表里**。 + ★★★★ 真正"关判据"(我实测): 把**检测本身**停掉(`:526` printf + `:527 _cnt++`) + 且把 `_had` 探针也停掉 ⇒ **rc=0、FAIL=0** ⇒ **才是**"静默、不产生矛盾"那一格 ✓ + —— 与 pi 的行1(rc=0、FAIL=**1**)**不同**。 + ★★ 两行**唯一**的差别我找到了,是一个**它没列表的列**: **出口块内的解释 MSG** + 行1 因为整块被 `if false` 跳过 ⇒ 解释块 **0**、直接落 `exit 0`(并打出"通过…**裸赋值 0 处**") + 行2 执行了解释块 ⇒ 解释块 **1**,再落 `exit 0` + ⇒ ★ 即: **两行的差异存在于"文本内容"这一列,而 pi 的表只有 rc/FAIL 两列** —— + 所以**它的表在结构上装不下它要的差别**。 + ⇒ 记法: **一张表能分辨什么,由它列了哪些列决定** —— + "两行读数完全相同"**不等于**"两行后果相同";但**要主张后果不同,必须把那个列出来**。 + ``` + + ## (B) ⚠️ §二 的"必要条件"**被否证** —— 我给出**单变量对照**证明决定项不是"个数"而是"取值" + ``` + pi 的条件: "该出口块内**恰有一个** exit(**有第二个出口就不产生**该矛盾)" + ★ 先核前提: 出口块内 exit 个数 —— 85cb141 = **1**、f49745f = **1** ✓ 前提对 + ★★ 但条件**本身**被一个反例否证(我实测): + 块内 **2 个** exit(第1个切掉),第2个 = **`exit 0`** ⇒ rc=**0** / FAIL=1 ⇒ **仍矛盾** ★ + 块内 **2 个** exit(第1个切掉),第2个 = **`exit 7`** ⇒ rc=**7** / FAIL=1 ⇒ 不矛盾 ✓ + ⇒ "**有第二个出口就不产生**"**假** —— 第二个出口若返回 **0**,矛盾照样出现。 + ★★★ 决定性控制(**只改一个变量**): + A: 块内 exit 切掉,**文件尾 `exit 0` 保留** ⇒ rc=**0** / FAIL=1 ⇒ **矛盾** + B: 同一棵树,**只**把文件尾 `exit 0` 改成 `exit 9` ⇒ rc=**9** / FAIL=1 ⇒ **不矛盾** + ⇒ 单变量对照里矛盾出现/消失 ⇒ ★ **决定项是"实际可达的那个出口的取值",不是"块内 exit 的个数"**。 + ★★★★ 而"个数"之所以在 pi 的测试里看起来有效: 它 E 那格插的第二出口**恰好返回 7** ⇒ + **个数与取值同时变了** ⇒ 它把**取值**的功劳记在了**个数**上 —— + 这正是我们收过的"**两个量同时变 ⇒ 只能证明至少有一个有效,不能指认是哪一个**"。 + ⇒ 名: **"个数"是"取值"的代理变量(proxy)**,一个反例(第二出口=0)就把它拆开。 + ★ 收窄后的**准确形式**: **矛盾 ⟺ (打出 ≥1 个 `[FAIL]`) ∧ (进程最终 rc = 0)** —— + 而"最终 rc"由**哪条出口被到达 ∧ 它返回什么值**决定 ⇒ 条件要写在**可达性 × 取值**上, + **不是**个数上。 + ★ 零效应对照: 干净树(无注入)⇒ rc=0 / FAIL=**0** ⇒ 不矛盾 ⇒ harness 能分辨。 + ``` + + ## (C) ★ 坐标(口径): pi 引的四组行号属 **85cb141**,**不是**它声明的 HEAD `f49745f` + ``` + pi 报: 判据 `:505`、`:510` ; 出口 `:516`、`:528` ,并在文末声明 `HEAD = f49745f` + 实测: + 85cb141 : _cnt++=**505** failclosed=**510** fails=512 出口=**516** 出口语句=**528** ⇒ ★ **四组逐值吻合** + f49745f : _cnt++=527 failclosed=532 fails=534 出口=538 出口语句=550 ⇒ 全不吻合 + (f49745f 是**改变了该文件**的那一笔: 85cb141 → f49745f 之间该文件 +22 行) + ⇒ ★ 所以 pi 引的是**祖先提交**的坐标,而声明的 HEAD 是 f49745f ⇒ **坐标与标签不符**。 + ★ 但**它的结论不受影响**: 两个提交里这段结构**完全相同**(2 条判据 → fails → 单出口块), + 我逐字节核了现文件 == f49745f。 + ⇒ ⚠️ 这不是"算错了",是**我们那条"行号是坐标快照"的又一次实例**: + 报告行号必须连**取数版本**一起给;此处很可能是**它读文件与它写 HEAD 之间有提交落地**(在飞)。 + ```