2026-09-23·by Sijie Wang#standmeet#architecture#design

a-gate-that-cannot-go-red

红不了的闸门不是闸门

上级:structure

infra/scripts/ 下五十五个 check-* 条目(2026-09-07 数的)里有十个只干一件事:攻击另外四十五个。它们共同的开头就是那条学说 —— 一个从没红过的闸门不是闸门。

做法

种下这道闸门明确禁止的那个东西 → 断言它变红 → 删掉。check-routes-via-dispatcher-test 种的是一个 internal/routes 下的文件(不在棘轮基线里),直接 import 域的门面 —— 正是这道闸门存在的那个逃逸口。种下的文件不参与编译,也不留在树上。

小一些的闸门把自检做在自己身体里,并且印进成功那一行,于是一次绿跑说得出它证明了什么:check-one-corpus-href 种一个坏 URL,check-secrets 在被豁免的目录里种一把钥匙。

这不是多疑

一个守卫失效的样子,跟它成功的样子长得一模一样:

  • 它不再看得见。 grep --include 在 alpine 上会静默失明 —— 扫描器什么都没返回,然后报告 clean。扫描器必须自证看得见,而不只是"我没找到"。
  • 它的诱饵不再咬钩。 镜像密钥扫描原本种的是 aws_secret_access_key,而那条规则带熵阈值;随机串总有一部分落在阈下,于是自检零星失败——而自检失败会挡住整条发布。换成私钥块(结构性规则,不看熵)才稳。
  • 它的对象搬走了。 一道按路径限定的闸门,对搬出这个路径的代码就不再覆盖,而搬家这件事什么都不报。
  • 它扫的不是那个东西。 一次绿跑如果不印覆盖量,就说明不了覆盖。镜像扫描现在会印扫描面:N 个文本文件 / 跳过 M 个二进制 —— 因为 backend 镜像里我们自己 COPY 的东西是六个 Go 二进制加一个 shell 脚本,那道闸门实际扫的是一个 shell 脚本,而它跟 app 镜像(整个 .next 都是文本)印的是同一个词 clean。同一个词,背后的证据量差三个数量级。

一般规则

看一个守卫扫的是什么,不要只看它绿不绿。 一台不可能失败的仪器给出的绿灯不携带信息 —— 这在验证上等价于"一条失败不可达的断言"(judgment-audit)。所以这里每一道守卫自己也被一道守卫审计,而那次审计是一个实验(种下、期望红),不是一次检视。

这跟 owner 自己那条 audit-the-artifact 是同一个本能 —— 读真实产物、不读断言 —— 只是往上抬了一层:闸门声称自己在工作,这句话本身也是一个断言,于是它享受同样的待遇。

about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →