fix(drift): 补上负向清单**第②项的守护格** —— pi ⑬″ 指出的真洞(宣称 2 项,只有 1 项有人守)

pi `7ec0044a` 用**同一条量法**(`|R\C|`)打了我自己刚落地的那条 ⑬′:

```
我 b5989a9 的 ⑤b 负向清单宣称 2 项:
  ① 从脏树构建(含未提交代码)        —— **有格**(:1610 modified=true ⇒ 绿 + note 点明)
  ② 部署后被手工替换/修改(只看内嵌 revision)—— **一格都没有**
grep '手工替换' 全文件 ⇒ 只命中清单自身
⇒ 所以 |R\C| 不是 1;② 是**只被"声明"、没被判据守**的那一项
```
★ 而这正是 ⑬′ 想防的形状的**镜像**: 我写了负向清单(防读者把绿读成"没问题"),
  却**没有东西防我自己把清单写漂** —— 删掉一项、或以为它被覆盖了,都不会红。

## ⑬″ 的判法(pi 给的,我采纳)

```
每一项判一次: 「在 R 内 C 外」(真洞 ⇒ **加格**)还是「在 R 外」(⇒ **划出宣称**)
  项②: ⑤b 宣称回答"这份二进制是不是当前代码" ⇒ **在 R 内**
       而 C = {只读内嵌 revision},同 revision 换内容照样绿 ⇒ **C 外**
  ⇒ **真洞 ⇒ 加格**(不是划出宣称)
```

## 落地

新增自检格 `★网关二进制:绿时 note 必须写明"①脏树构建②部署后手工替换"两项都不覆盖`,
**不要求改 ok** —— 内容替换确实判不了,只能"说出来";它钉的是**那句话还在**。

★ 变异验证(这格**能失败**,否则等于没加):
```
从 note 里删掉负向项② ⇒ 该格 **失败** ⇒ "判据自检失败 1 项"
```
自检 63 → **64 项**,0 失败。

## 一并记账:§7 那条同类无守(pi 同封指出,本条**未改**)

`redeploy-gateway.sh` §7 那句「已装二进制 = 当前 HEAD(…)—— 不覆盖: …」**全仓只命中它自己**,
而 `redeploy-gateway.sh` 没有 `--self-check` ⇒ **同一动作两处,一处有守一处无守**。
不在这条提交里改(要动部署脚本,且得先想清 §7 该怎么自检)—— 留给下一条,避免又造一次半截更新。
This commit is contained in:
2026-09-25 07:01:36 +08:00
parent 5d9a41c3d3
commit 4598095b17

View File

@ -1601,6 +1601,20 @@ export function layoutSelfCheck() {
ok: seventh(binRevOf({ rev: 'c'.repeat(40) }, 'c'.repeat(40)))?.ok === true
&& /不覆盖/.test(seventh(binRevOf({ rev: 'c'.repeat(40) }, 'c'.repeat(40)))?.note ?? '')
},
{
// ★★ ⑬″(pi `7ec0044a`):负向清单的**每一项**都必须有自检格守着 —— 否则那份
// 声明自己会漂(有人删掉一项、或以为它被覆盖了,都**没有东西会红**)。
// 实测指出时: 项①(脏树构建)有格,**项②(部署后手工替换)一格都没有**。
// ⑬″ 的判法: 每项判「在 R 内 C 外」(真洞 ⇒ 加格)还是「在 R 外」(⇒ 划出宣称)。
// 项② 在 R 内(⑤b 宣称回答"这份二进制是不是当前代码")而 C 外(只读内嵌 revision,
// 同 revision 换内容照样绿)⇒ **真洞 ⇒ 加格**(本格)。
// 本格**不要求改 ok** —— 内容替换确实判不了,只能"说出来";它钉的是**那句话还在**
// (删掉 note 里这半句 ⇒ 本格红)。
name: '★网关二进制:绿时 note 必须写明"①脏树构建②部署后手工替换"**两项都不覆盖**',
ok: ['①', '②'].every(m => (seventh(binRevOf({ rev: 'c'.repeat(40) }, 'c'.repeat(40)))?.note ?? '').includes(m))
&& /手工替换/.test(seventh(binRevOf({ rev: 'c'.repeat(40) }, 'c'.repeat(40)))?.note ?? '')
&& /脏树/.test(seventh(binRevOf({ rev: 'c'.repeat(40) }, 'c'.repeat(40)))?.note ?? '')
},
{
// ★ revision 相同 **但** modified=true ⇒ 仍是绿,**但 note 必须点明**"含未提交代码"。
// 这是本判据唯一的**假绿**形状(pi 2026-09-25 指出):树脏时 Go 照样写