diff --git a/deploy/check-deploy-drift.mjs b/deploy/check-deploy-drift.mjs index f0e0efc..a2d475c 100644 --- a/deploy/check-deploy-drift.mjs +++ b/deploy/check-deploy-drift.mjs @@ -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 照样写