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 的新判据 请自行提交」—— **它知道有会话在改这棵树,但不知道是哪个,也不在同一条线索上。**