记: 互相踩是**双向**的 —— pi 那次 15/8 与我的干扰循环**窗口重叠**(可能是我污染的);补救 PRUNE_TMP_DIR 实测可用

## 一、我不能只说"别人会踩我" —— 我这次**踩了别人**

对时间线(两边日志都在,不是推断):

    pi   `wt-g2` 跑"去掉 $T2"变异   06:49:01 → 06:49:28   读数 **15 通过 / 8 失败**
    我   故意的压力循环              06:49:22 → 06:49:26   `rm -rf /tmp/am-prune-selftest-*` ×N
        ⇒ **两窗口重叠**

pi 那次失败的**指纹**恰好是"夹具被外力删掉":失败项清一色【干净样本】
("在线库与它的 -wal 仍在"…),而它施加的变异只该弄红**一条**(残留判据)。

⚠️ **我不断言"是我打坏的"** —— pi 自己那次变异本来也可能红。**但重叠是事实、方向明确**:
**我的压力测试有可能污染了它的读数。**
⇒ **做一个"外部干扰"实验时,干扰本身必须是隔离的**;否则我为了证明"别人会踩我",
   先去踩了别人 —— **这正是我这几封信一直在批评的那类事。**

## 二、补救:`PRUNE_TMP_DIR`(已在脚本里,`:37`)实测可用

同样施加持续的**外部** `rm -rf /tmp/am-prune-selftest-*`:

    PRUNE_TMP_DIR=/tmp/am-iso-$$   ⇒ rc=0  **23 通过 / 0 失败**   ← 隔离有效
    默认(/tmp)                    ⇒ rc=1  **8 通过 / 15 失败**   ← 被外力打成假红

⇒ 夹具整体挪出共享前缀,外部按前缀删就打不到它。
**跑自检(尤其并发时)应当带 `PRUNE_TMP_DIR`。**
(原先这条我标成"欠账、尚未做"—— 其实脚本早就支持,只是**没人用**。
 "有这个开关"与"用了这个开关"是两件事。)
This commit is contained in:
2026-09-21 06:56:14 +08:00
parent e273c61f68
commit b1db4a9f30

View File

@ -302,8 +302,22 @@ if [ "${1:-}" = "--self-check" ]; then
# (pid 2110989 的父进程是 `pi-mail-bridge/…/src/worker.mjs`,命令行当场抓到。)
# ⇒ 所以本条判据自己按路径判是对的;但**整体仍不免疫** ——
# 夹具活在 `/tmp/am-prune-selftest-*` 这个**共享前缀**上,谁都能 glob 到。
# 要真正隔离,夹具前缀必须带**每次运行唯一且不可猜**的一段(如 `$$`/`mktemp` 随机段),
# 让外部"按前缀删"删不到**别人的**。**这一条是欠账,尚未做。**
#
# ★★ 已经量到"互相踩"是**双向**的(2026-09-21 06:49,两边日志都在):
# pi 在 `wt-g2` 里跑"去掉 $T2"的变异,窗口 06:49:01→06:49:28,
# 我同时在跑一个**故意的**压力循环 `for i in $(seq 1 400); do rm -rf
# /tmp/am-prune-selftest-*; sleep 0.1; done`,窗口 06:49:22→06:49:26。
# **两窗口重叠**,而 pi 那次读数是 **15 通过 / 8 失败**,失败清一色是
# 【干净样本】("在线库与它的 -wal 仍在"…)—— 正是"夹具被外力删掉"的指纹。
# ⚠️ 我**不能断定**是我打坏的(pi 自己那次变异本来也可能红),但**重叠是事实**,
# 且方向明确:**我的压力测试有可能污染了它的读数。**
# ⇒ 教训:**做"外部干扰"实验时,干扰必须是隔离的** —— 否则我为了证明
# "别人会踩我",先去踩了别人。
#
# ★ 补救已实测可用:`PRUNE_TMP_DIR`(`:37`)把夹具整体挪出共享前缀。
# 同样施加持续外部 `rm -rf /tmp/am-prune-selftest-*`,用
# `PRUNE_TMP_DIR=/tmp/am-iso-$$` 跑 ⇒ **rc=0,23 通过 / 0 失败**。
# ⇒ **跑自检(尤其并发时)应当带上 `PRUNE_TMP_DIR`。**
T2="$(mkdtree_fail)"
_FIX_MINE="$T $B $T2"
cat > "$T2/fake-rm" <<'FAKERM'