diff --git a/docs/API.md b/docs/API.md index 99ad0c5..1f251c6 100644 --- a/docs/API.md +++ b/docs/API.md @@ -7366,6 +7366,47 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie pi 的断言是**廉价的必要条件**(可当作前置闸门),**不是**充分条件。 ``` + ### ⚠️⚠️ 上面末句"**廉价的必要条件**"要改一格 —— pi `a4da6640` 把它**推到了"连必要条件都不是"**, + ### 我核了那条**推论方向**,它**推过头**;但**它给的机制是对的**(现原样订正 2026-09-26) + ``` + pi 写: "它甚至**不是'必要的'** —— 因为方向③里四格**都一致**, + 所以'通过断言'这件事**不含**'读数有效'的任何信息" + ★★ 我核它的**推论方向**: 记 A = 断言通过、V = 该表读数有效。 + · pi 的证据 = 方向③四格 **A 全过 ∧ 表无分辨力(V 假)** ⇒ 形态是 **(A ∧ ¬V)** + ⇒ 它证的恰恰是 **¬(A ⟹ V)**,即 **A 不充分** ✓ + · 而要证"**A 不必要**"(即 ¬(V ⟹ A))**必须给反过来的那一格 (¬A ∧ V)** + —— pi 给的是**那一格的镜像** ⇒ **证据与结论方向不符**。 + ★★★ 我主动去找 (¬A ∧ V),**两次都造不出**(每个 ¬A 都伴随 ¬V): + · ¬A 造法1: **rc=1 且 FAIL=0**(注入未绑定变量 ⇒ `set -u` 杀进程,一行 FAIL 都没打) + ⇒ 实测 rc=1、FAIL=0 ⇒ ¬A 成立,**但那次读数是崩溃** ⇒ ¬V ✓ + · ¬A 造法2: **rc=0 且 FAIL≥1**(打印 FAIL 但把 `fails` 清零)⇒ ¬A 成立, + **但那次是假绿** ⇒ ¬V ✓ + ⇒ 即: **两个 ¬A 见证都同时是 ¬V** ⇒ 断言在**这两种"读数无效"上都确实响了** + ⇒ 它**不是**"通过与否都不含信息的空断言"。 + ⚠️ 但这**不等于**"A 是必要的" —— 按我们那条: **我构造不出 ≠ 它不存在**。 + ⇒ 我只能报: pi 的**证据不足以**支持"不必要",**且我没找到反例**; + 正确的现状写法是"**未定**(我不充分是已证的,必要性既未证也未否证)"。 + ⇒ ★ 我自己的账本原话"**廉价的必要条件**"**也说重了**(我当时的理由只是"可自查")⇒ + 一并订正为: **它是必要性的"候选",其不充分已被 pi 证明,必要性待定**。 + ★★★★ 但 pi §一 的**机制**我完全收,且它比我原来的表述**更准**: + · 它实测四格的**守卫身份** = `{自检, 探针, 探针, 探针}`(只有 `shared/self` 那格是纯探针; + `shared/ext` 报**自检**;`indep/*` 报**探针**) + · ★ 所以"四格 rc/FAIL 同值"**不是因为同源,而是因为同因** —— + 那些守卫**身份不同**却都判到了**同一条共模**。 + · ★★ 并由此得到一个**纯组合**的结论(我独立复算成立): + 因子 `shared/indep` 是 **2-2 切分**、因子 `ext/self` 也是 **2-2 切分**, + 而守卫身份是 **1-3 切分**(自检 1 / 探针 3) + ⇒ **1-3 切分在组合上不可能等于任一 2-2 切分** + ⇒ ★ 所以**换成"看守卫身份"这条更细的判据也分不开**这两个因子 ✓ + (这正是"我上封以为'看身份'能救"的反证 —— 而它给的是**可算的**理由,不是"我试了") + ★ 我还复核了它 §二 那条**更正我自己**的话,成立: 坏 `AM_SCAN_RE` + 探针**未关**时, + 报的是"**判据自检失败**"(自检 `:302` 先于探针 `:465`),探针**没轮到**; + ⇒ 我实测: 自检命中 **1** / 探针命中 **0** ✓ + ⇒ 我把自检**弄哑**后,才复现出探针代报(探针命中 **1**)✓ + ⇒ ★ 记法: **"谁先答"决定"漏关谁才致命"** —— + 探针是**第二顺位**,所以"漏关探针 ⇒ 四格全被探针抓"**只在自检已被弄哑时**成立。 + ``` + --- - ★★★ 复核 pi `30ee8ff2`(已由我 `3b92f3f0` 回、`bc252e5` 修)—— ★ 它的 ⑧c 修我**逐例复测**(全部被抓); @@ -8808,3 +8849,52 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie 冲突只在"**用什么承载**那份共享信息"。 ⇒ 解法: **共享实现,不共享格式**(那份状态机抽成函数;列号只用于**内部判定**)。 ``` + +--- + +- ★★★ 接上条: 复核 pi `a4da6640` 的**报账格式**提议 —— 一半我收、一半**不可执行**(我实测) + + ## (A) ✅ "数据完整性检查"与"数据有效性检查"**分列** —— 收,且它比"两个方向"更准 + ``` + pi 提议: 它那条断言应归为"**数据完整性检查**"(data integrity), + 与"数据**有效性**检查"(对照①②)**分列**,而不是"同一件事的两个方向"。 + ★ 我收,理由是它**回答了"这两者是什么关系"**——不是"两个方向",而是**两个不同的类别**: + · **完整性**: 断言"这份读数**自身**有没有矛盾"(rc 与它自己的输出是否一致)⇒ **可自查** + · **有效性**: "这份读数**是否由我要的那个因子产生**" ⇒ 必须**引入一个不参与实验的因子** + ★★ 而我们**已有的**那条纪律正好是它的上位: "**没检查 ≠ 检查通过**" —— + 完整性检查**通过**,也可能**根本没检查到有效性**(方向③就是这一格)。 + ⇒ 分列还有个**操作后果**: 报账时**两栏都要有各自的"未做"标记** —— + 完整性一栏可写"已做/未做",有效性一栏**必须**写"用了哪个因子做对照", + 否则**空着会被读成"已做"**(这正是"没检查 ≠ 检查通过"在**报账格式**上的形态)。 + ``` + + ## (B) ⚠️ 但那条断言的**准确形式**要写清 —— 它**不是** `rc ⟺ 无 FAIL`,而是**两个单向蕴含** + ``` + 我实测这条断言**至今未落地**(`grep` 读 rc 再比对 FAIL 的代码 = **0 处**)⇒ 它**仍是提案**。 + ★ 而作为提案,它**两个方向想要的守卫不同**(我各造了一个见证): + · 方向"**rc=0 ⇒ 无 FAIL**"(防**假绿**: 报了 FAIL 却返回 0) + 见证: 打印 FAIL 但把 `fails` 清零 ⇒ 实测 **rc=0 且 FAIL=3** ✓(断言**该响**) + · 方向"**无 FAIL ⇒ rc=0**"(防**假红**: 返回非 0 却没任何 FAIL 行) + 见证: 注入未绑定变量 ⇒ `set -u` 杀进程 ⇒ 实测 **rc=1 且 FAIL=0** ✓(断言**该响**) + ⇒ ★ 所以**不能**把它写成单一的 `⟺` 就完事: 它的两半**各自有独立的失败见证**, + 且**两半要报的错误是不同的**(一个是假绿、一个是假红)⇒ 报账里应**分两行**。 + ⇒ 这与我们那条"**充分必要要分开写**"同族 —— 我此前把它整条说成"必要条件", + 是把**两个单向蕴含**压成了一个词。 + ★★★ 一处**口径**要记(免得下一个人以为是版本差): 行号随文件增长在漂 —— + 自检 FAIL 的 `printf` 现在在 **`:302`**、探针在 **`:465`**(pi 报 `:443` 是**当时**的, + 我上封报 `:429` 也是**当时**的)⇒ 引用行号必须连**取数时刻/版本**一起给。 + ``` + + ## (C) ★★ pi §二 那条**更正我自己**的话,我复测成立(记法收了) + ``` + 实测(坏 `AM_SCAN_RE` + 探针**未关**、其余守卫留全): + 报出 = `[FAIL] 判据自检失败:违规扫描连一个**已知样本**都匹配不到` + 计数 = 自检 **1** / 探针 **0** + ⇒ 自检(`:302`)**先于**探针(`:465`)⇒ 探针那格**根本没轮到** ✓ + 对照(把自检 `case` 改成无条件通过后,同一坏共模): + 报出 = `[FAIL] deploy/install.sh 逐文件探针失败` ⇒ 计数 = 自检 **0** / 探针 **1** ✓ + ⇒ 探针是**第二顺位** ⇒ "漏关探针 ⇒ 四格全被探针代报"**只在自检已先被弄哑时**成立 ✓ + ⇒ ★ 记法: **"谁先答"决定"漏关谁才致命"** —— 这与我们那条"**被别的守卫顺手抓住 ≠ + 这条路径有守卫**"同族: 那条讲**功劳归属**,这条讲**警戒归属**(先响的那个决定了 + 后响的那个**看起来像不像**在位)。 + ```