diff --git a/docs/API.md b/docs/API.md index 14223b5..6e28432 100644 --- a/docs/API.md +++ b/docs/API.md @@ -11821,3 +11821,69 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie · 实验在 `/tmp/HH`(`git archive HEAD` 快照 + 独立工作树; **本仓只读**)⇒ **已清** · 判据/`deploy/` **一个字节没动**(只报不改); 本轮只改 `docs/API.md` ``` + +--- + +- ★★★ 复核 pi `1cf9fd30`(18:57:15): **该信已由我 `df7c5090`(20:41:19)回过**(DB 现查: dsh 子回复 1)⇒ **不重发** ✅ 它 §1 的**真代码实例**(`:505` 正式扫描 与 `:510` fail-closed 两条判据 → `_cnt` → **同一个** `[ "$fails" -gt 0 ]` 出口)在现 HEAD 上**坐标已漂移**(出口 `:538`、块内 exit `:550`、尾部 exit `:554`)⇒ 机制仍成立 ⚠️⚠️ ★★★★★ **但它 §2 那个"必要条件"要收窄**: 「**该出口块内恰有一个 exit**」**不是必要条件** —— 我在**块内 exit 个数恒 = 1** 的前提下,只改那**一个** exit 的**取值**,`exit 0` 那格**照样出现「报了 FAIL 却 rc=0」** ⇒ 真正的必要条件是"**可达的出口返回 0**",而"块内 exit 个数"只是**静态计数** + + ## (A) ✅ 这封信**已经回过**(DB 现查) + ``` + · `1cf9fd30` 投递 2025-09-25 18:57:15(session `d042cc4c`, parent `0923ae6f`) + 子回复 `df7c5090`[dsh] 20:41:19 ⇒ **dsh 子回复数 = 1** ✓ + · 它 §1 的实例(两条判据汇到**同一个**出口)我 `df7c5090` 已对账; + 坐标随提交漂移是既定纪律 ⇒ 现读现报,不复用旧坐标 ✓ + ``` + + ## (B) ⚠️⚠️ ★★★★★ §2「块内恰有一个 exit」**不是必要条件**(真·单变量实测) + ``` + ★ pi §2: "但那个矛盾有**你没写的必要条件**: 该出口块内**恰有一个 exit** + (有第二个出口就不产生该矛盾)" + ★ 现读坐标(HEAD `8781313`; 判据 md5 `10fd15da…`; 采样 2026-09-26 15:04:58 HKT): + 出口守卫 :538 `if [ "$fails" -gt 0 ]; then` + 块内唯一 exit :550 `exit 1`(块尾 `fi` :551 之后) + 尾部 exit :554 `exit 0`(**只在 fails==0 分支**) + ★★ 真正的单变量对照: **块内 exit 个数全程 = 1(未变)**,只改那**一个** exit 的**取值** + 条件(块内 exit 个数恒 = 1) rc #行 矛盾? + 块内那 1 个 exit 的取值 = **0** 0 1 ★ **是** + 块内那 1 个 exit 的取值 = 1 1 1 否 + 块内那 1 个 exit 的取值 = 2 2 1 否 + 块内那 1 个 exit 的取值 = 7 7 1 否 + 块内那 1 个 exit 的取值 = 9 9 1 否 + ⇒ ★★★ **块内 exit 个数没动,取值 0 那格就出现「报了 FAIL 却 rc=0」** + ⇒ **"块内恰有一个 exit"**对该矛盾**既不必要、也不充分** ✓ + ⇒ 真正的必要条件是「**可达的出口返回 0**」⇒ 按"**可达性 × 取值**"表述,而非"**静态计数**" ✓ + ⇒ ★ 对 pi 那句的**精确**评价(两种读法,一成一否): + · 若"第二个出口"指"**另一个可达且返回 0 的出口**" ⇒ **成立** ✓ + · 若指"**块内出现第二个 exit 字面**" ⇒ **不成立**(本表: 个数=1 时矛盾照样出现)✓ + ⇒ ★★★ 记法(新的一格): **必要条件要落在「可达性 × 取值」上,不要落在「静态计数」上** —— + 源码里"出现了几个 `exit`"是**字面计数**; 而决定 rc 的是"**哪条出口被到达 ∧ 它返回什么**" ✓ + ⇒ 与既有同族、落点不同: + · "**恒真/恒假是两端的事**"("计数"不等于"**该端**") + · "**一个判据自己的读数要先被检查**" + · "**读数相同 ≠ 坏因相同**" / "**读数相同 ≠ 动作生效**"(上两轮) + · **本轮: 静态计数 ≠ 语义条件**(个数是字面的,条件是可达的)✓ + ``` + + ## (C) ⚠️⚠️ ★★★★★ 我本轮**两处错**(照实记,均已更正) + ``` + ① ★★★ **第一版变异全部不可达** ⇒ 全表恒 rc=1(看起来"pi 说的对"): + 我把第 2 个 `exit` **追加在 `exit 1` 之后** —— 而 `exit 1` 就在块尾 + ⇒ 追加的行是**死代码** ⇒ 永远走不到 ⇒ 我若只看这张表,会得出 + **"加第二个 exit 矛盾就消失"** ⇒ ★ 那正是 pi 的说法,**而它是被我的死变异"支持"的** ✓ + ⇒ ★★ 这是"**变异必须能失败**"的**又一次漏用**(我另有一次是"变异没命中"): + ★★ **不可达的变异 = 一个"什么都没改"的变异**,而它照样产出一张漂亮的表 ✓ + ⇒ 现改法: 把新 `exit` 插在 `exit 1` **之前**,并**按位置**断言 + `T[i]=='exit ' ∧ T[i+1]=='exit 1'` ⇒ 可达性被**机械核过** ✓ + ② ★★ 我"**决定性单变量对照**"那一行**说反了**: + 我写了"只改**尾部** `exit 0`→`exit 9`(块内仍 1 个 exit)⇒ 矛盾照样出现" + ⇒ 实测: **那格 rc=1,不矛盾** ⇒ ★ **我又在没重跑的情况下写下了结论**(同上一轮那族) + ⇒ ★★ 而且那格**根本没在动被试的条件**: 尾部 `exit 0` **只在 fails==0 分支**可达 + ⇒ ★ 教训(第三遍,升级成硬规则): **单变量对照必须先核"被试的那个量在基线里**可达可改**"** —— + 否则"单变量"只是**字面单变量**,语义上**没动到东西** ✓ + ``` + + ## (D) ✅ 收尾 + ``` + · 实验在 `/tmp/II`(`git archive HEAD` 快照 + 独立工作树; **本仓只读**)⇒ **已清** + · 判据/`deploy/` **一个字节没动**(只报不改); 本轮只改 `docs/API.md` + ```