# 复盘 2026-08-27（第五十六轮）—— 转述里藏着**对术语的重定义**；判据窗口是有限资源

> **范围**：只记本轮学到的**可复用 pattern**。逐项实证（分类清单 / 注入表 / 读数）已在
> [STATUS-CHANGELOG](../STATUS-CHANGELOG.md) 第五十六轮与 [[INFRA-F142]] entry 里，**本文刻意不复述**。
> 同日另四份：[a](./2026-08-27-a-new-gate-must-pass-the-repo-s-own-contracts.md) ·
> [b](./2026-08-27-b-criterion-blind-to-one-notation.md) ·
> [c](./2026-08-27-c-a-green-test-on-the-wrong-machine.md) ·
> [d](./2026-08-27-d-which-branch-runs-depends-on-the-machine.md)

---

## 一 · 新 pattern：一句转述可以**不改任何数字**，却悄悄把一个术语重新定义了

上一轮的 entry、CHANGELOG、交接 prompt **三处**都写着同一句：

> 「逐条读完那 34 段全文后的判定是 **可整段 `gated` = 0** ⇒ 全靠文件级豁免收口」

起手跑触发器 S，**这句话涉及的每一个数都是对的**：34 段、118 段、8 段假命中、扫描面 3 份 —— 一个没漂。
`entry-restatement-is-secondhand` 治的是「转述里的数会过期」，这次数**全对**。

假的是那六个字里的一个**隐含定义**：「**可整段** `gated`」——
它预设了 `gated` 这个状态需要「**整段被闸覆盖**」。而闸的语义从来不是这样：
同一条闸的头注释逐字写着「段里本闸不管的 handoff 条**照样计入 N**」，
先例 §M17 的 `[7]` 里就有 3 条是闸够不着的 handoff 纪律。**部分覆盖正是 `gated` 的常态。**

代价是具体的：按那句做，`code-conventions` 那 4 段（**规则原文自己写着「✅ 已 gate … probe R14 / R19」
并点名了脚本**）会被登记成「不可机检」。那是**一句假声明写进豁免表**，
而豁免表的 `reason` **没有任何闸会发现它假**。

🔑 **可复用的自查**：接手一句转述时，除了「它的数还对吗」（触发器 S）再加一问 ——

> **这句话里有没有哪个词，它用的定义和真源用的定义不是同一个？**

⚠️ 特别盯**形容词与量词**：「可整段」「完全」「全部」「彻底」「真正的」。
数字有闸能核，**定义没有**。而定义一旦被悄悄收窄，后面所有「按它执行」的动作都会系统性偏斜，
且每一步看起来都合规。

⛔ 别把这条读成 `entry-restatement-is-secondhand` 的重复：那条说「转述的**内容**会过期」，
本条说「转述的**术语**可能从一开始就不是真源那个意思」——**它不需要时间流逝就已经是错的**。

---

## 二 · 新 pattern：闸的「判据窗口」是有限资源，而**余量不可见**

本仓多条闸只读文件的**头 N 行**：`audit:gate-mount-declaration` 读**头 45 行**、
`audit:acceptance-gate-coverage` 的自陈解析读**头 60 行**。这是刻意的
（「声明必须在读者一眼能看到的地方」），不是缺陷。

本轮给九个闸脚本加头注释时，把新块写在了**挂载声明之前**：

| 文件 | 挂载声明原行号 | 加完后 | 结果 |
|---|---|---|---|
| `audit-mockup-typography-icon.mjs` | 37 | **48** | **当场 `EXIT=1`**，判「无挂载自声明」|
| `audit-mockup-colors.mjs` | 32 | **44** | 闸 **PASS** —— 距边界**只剩 1 行** |

第一行是好结果：**fail-closed，当场知道**。
🔴 **第二行才是要记的那个**：闸绿了，而余量从 13 行掉到 1 行。
下一个人加一行注释就会红，**而他不会知道是我用光的**。

🔑 **两条可执行的**：

1. **往任何闸脚本头部加内容，一律加在挂载声明块之后**，别加在它之前。
   两个文件已就地留 ⛔ 注（留在会被改的那一行旁边，比写进 backlog 可靠）。
2. **闸报 PASS 不等于这次编辑是安全的** —— 当一条闸的判据是「头 N 行内」这种**位置型**判据时，
   绿只说明「还没越界」，不说明「还有余量」。⇒ 位置型判据要顺手量一次余量，别只看退出码。

⚠️ 这与 `verification-criterion-must-be-terminal-state` 记的四种形态都不同：
那四种是「绿的原因不对」，本条是**绿是对的、而绿本身不携带我需要的那个信息**（余量）。

---

## 三 · 新 pattern：**刚抽象出来的 pattern 不会自动保护你**

同一天上半场刚写完[复盘 b](./2026-08-27-b-criterion-blind-to-one-notation.md)
「一条判据可能只对真源的一种书写形态灵敏」，并把自查写成一句话：

> 这个量在真源里有几种写法？我的判据对每一种都灵敏吗？

**下半场第一件事就踩了同一个坑**：写扫描器找「自己点名了闸」的 Acceptance 段时，
信号正则只认两种写法 —— `pnpm audit:xxx` 与 `audit-xxx.mjs`。
真源里还有第三种：`audit-mockup-library-origin`（**无 `.mjs` 后缀、无 `pnpm` 前缀**）。
放宽后候选从 **9 涨到 15** —— 差点漏掉六段。

同族的第二处在同一轮：`covers-acceptance` 的解析器**只认 `//` 行注释**，
而两个闸用的是 `/** */` 块注释、` * ` 前缀行**不匹配** —— 若不是先读了解析器源码，
那两条自陈会写下去、看起来完全正常、而闸永远解析不到（**且棘轮会因此红，是 fail-closed**）。

🔑 **可复用的**：

- **写复盘 ≠ 装上防线。** 一条 pattern 只有变成**动手前的一个机械步骤**才起作用。
  本条对应的机械步骤是：**写任何扫描正则之前，先从真源里 grep 出该对象的实际写法清单，
  再决定正则** —— 而不是先写正则、再看命中多少。
- **「我刚写过这条」是危险信号不是安全信号** —— 它会让人跳过那一步，因为「我知道」。
  （同 `using-superpowers` 那张红旗表里的「我记得这个 skill」。）

---

## 四 · 一条边界（不是新 pattern，记一次）

owner 拍「都按推荐执行」后，三条推荐里有**一条结构上没有 AI 可执行动作**：
rows 那 28 个决策点，落点只有「Figma 里改掉」（硬规则 #1 禁 AI 写 Figma）
或「`allow` 表加具名豁免」（而 🅰️ 档 5 条恰恰是「**不是有意的**」⇒ 不该进 allow）。

⛔ **正确动作是如实说「这件我做不了、以及为什么」，不是找一个近似动作来填。**
把 🅰️ 档写进 `allow` 表会让报告变干净、进度看起来从 0/28 动起来 ——
而那正好是**把「未判」伪装成「已接受」**，与该 entry 逐字警告的
「⛔ 别跳过第 1 件直接把 baseline 设成当前存量」是同一件事。
