docs(复验): 让复验记录与 DEBTS 口径一致 —— 假安全感有两处,且并非「无声」
上一条提交更正了 `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 是**两件事**,改它反而会把一个准确的论断弄模糊。 一份记录里最容易坏掉的不是写错,而是**后来只改了一处、留下自相矛盾的两份**。
This commit is contained in:
@ -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 的新判据
|
||||
请自行提交」—— **它知道有会话在改这棵树,但不知道是哪个,也不在同一条线索上。**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user