diff --git a/deploy/prune-deploy-artifacts.sh b/deploy/prune-deploy-artifacts.sh index 936665f..f52efbf 100755 --- a/deploy/prune-deploy-artifacts.sh +++ b/deploy/prune-deploy-artifacts.sh @@ -104,9 +104,17 @@ del() { # 自检夹具建的就是 `$T/agentmail-gateway.bak-20260101-000000`(`mktree`), # 而「窗口外那一个」恰恰也是它 —— 于是任何"对 `20260101-000000` 失败"的 shim # 会连**夹具自己的清理**一起打掉。实测(两种 shim 都试过): - # 基线 ⇒ 通过 22 / 失败 1 - # shim(全 rm) ⇒ 通过 16 / 失败 9 - # shim(只该目标)⇒ 通过 16 / 失败 9 ← 与全量 shim **一样**,因为目标就是夹具 + # 基线 ⇒ 通过 22 / 失败 0 (合计 22) + # shim(全 rm) ⇒ 通过 16 / 失败 6 (合计 22) + # shim(只该目标)⇒ 通过 16 / 失败 6 ← 与全量 shim **一样**,因为目标就是夹具 + # + # ⚠️ 这三个数**第一版是错的**(写成 22/1、16/9),pi 2026-09-21 指出"total 恒 22, + # 22/1 与 16/9 都凑不出 22 ⇒ 算术不自洽"。他说的对,而且错因就是**本提交下面 + # 第 33 行那段自己刚记下的坑**:那三个数是用 `grep -c '失败'` 数出来的, + # 而"失败"这两个字也出现在**样本名**里 + # (`坏样本(rm 删不动):必须打出那句点名失败的 [FAIL]`)和 fake-rm 的 stderr + # ⇒ 基线多数出 1、shim 多数出 3。**我在同一段注释里既写下了这个坑、 + # 又用它算出的数当成了实测值。** 现已按**行首标记** `^\s*(通过|失败)\s` 精数。 # 红的六条还都是【干净样本】("窗口外没了、窗口内还在"等)—— 即 shim 把 # **本应绿的样本**打红,测到的是"夹具坏了"而不是"删除失败被报出来了"。 # @@ -264,7 +272,8 @@ if [ "${1:-}" = "--self-check" ]; then # ★ 但"让 rm 失败"必须走**注入点**,不能走 PATH shim:shim 的作用域是整个进程, # 而下面这些夹具(`mktree`)活在同一个进程里、且用的**就是** `20260101-000000` # 这个时间戳 ⇒ shim 会把夹具自己的清理一起打掉,红的全是【干净样本】。 - # 实测:基线 22 通过/1 失败;两种 shim 都退化成 16 通过/9 失败(详见 `del()` 里的注释)。 + # 实测:基线 22 通过/0 失败;两种 shim 都退化成 16 通过/6 失败(合计恒 22, + # 详见 `del()` 里的注释 —— 那里也记了这三个数**第一版为什么是错的**)。 T2="$(mkdtree_fail)" cat > "$T2/fake-rm" <<'FAKERM' #!/usr/bin/env bash