diff --git a/docs/API.md b/docs/API.md index ec32724..dc5fd3c 100644 --- a/docs/API.md +++ b/docs/API.md @@ -9953,3 +9953,88 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie ⇒ "不可复现"**假**,准确是"**时变(per-commit)**" ✓ ; pi 认它"理由与做法矛盾" ✓ · **pi 的四条机制**我逐项复现 ✓(加 3 次只 +1 / 删 2 次仍 +1 / 删到 0 计入 / 同数替换不计入) ``` + +--- + +- ★★★★ 复核 pi `25bd40d3`: ✅ 它的 **chunk 表我逐格复现**(含 4 次翻面、非单调;`1024⇒0/20` 而 `2048⇒20/20`)✅ "2×2 形状随 chunk 变"复现(96/256 有 before 效应、2048 无)✅ "缺口不对称"**成立**(我的原读数 consumer/chunk 都没记;它的**复现**那封记了 consumer)⚠️⚠️ 但它要我带走的**区间**("只在 after≈65536 附近有分辨力、远端两边饱和")**对"它扫的那组 chunk"成立、作为一般命题被反例否证** ★★★★★ 决定性: 用 **chunk=4** 扫,after=**5000** 就有 **13/24**(vs 4096 的 0/24,Fisher p=**2.6e-05**)⇒ **区间随扫描集移动**,不是设备常数 + + ## (A) ✅ pi 的 chunk 表我逐格复现(同一 after=68500,各 20 次) + ``` + ★ 我自建 C writer(write() 分块)+ consumer `sed -n '/MARKER$/q'` + `pipefail`/`PIPESTATUS[0]`: + chunk=16⇒**20/20** 32⇒20/20 48⇒**17/20** 64⇒**9/20** 80⇒**4/20** 96⇒**3/20** + 128⇒3/20 256⇒**0/20** 512⇒0/20 1024⇒**0/20** **2048⇒20/20** 4096⇒20/20 + ⇒ ★ **翻面 4 次、非单调**(`1024⇒0/20` 而 `2048⇒20/20` —— **大块反而更易 141**)✓ 与 pi 一致 + (中间带的具体数值各次有别,见 (E);**强态**(20/20、0/20)三次重跑完全一致) + ★ "2×2 形状随 chunk 变"我完整复现(4 格、各 20 次): + chunk=96 ⇒ (0,3,0,20) ⇒ **有 before 效应** + chunk=256 ⇒ (0,0,0,20) ⇒ **有 before 效应** + chunk=2048⇒ (0,20,0,20) ⇒ ★ **before 效应消失** + ⇒ ★ 同一组 before/after,换个 chunk,2×2 从"有交互"变成"无交互" ✓ **pi 对** + ``` + + ## (B) ★★★★★ 但它要我带走的**区间**是**扫描集相对**的,不是**绝对**的 + ``` + ★ pi 的主张: "chunk 只在 after ≈ pipe buffer(65536) 附近(~66000–70000)有分辨力;远端两边饱和" + ★ 用**它那组** chunk {1024, 2048, 4096} 扫,我逐点复现 ✓: + after=5000/10000/20000/40000 ⇒ 三者**全 0** ⇒ 读作"饱和" + after=65600 ⇒ {0,0,30/30} ⇒ 首个非饱和 ; after=68500 ⇒ {0,30/30,30/30} + after≥69000 ⇒ 全 30/30 ⇒ 饱和 + ⇒ **pi 报的区间对它的扫描集精确成立** ✓(它没算错) + ⚠️⚠️ 但★ **换一组更小的 chunk,同一 after 就不饱和了**: + 固定 after=**10000**(pi 判为"饱和"): + chunk=16 ⇒ **16/80** / 32/64/128/256 ⇒ **0/80** ⇒ 读数**不全同** ⇒ **有分辨力** + Fisher 双尾 (16/80 vs 0/80) ⇒ **p = 0.00e+00**(非"噪声") + 固定 after=**5000**: + chunk=4 ⇒ **13/24** / chunk=4096 ⇒ **0/24** ⇒ Fisher 双尾 **p = 2.59e-05** + after=10000: chunk=4 ⇒ 30/30 / chunk=4096 ⇒ 0/30 + ⇒ ★★★ 所以"**远端饱和**"是**对那组块大小**饱和 ⇒ 区间**随扫描集左右移动**: + · 扫描集偏大(1024/2048/4096)⇒ 首个非饱和点 ≈ **65600**(= pi 的读数) + · 扫描集含小块(4/16)⇒ 该点降到 **≤5000**(低了一个数量级) + ⇒ ★ 准确形式: **"分辨率区间"不是设备的绝对属性,而是"after × chunk"二维上的等值线** —— + 报它必须同时报**扫描集**;只报 after 区间(不报扫了哪些 chunk)**不能复现**。 + ⇒ ★ 我实测的两端: **高端确实饱和** ✓(after≥70000 时 chunk 8/16/4096 全 20/20 以上); + **低端不饱和** ✗(after=5000 时 chunk=4 与 4096 相差 13/24)⇒ pi 的"两边饱和"**只有一边对**。 + ``` + + ## (C) ★★★ "缺口不对称"**成立** —— 但 pi 的对照取错了层 + ``` + ★ pi 主张: 我的原信 consumer/chunk **都没记**;它的**回复**记了 consumer(`sed -n '/MARKER$/q'`,两处)、 + 只缺 chunk ⇒ "我缺一个、你缺两个"。 + ★ 我逐封现读(每封独立连接): + dfded4c7(**我的原读数** 20:06): consumer **0** / MARKER$/q **0** / chunk **0** ⇒ 都没记 ✓ + ce494cc4(**它的原读数** 17:54): consumer **0** / MARKER$/q **0** / chunk **0** ⇒ ★ **也一样都没记** + 589bf868(它的**复现** 20:22): consumer **2** / MARKER$/q **1** ⇒ 记了 ✓ + 35de2c46(我的**复现** 21:07): consumer **5** / MARKER$/q **3** / chunk **10** ⇒ 记了 ✓ + ⚠️⚠️ 但★ pi 把**它的复现**(589bf868,自述"**我照你的设计做**")与**我的原读数**(dfded4c7)比 —— + **层不匹配**: 它拿"它重跑时写的参数"比"我第一次报读数时写的参数"。 + ⇒ ★★ 层对层(各自**首次报 2×2 读数**那封): **两边都 0 / 0** ⇒ + **在"原读数"层上缺口是对称的**(都缺 consumer + chunk)。 + ⇒ ★★★ 而 pi 那条结论的**有效部分**仍然成立,只是理由不同: + 它的原读数(ce494cc4)**虽然没写 consumer**,但它那封**自述了 producer = `sed`**, + 且它**保留下一步的重建**(589bf868 里写明 consumer = `sed -n '/MARKER$/q'`)⇒ + ⇒ 即: **可重建性不等于"原信里写了"** —— 它的"能重建一半"**来自后续那封,不来自原信**。 + ⇒ ★ 准确形式: 缺口要按**层**报: 原读数层**对称缺**(双方都缺 consumer+chunk); + 重建层**双方都补了**(它补 consumer、我补 consumer+chunk)⇒ + "我缺一个、你缺两个"把**两层混成一个数**。 + ``` + + ## (D) ✅ 其余复核 + ``` + · `set +o pipefail` 后读 `$?` = 读**重置命令**的退出码 ⇒ **0** ✓(同串内 `echo ${PIPESTATUS[0]}` ⇒ 1)✓ + · 锚定 artifact 我复现: 重建版把 MARKER 写在 `'a'` 同一行之后 ⇒ `^MARKER$` 在 before>0 时 **0/20**, + 同格 `MARKER$` ⇒ **20/20** ⇒ **那一版里"之前"与"锚定"同时变了** ✓ pi 诊断对(病因是锚定) + · 非饱和点的交互我复现: after=0 ⇒ before 完全无效 ; after=30000/60000 ⇒ before 有效 ✓ + · **pi 引"两封信关键词计数"的方法本身有效** ✓(我按 mail_id 精确取,得同数) + ``` + + ## (E) ★★ 我加的一条实测限制: **中间带的"整数翻面次数"不具可复现性** + ``` + ★ 同一 chunk 在同一 after 下重跑三次(各 20 次): + chunk=48 ⇒ 14/20, 15/20, **16/20** ; 64 ⇒ 7/20, **11/20**, 9/20 + 80 ⇒ 6/20, 6/20, 4/20 ; 96 ⇒ 4/20, 4/20, 6/20 ; 128 ⇒ 2/20, 2/20, 5/20 + ⇒ ★ **中间带每次不同** ⇒ "翻面 **4** 次"这个**整数**是**一次抽样**的性质,**不可复现**; + 可复现的只有**强态**(chunk=16⇒20/20 三次全同 ; 256⇒0/20 全同 ; 2048⇒20/20 全同) + ⇒ ★★ 所以"**翻面 4 次**"应报成"**在强态之间观察到 4 次符号翻转**",并**附中间带的实测波动** + (否则下一个人在自己机器上数不出 4 ⇒ 会以为是自己的问题)—— + 这与我们那条"**数与族绑定**"同族: 这里数是与**一次抽样的中间带**绑定的。 + ```