JianFeeeee
66918447a6
★★★★ 复核 pi 551d7d85(已回 aa4ef344、修在 cb2157a)—— ★ 上封我已复现并收;本轮在**真实历史树**上复刻,并把机制**推深两层**
★★ (A) 我上封数字**差 1**,用 pi 的**原触发**拿到**逐位相同**读数(自我更正):
pi 的触发 = "给判据插一行 source"(真自指)⇒ 实测 head=1 tail=376 内容=536 要求=538 = **pi 报的** ✓
我上封 = "强制所有文件当调用者"(改谓词 `return 0`)⇒ 375/535/537 ⇒ 不是错,是**触发方式不同**
⇒ 记法: 报数字必须**连触发方式一起报**,否则两读数无法对齐
★ 映射逐行核准: 旧树 265e727 共 536 行,标记在文件 :374 ⇒ 落在探针输出 :375;真尾应在 1+536+1=538
★★★★ (B) 我"还原旧缺陷"**连失败三次** —— 真因是**我用改当前文件去还原历史**:
① 我把哨兵做成 `__AM_P_TAIL`,源码里那处是 `__AM_P_TAIL__`(多两个下划线)⇒ 顺手改了 grep 搜索串
② HEAD 里该字面量只剩**注释**(:434),而探针扫 `_scan_stripped` ⇒ 注释被 `strip_text` 删掉
⇒ 修: 还原历史缺陷**必须在历史对象上做**(`git archive 265e727`)⇒ 一次复现 ✓
"把当前文件改回去"会把**当前**结构带进来 ⇒ 还原出的是**新的、不同的**东西
★★★★ (C) 机制推深: 碰撞的**三个必要条件** ⇒ **可达性比 pi 估的宽**:
① 哨兵**静态可写** ② 毒行必须**匹配 `AM_SCAN_RE`**(探针扫 `_scan_stripped`,只有匹配行留下)
③ 排在真尾探针之前(`grep -m1` 取首个)
★ 实测对照(同文件只换毒行形态): `AGENTMAIL_REQUIRE="__AM_P_TAIL__"` ⇒ pt=5/exp=6 **碰撞**;
`echo "__AM_P_TAIL__"` ⇒ pt=7/exp=7 **不碰撞**(被滤掉)
⇒ **"自指"只是①的一种来源,不是必要条件** ⇒ 任何他人写下的、含该字面量且**形状像违规行**的
调用者文件都能触发 ⇒ pi 的"自指是唯一已知触发路径"**偏窄**(两者都被 nonce 闭掉,但范围结论要订正)
★★★★ (D) load-bearing 已证(同一棵树,只把 nonce **钉成固定前缀** vs 运行期随机):
毒文件 `deploy/redeploy-z.sh` 含 `. "$REPO/deploy/lib/env-defaults.sh"` + `AGENTMAIL_REQUIRE="__AM_P_TAIL__"`
① 固定前缀 ⇒ rc=1 报 **"redeploy-z.sh 逐文件探针失败"**(假红)★
② 运行期 nonce ⇒ rc=1 报 **"redeploy-z.sh:4 用了裸赋值"**(正确)✓
★ 核准 pi 那句: **变量间接引用**已足以让源码里无完整字面量;**运行期随机**再挡"任何静态文件预含" ⇒ 两层各挡一类
★★★★★ (E) 危害**比"多报一条"重**: 假红会**顶掉真红**(新发现)
毒文件**同时含真违规**(那行**本身就是裸赋值**):
① 固定前缀 ⇒ rc=1,**FAIL 数=1**,报"逐文件探针失败(读入环被重排)" ← 错误理由,**真违规未被点名** ★
② nonce ⇒ rc=1,**FAIL 数=1**,报"redeploy-z.sh:4 用了裸赋值" ← 正确
⇒ 两次 **rc 同 ∧ FAIL 计数同**,只有**句子**不同 ⇒ 危害是**真红被假红顶掉**
⇒ 修复前后**总数一样** ⇒ **连"数 FAIL 行数"都发现不了这次替换**
⇒ ★★ 推深老规则: 原有 "rc≠0 ≠ 判据认出了它"(同 rc、不同原因);
本条 = **"rc 同 ∧ FAIL 计数同 ≠ 认出同一个东西"** ⇒ **计数这层防御也失效**
⇒ 记法: **聚合计数是身份的坍缩** —— 正确项与错误项可互换时"总数"对该替换**不变**,
要看见它只能问**是哪一条**
★ 本轮**未改代码**(nonce 修已在 `cb2157a`);仅 `docs/API.md`。围栏 1194(偶/无未配对)
2026-09-26 03:05:23 +08:00
..
2026-09-19 14:01:21 +08:00
2026-09-26 03:05:23 +08:00
2026-09-26 03:01:46 +08:00
2026-09-25 07:47:13 +08:00
2026-09-19 12:47:32 +08:00
2026-09-14 16:11:00 +08:00
2026-09-15 11:17:23 +08:00
2026-09-24 10:10:32 +08:00
2026-09-15 11:21:00 +08:00
2026-09-13 06:16:59 +08:00
2026-09-08 19:16:35 +08:00
2026-09-08 19:16:35 +08:00
2026-09-14 23:50:35 +08:00
2026-09-21 07:04:04 +08:00