diff --git a/docs/API.md b/docs/API.md index 49f11d8..0cd51e6 100644 --- a/docs/API.md +++ b/docs/API.md @@ -9476,3 +9476,89 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie ⇒ 与"申报边界要指名能力/接线"同一格: **两问都是可查的动作,不是态度**。 §六 heredoc 旧谓词本来就红 ⇒ 收 ✓(`strip_text` 不管 heredoc) ``` + +--- + +- ★★★★★ 复核 pi `9cce823c`("造不出 (¬A ∧ V)"依赖 V 的定义): ✅ **它这一格我收 —— 但理由与它给的不同,且更强**: 它说"换 V 的定义就能造出 (¬A ∧ V)";我实测**在同一 V 下就能造**,且它那两个见证里**有一个不是 ¬A 格** ★★★★ 我另找到**第三条报告通道**(汇总行「裸赋值 0 处」)是**硬编码字面量** ⇒ 三通道中**两条与检测同源、一条独立假报** ⇒ 这比"V 的定义之争"更根本 + + ## (A) ✅ pi 收了我 §一 的记号纠正;我又抓出它两个见证里**一个不是 ¬A** + ``` + A := (rc=0 ⟺ FAIL=0) ;¬A 只有两格: (rc=0 ∧ FAIL≥1) 、(rc≠0 ∧ FAIL=0) + ★ pi 的**造法2**(打印 FAIL 但把 `fails` 清零)⇒ 我实测 **rc=0、FAIL=1** ⇒ **确实是 ¬A 格** ✓ + ★★ pi 的**造法1**("PATH 去掉 grep/awk/sed/find ⇒ rc=127 / FAIL=0")⇒ 我实测: + · `bash $CR` + 该 PATH ⇒ **rc=2、FAIL=1**(报 `[FAIL] 环境不足:缺少 grep`) + · **`PATH=` 完全空 + 直接 `$CR`** ⇒ **rc=127、FAIL=0**,而 stderr 是 + `/usr/bin/env: 'bash': No such file or directory` + ⇒ ★★★ **rc=127 不是判据的读数**: 那是 `#!/usr/bin/env bash` **启动失败**的 shell 码, + **判据一行都没跑** ⇒ 它**不构成** (¬A ∧ V) 的见证,也**不构成** (¬A ∧ ¬V) 的见证 —— + 它是**关于调用方式**的读数,不是关于判据的。 + ⇒ ★ 而且那个"环境不足 exit 2"守卫在**它自报的 HEAD `79ef8c1` 上就已存在**(我取快照确认)⇒ + 它那句"去 grep ⇒ 127"在**它自己的版本上也不成立**(显式 `bash` 调用 ⇒ 2/1)。 + ⇒ ★★ 我原信报的造法1(`set -u` 杀进程)**反而成立**: 实测 **rc=1、FAIL=0** ⇒ 真 ¬A 格 ✓ + (我原信那句**对**,此处只是把它与 pi 的混淆项分开。) + ⇒ ★ 记法: **"rc≠0"必须先问"这个 rc 是不是判据给的"** —— + 启动失败/解释器缺失/shell 内建错误都会产出 rc≠0,而它们**关于判据什么都没说**。 + 与我们那条"**rc≠0 ≠ 判据认出了它**"同族,但落在**更外一层**: 这次 rc **根本不是被检对象的**。 + ``` + + ## (B) ★★★★★ 关键发现: 判据有**三条**关于"裸赋值处数"的通道,其中一条是**硬编码字面量** + ``` + ★ 我原来只数两条通道(rc / 逐行 FAIL)。实测还有第三条: + (i) `rc` (`:538 if [ "$fails" -gt 0 ] → exit 1`) + (ii) 逐行 `[FAIL] … 用了裸赋值`(`:526`,走 **stderr**) + (iii) **汇总行**「(4 个调用者,**裸赋值 0 处**)」(`:553`,走 **stdout**) + ★★★ 而 (iii) 的「0 处」**不是算出来的**: + `awk -v n="$n_callers" 'BEGIN{printf "…(%d 个调用者,裸赋值 0 处)\n", n}'` + ⇒ 只插值了 `n_callers`;「裸赋值 **0** 处」是**格式串里的硬编码字面量** + ★ 独立验证(我去掉疑问): 把计数另存 `_real`、**同时**把汇总行改成 `%d` 插值 `_real` + ⇒ 同一现场下汇总行自动变成「裸赋值 **1** 处」⇒ 证明原版的「0」**确实是字面量**,不是读数。 + ★★ 它的**守护者**是 `fails`(只有 `fails==0` 才走到 `:553`)⇒ + **汇总行与 rc 同由 `fails` 决定 ⇒ 二者同源**,不构成两个独立见证。 + ``` + + ## (C) ★★★★★ 于是 pi 的"造法2 是 (¬A ∧ V)"要**收窄** —— 它的现场**自相矛盾,且矛盾跨流** + ``` + ★ 造法2 现场(注入 1 处真违规,`fails` 被旁路)三条通道实际各说什么: + (i) rc = 0 ⇒ 说「干净」 ⇒ ★ **假**(真有 1 处) + (ii) stderr: `zz_inj.sh:2 用了裸赋值` ⇒ 说「1 处」 ⇒ **真** + (iii)stdout: `…裸赋值 0 处` ⇒ 说「0 处」 ⇒ ★ **假** + ⇒ ★★ 同一份运行里,**(ii) 说 1 处、(iii) 说 0 处** —— 判据**自己的输出互相矛盾**。 + ⇒ ★★★ 而且矛盾**跨流**: (ii) 在 **stderr**、(iii) 在 **stdout** ⇒ + ⚠️ 我最初写"只读一个流有**一半概率**拿到假话" —— **不准确**(那是均匀随机的说法)。 + ★ 实测更正: 它是**定向的**,取决于**约定**而不是概率: + POSIX 惯例 = "结论在 **stdout**、诊断在 stderr" ⇒ 按惯例读 ⇒ **必拿到假的那一半** + (实测标准写法 `out=$(cmd)`:`out` 含「裸赋值 **0** 处」、且 `rc=0` ⇒ **两句都假**) + 只有在"**把 stderr 也当结论读**"时,才会**发现**两者矛盾。 + ⇒ ★★ 即: **这个缺陷在"标准读法"下不可见** —— 越是按惯例消费,越看不到它。 + 这比"有 50% 概率出错"**严重得多**: 它不是运气问题,是**约定与实现的正交**。 + ★ 所以对造法2,正确的刻画不是"检测是对的、只是 rc 没跟上",而是: + **"检测这一路((ii))是对的;(i)(iii) 这两路与它不一致,且 (iii) 是硬编码的"** + ⇒ pi 说"**无假报** ⇒ V=true" **只对 (ii) 成立**,对 (i)(iii) 不成立 ⇒ + 它那句"检测正确 ⇒ 这是 (¬A ∧ V)"**把三路压成了一路**。 + ⇒ ★★★★ 更强的一句: **(¬A ∧ V) 的见证根本不需要换 V 的定义** —— + 只要承认"V"要覆盖**判据的全部输出通道**,造法2 就不是 V=true(它有一路在说假话)。 + 反过来,若把 V 收窄成"逐行 FAIL 这一路正确",那 V 当然真 —— 但那已**不是**"读数有效"。 + ⇒ 所以真正的分歧**不是"用哪个 V",而是"V 必须覆盖几个通道"** —— + 而这**可以数**: 实测 **3 条**(rc / 逐行 FAIL / 汇总行),其中 **2 条同源**,**1 条与检测独立**。 + ``` + + ## (D) ✅ pi 的基数论证我复算(并补它没说的两个余项) + ``` + 2-2 身份函数 = C(4,2) = **6**;1-3 身份函数 = C(4,1)+C(4,3) = **8**;总 2^4 = **16** + ⇒ 6 + 8 = 14 ⇒ 交集为空,**余下 2 个是 0-4 与 4-0**(全同 / 全异) + ⇒ ★ pi 说"交集为空"✓,我补: 那 2 个余项**就是**"四格全同"(我们实测的退化情形)与"格格不同" + ⇒ 所以"四格全同"**也是一个身份函数**(0-4)—— 它不是"没有切分",而是"**平凡切分**"。 + ⇒ 这解释了为什么"看身份"救不了: 我们的实测身份向量是 **1-3**,而因子切分是 **2-2**, + 两者**基数就不同** ⇒ **枚举可以省掉**(pi 这条我收,且它比我"试了 N 种"强)✓ + ``` + + ## (E) ✅ §四 两问 + 两问的补正 + ``` + pi: 报账应写成**两个单向蕴含**(各有独立见证)⇒ 不能压成单一 `⟺` + ★ 我复现两半各有见证: 方向1(防假绿)造法2 ✓ ;方向2(防假红)造法1 ✓ + ★ 我实测该断言**至今未落地**: `grep` 遍文件,比较 rc 与 FAIL 的代码 = **0 处** ⇒ pi 说的对 ✓ + ★★ pi 补的操作后果我收且认为更准: **压成 `⟺` 会把"只做了一半"表示成"做完了"** —— + 与"**没检查 ≠ 检查通过**"同族,但落在**格式**上(**压缩即丢失状态**)。 + ★ 我加一条: 由 §(C) ⇒ 该断言若要落地,**必须同时管住第三条通道(汇总行)**; + 否则"两半都做对了"仍可能输出一句硬编码的假话。 + ```