diff --git a/docs/API.md b/docs/API.md index 5d3e165..d4d7451 100644 --- a/docs/API.md +++ b/docs/API.md @@ -6390,3 +6390,48 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie ⇒ 实用差别很大: 若"确定性",测一次就够、可预算;若"竞争", **一次绿不构成"这条路径没问题"** —— 必须**重复**或**改掉写法** ``` + +--- + +- ★★★★ 再更正: 我在 `9bf5776` 里写的"决定项是**匹配点之后**的字节数"**也被我自己的实验推翻** —— + 同一份文件、同样的前/后字节数,**只换生产者进程**,结果从 0/100 跳到 90/100: + + ## (A) 决定性对照: 同文件同字节数,只换生产者 + ``` + deploy/redeploy-gateway.sh(注入裸赋值后): 原 31115B,strip 后 11833B + 生产者 141 出现 + cat **0/100** ← 同文件、同字节数 + sed 's/#.*$//' **90/100** ← 同文件、同字节数 + ★ 两轮重复: cat 0/100、0/100;sed 90/100、86/100 ⇒ 稳定复现 + ⇒ ★ 若"匹配点之后的字节数"是决定项,两者**必须同结果**(字节数完全一样) + ⇒ 我的规则**被这个对照直接证伪** + ``` + ## (B) 我随后找到的**真正相关量**: 生产者**每次 write 的块大小** + ``` + 同一份数据(110898B、匹配@第 1 行)、同一总量,只改写入块大小(每格 60 次、三轮): + 生产者 轮1 轮2 轮3 + dd bs=512 55/60 54/60 52/60 + dd bs=4096 5/60 13/60 11/60 + dd bs=16384 12/60 10/60 4/60 + dd bs=65536 **0/60** 0/60 0/60 + cat **0/60** 0/60 0/60 ← cat 用大块(典型 128KB) + sed -n p 32/60 ... ← sed 小块 + ※ 管道缓冲实测 F_GETPIPE_SZ = **65536B** + ⇒ 形状: **写块越大 ⇒ 越不容易 141**(一次 write 装进 64KB 缓冲 ⇒ 读者退出前写者已写完) + 写块小 ⇒ 写者要多次 write ⇒ 读者退出后仍有数据要写 ⇒ EPIPE + ⇒ ★ 这**同时解释了 (A)**: cat 用大块、sed 用小块 ⇒ 同字节数、不同结果 + ⚠️ 但它**不是干净的单变量**: `dd bs=16384`(4–12/60) 与 `bs=4096`(5–13/60) 区间重叠, + 而 `bs=512`(52–55/60) 明显更高 ⇒ 方向明确、但**我未定出阈值**,也不声称它是唯一因素 + ``` + ## (C) 两次更正的关系(我连错两次,方向相反) + ``` + ① pi 说: 决定项 = **匹配点之前**的字节数 ⇒ 我用 2×2 证伪(前大/后小 ⇒ 0/40) + ② 我说: 决定项 = **匹配点之后**的字节数 ⇒ 被"同文件换生产者"证伪(字节数相同、结果 0 vs 90) + ⇒ ★ 两次都错在**同一个方法论**: 我从"某个量变了、结果也变了"推出"那就是决定项", + 而**没有做"控制该量不变、只改另一量"的对照**。 + (A) 的对照之所以有效,正因为它**冻结了字节数**——而这恰恰是我前两次都没做的。 + ⇒ 记法: **"相关"要升级成"决定",必须有一个"该量不变而结果仍变"的反例被排除**; + 我前两次都是**只做了正向相关观察就下了因果结论**。 + ⇒ 与我 `94bfec3` 那条("同一个观察,结论方向被我读反")不同: 那次是**读反**, + 这次是**把相关当因果** —— 同源(证据强度不足就下结论),不同面。 + ```