From 359cb436c3beaafe16601de9420a5346b9e9f42c Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Mon, 28 Sep 2026 10:14:11 +0800 Subject: [PATCH] =?UTF-8?q?docs(=E5=A4=8D=E9=AA=8C):=20=E8=AE=A9=E5=A4=8D?= =?UTF-8?q?=E9=AA=8C=E8=AE=B0=E5=BD=95=E4=B8=8E=20DEBTS=20=E5=8F=A3?= =?UTF-8?q?=E5=BE=84=E4=B8=80=E8=87=B4=20=E2=80=94=E2=80=94=20=E5=81=87?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E6=84=9F=E6=9C=89=E4=B8=A4=E5=A4=84=EF=BC=8C?= =?UTF-8?q?=E4=B8=94=E5=B9=B6=E9=9D=9E=E3=80=8C=E6=97=A0=E5=A3=B0=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上一条提交更正了 `DEBTS.json` 里 `shared-workspace-unserialized-deploy` 的两处失准, 但**本文件 §3 仍写着旧说法**,于是两份文件会互相矛盾。已对齐。 ## 更正一:不是「无声」,是**披露会蒸发** `redeploy-gateway.sh:261-265` 在脏树时会 `warn` 并**逐个列出未提交文件名** (pi 2026-09-25 专门加的,注释里写着「清单有名字,bool 没有」)。 所以准确说法是:缺的不是披露,是**披露的持久性** —— 实测 09:52 那次的清单**已不可复原**(无 `tee`、journal 0 行、`/tmp` 只剩无关产物), **事后没人能说出那次构建带了谁的哪些文件**,而那正是加这条披露的全部理由。 ## 更正二:假安全感有**两处**,不只 `flock` 除 `flock` 外,`check-deploy-drift.mjs:1462-1467` 把 `vcs.modified` 作为 **WARN 披露且刻意不判红** ⇒「反正有判据在报」,而 **WARN 不参与退出码**, **没有东西会因此停下**。 ## 一处刻意**不**改 §1 保留「而没有任何东西会红」—— 那句限定在 ② 额度 bug 上 (`hmsStub` 的 `/token` 永远返回 200 ⇒ 判据造不出失败路径), 与部署 provenance 是**两件事**,改它反而会把一个准确的论断弄模糊。 一份记录里最容易坏掉的不是写错,而是**后来只改了一处、留下自相矛盾的两份**。 --- docs/reviews/final-check-2026-09-28.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/docs/reviews/final-check-2026-09-28.md b/docs/reviews/final-check-2026-09-28.md index 981b7ef..95ee0f9 100644 --- a/docs/reviews/final-check-2026-09-28.md +++ b/docs/reviews/final-check-2026-09-28.md @@ -132,8 +132,23 @@ pi 在 `aab92f17` 里更正:它上一封把时间线里 `09:55:31 opencode → **09:52 那次正是这么发生的**:docs 在 09:51:28 提交、09:53:12 再提交, 部署卡在中间 09:52:33,于是 `vcs.modified=true`。 -⇒ `flock` 在这里给的是**假安全感**。已登记为 HIGH 欠账 -(见 `docs/DEBTS.json` 的 `shared-workspace-unserialized-deploy`)。 +⇒ **假安全感有两处,不只 `flock`**: + +- `redeploy-gateway.sh:109-112` 的 `flock` 在位 ⇒ 以为并发部署已防 + (实则只防「两个部署**同时**跑」的那一种,而 09:52 是**单发**的); +- `deploy/check-deploy-drift.mjs:1462-1467` 把 `vcs.modified` 作为 **WARN 披露**、 + 且**刻意不判红** ⇒「反正有判据在报」,而 **WARN 不参与退出码**, + **没有东西会因此停下**。 + +⚠ 但要说准:这次**不是「无声」**。`redeploy-gateway.sh:261-265` 在脏树时会 +`warn` 并**逐个列出未提交文件名**(那是 pi 2026-09-25 专门加的,注释里写着 +「清单有名字,bool 没有」)。真正缺的是**披露的持久性** —— +实测 09:52 那次的清单**已不可复原**:脚本无 `tee`、journal 里 0 行、 +`/tmp` 只剩无关产物。**事后没人能说出那次构建带了谁的哪些文件**, +而那正是当初加这条披露的全部理由。 + +已登记为 HIGH 欠账(见 `docs/DEBTS.json` 的 +`shared-workspace-unserialized-deploy`)。 `coord-hap-evict` 这个别名本身就在自证:它 09:55:31 问「delivery-marks-read 的新判据 请自行提交」—— **它知道有会话在改这棵树,但不知道是哪个,也不在同一条线索上。**