JianFeeeee
5c2ada60a2
文档: **"孩子管不着的东西"在因果判据里不存在** —— 比"边际递减"更硬的停止理由(§6.1.6)
pi 复核层 10 时提出:层 10 的修法(要求 `RED ` 行)**推翻了层 7 的原则**
("锚点不能落在被守对象的自述上")—— 把锚点从"行为"搬回了"自述"。
**这条我核对成立**:`:2674` 的原则与 `:2774` 的修法同住一个文件、且方向相反。
⇒ 停止理由从"成本 > 收益"升级为**"层 11 的修法必须推翻层 7 或层 10,两者互斥"**。
## ★ 但我把 pi 的建议修法①也测了 —— 得到比"原则互斥"更强的结论
**pi 的 ① 不是逃逸口。** 它主张"改坏**孩子读的外部依赖**(而非孩子自己的源码)
⇒ 通道没有可检的信号"。实测(`exitcode-selftest` + 假体 + 通道):
```
通道只盯外部 summary.py ⇒ 干净树 rc=0 ✓,改坏外部 ⇒ rc=1 ⇒ ① 有效
通道**同时**盯外部 summary.py + 自己源码 ⇒ 干净树 rc=0 ✓,改坏外部 ⇒ rc=1
⇒ **① 被绕过**(同刻对照:red 与基线一致、diff 0 行)
```
★★ 根因(**这是这一整串真正的底**):
> 因果判据的要求是:**改坏 X ⇒ 孩子的判词必须变**。
> ⇒ 这要求 X **因果上游**于孩子的判词 ⇒ **孩子必须读 X**。
> ⇒ 孩子读得到 X ⇒ **孩子能观察 X 被改坏**(同 uid、可读,`summary.py` 是 `-rw-r--r--`)。
> ⇒ **"孩子管不着的东西"被因果判据自身的定义排除掉了。**
⇒ 层 7 那句"锚点必须落在**它管不着**的东西上"在这个接口里**没有可满足的解**:
· 要"因果有效",X 就必须被孩子读到;
· 要"孩子管不着",X 就不能被孩子读到;
· **二者不可同时成立** ⇒ 不是"还没爬到",是**接口本身没有解**。
★ 唯一出路是**换接口**(父进程自己算、或进程外观测)—— 那不是"再修一条判据"。
实测本仓**进程外观测通道 grep 0 处**(`strace`/`inotify`/`atime` 差分全无),
且孩子的输出只有 stdout + 退出码,**两者都由孩子自己产生**。
⇒ ★ 与 pi 的"原则互斥"是同一结论的**两个证明**:pi 证明**两条原则不能共存**;
我证明**这个接口里不存在既"因果有效"又"孩子管不着"的对象**。
**两者都指向"停",而后者不依赖"哪条原则优先"的判断。**
## ⚠️ 顺带记一条我自己的量错(与 pi §四 同族)
我用 `python3 heredoc` 拼通道时,**引号嵌套写出了 SyntaxError** ⇒ 通道**在干净树上就崩**、`rc=1`。
我差点把它读成"通道生效"。**是 stderr 里的 `SyntaxError` 救了我。**
⇒ **"量到 ≠ 量对了"**:任何构造出的攻击,**第一句读数必须是"它在干净树上无症状吗",
且必须看 stderr,而不是只看 rc。**
## 验证
· 干净 git worktree(HEAD=7ca6ae1,仅覆盖本文件):`^RED` **0 条**、
因果红 0、对照红 0、不可归因红 0。
· ⚠️ 工作区当前 `red` 偏高是**并发会话的漂移**(`harmony-window.test.mjs` 未接线 ⇒
清单自检整体停;`harmony-system-api`/`harmony-nav`/`harmony-widescreen` 设备竞争红),
**与本次改动无关**;我那两个文件 `git diff` 为空以外的部分一行未动。
· 本提交**只改文档**:`client/electron/test/CRITERIA.md`(新增 §6.1.6)。
2026-09-18 09:33:29 +08:00
..
2026-09-18 09:33:29 +08:00
2026-09-17 21:33:15 +08:00