# G 格预注册：DS **设计走查判据的覆盖面缺口盘点** —— 产出是**处方**，⛔ 不是又一份复核报告

**跑前落盘。⛔ 事后不改假设、不改判定规则；改了就在报告里逐条标「事后改」并说明理由。**

- 立档时间：2026-08-27
- **入口**：用户 2026-08-27 逐字提问 ——
  > 「有时候表格的行之间还放了间距，设计的时候不知道什么怎么做？理论上应该自动设计走查了，
  > 但是也没发现，**类似这样的审查缺口，现在堵上了吗？**」
  > 「类似这种问题，**应该早就发现，可能还有其他问题待发现**」
- ⚠️ **本格严守 lab `§8` 单向纪律**：**lab 只审查 + 出处方，⛔ 不改 DS 一个字节。**
  改闸 / 补规则一律由 **DS session 在真源执行**。
  （上一轮我曾把「lab 直接做 `CANONICAL-F104`」列为选项，**违反本纪律，用户当场纠正**。）
- **交付定义（跑前写死）**：本格**必须产出一份 `proposals/` 处方**。
  🔴 **只产出 report 而无处方 = 本格失败** —— 08-26/08-27 那 9 格已经连续 0 处方，本格不许重蹈。

---

## 1. 被验命题

用户的命题拆成两半（**必须分开判，⛔ 别合并** —— 这是 `§2.21` 新判据要求的拆档）：

| 半 | 命题 | 性质 |
|---|---|---|
| **①** | 「表格各行的高度 / 间距该不该一致」**没有闸在拦** | **可实测事实** ⇒ lab 判 |
| **②** | 「设计时不知道该怎么做」= **规则真源缺失**（⛔ 不是闸缺失） | **可实测事实** ⇒ lab 判 |
| **③** | 「这类缺口**还有其他的没被发现**」 | **可实测事实**（穷举覆盖面）⇒ lab 判 |
| **④** | 这些缺口**该不该补 / 先补哪个** | 🔴 **应然判断** ⇒ ⛔ **lab 不裁**，只排优先级依据交给 owner |

⛔ **不验 / 不裁**：某条设计规则的**内容**该怎么定（那是 designer + owner 的）；
DS 该不该为某维度上闸；`design-review-queue` 那 7 条该不该继续挂着。

---

## 2. 起手实测（**非假设** —— 写本预注册之前已经看到的，⛔ 不算验证结果）

### 2.0 三条起手纪律

**① 第 22 条【第五行】（lab 自己盘过没）** —— 判定面 = HEAD `2fb9fcb` 的树，
口径写死 `git grep … ':(exclude)runs/**/*.jsonl'`：

| 关键读数 | lab 内命中 | 判 |
|---|:-:|---|
| `CANONICAL-F104` | **0** | ✅ 从没碰过 |
| `走查` | **3** | 全在 `runs/` 与 inventory JSON 里的**被测文档正文**，⛔ 非 lab 分析 |
| `无闸` / `没有闸` | 0 / **6** | 6 处全在 `runs/faultinjection-evidence` 的被测 `why` 字段（讲判据解析），**不同族** |
| `design-review-queue` | **2** | 只是「STATUS 镜像计数 4→6」的一致性检查，⛔ 非覆盖面分析 |
| `geometry-consistency` | **26** | 🔴 全在**闸挂载 / 输出契约**维度（`gate-mount-inventory` · `mockup-gate-merge` 处方），**⛔ 不是判据覆盖面维度** |

⇒ **lab 从未盘过「DS 设计走查判据的覆盖面」** ✅ 第五行通过。

**② 第 20 条四行块**（本格不是接手已登记待做项，故核的是「这缺口是否已有 owner 在管」）：

| 行 | 内容 |
|---|---|
| **登记记的** | DS `CANONICAL-F104` 逐字：判据 ①「同一设置页各行 `height` 必一致」②「各行右侧控件列右缘一致」③「展开标记是 VECTOR 不是 Unicode」④「分隔线厚度与色值一致」 |
| **现取的** | 同 entry「现状核实」栏逐字：「脚本里 `--family` / `family` **零命中**（致败探针 `--file` = 7 处）⇒ **这一族确实还没动工**」 |
| **前提还成不成立** | ✅ **成立** —— 缺口真实存在且 DS 自己已登记，⛔ 但**没有人在做** |
| **它还该做吗** | ⚠️ **F104 entry 自带一条前置**逐字：「需先确认『行』的结构特征可稳定识别 —— `§M-DISCIPLINE.SCOPE` 硬约束 5 ③ 点名过这类假设（「每一行都是一个独立的行 frame」不成立时按容器特征过滤会**整类漏掉**）」⇒ **⛔ 先核结构再谈判据** |

**③ 第 23 条口径一（引用 ≠ 定义）**：判某处是不是规则真源，要问
「它是在**用**这条规则，还是在**定义**它」。本格逐条套用。

### 2.1 起手读数（⛔ 不算验证结果）

1. DS 闸总数 `scripts/audit-*.mjs` = **68 道**。
2. `audit-mockup-geometry-consistency.mjs` 三条探针逐字：
   `G1 same-component-width` · `G2 cross-frame-same-name`（**同名控件宽度**）· `G3 action-right-edge-align`（**右缘 x**）
   ⇒ **三条全是水平 / 宽度维度**。该脚本自陈存在理由逐字：
   「26 consecutive walkthrough rounds passed and I1–I4 were green every round,
   while the SAME control had two different widths across five state frames」
   ⇒ **同型盲区在垂直方向至今无人补。**
3. `audit-mockup-binding-fidelity.mjs` **B-SCALE** 逐字「off-scale raw spacing/radius not bound to a variable」
   ⇒ 「间距**值**没对齐 scale」**有闸**；「间距**该不该存在 / 各行是否等高**」**未见判据**。
4. `audit-rule-inventory.mjs` 治的是**规则清单 stale**（逐字「5 处各自枚举一套清单、内容 4 种、
   全部对活源 stale，一致漏掉 11 个真实 section」）⇒ **它治「规则存在但清单漏了」，
   ⛔ 不治「规则根本不存在」**。
5. `docs/internal/design-review-queue.md` = **7 条，7 条全部 `designer-action: yes`**
   ⇒ **队列 0% 自动化**；#1「Off-scale px 值」2026-06-11 live 实测至今仍挂着。

---

## 3. 预注册假设与判定规则

> **每一档都写两问的答案**（`§2.21` 推论三 + `§2.22` 推论三 + `§2.23` 推论一）：
> ①【这一档绑了几个判定】②【取值域覆盖全了吗 —— 含退路、含「是不是两个正交维度压成一个」】

### H1 —— 缺陷分类学：「设计走查缺口」是**几种**不同的病

**跑前写死的四分类**（每个设计维度落且仅落一格）：

| 类 | 规则真源 | 自动闸 | 含义 |
|---|:-:|:-:|---|
| **(a) 已覆盖** | 有 | 有 | 写了规则、也有闸拦 |
| **(b) 靠人走查** | 有 | **无** | 规则写了，但只能靠人发现 |
| **(c) 无据可依** | **无** | 无 | 🔴 **设计时不知道该怎么做**（用户遇到的） |
| **(d) 清单漂移** | 有但镜像 stale | 有 | `audit-rule-inventory` 已治 |

**①绑几个判定**：**1** —— 分类学本身是**定义**，⛔ 不是判定。真正的判定在 H5 逐维度落格。
**②取值域**：⚠️ **必须留第五格 `(e) 规则有闸也有、但闸的判据与规则内容对不上**」——
这是 `§2.23` 口径一（引用≠定义）的同族：**有闸 ≠ 闸在管这条规则**。
⚠️ **退路**：某维度**同时落两格**（规则在 A 文件有、B 文件无；或部分子维度有闸）
⇒ **拆成子维度分别落格，⛔ 不许取「主要属于哪格」**。

### H2 —— 命题①：「表格各行高度 / 间距一致」有没有闸

**读数** `g_vert` = 68 道闸里，判据涉及**垂直维度**（`height` / 行高 / 垂直间距 / 行栅格 / 垂直节奏）的闸数。

| 档 | 条件 | 判 |
|---|---|---|
| H2-a | `g_vert = 0` | ✅ 命题① **成立** —— 垂直维度零覆盖 |
| H2-b | `g_vert ≥ 1` | 🔴 命题① **不成立**，逐个报出是哪道闸、判据是什么 |

**①绑几个判定**：**1**（计数事实）。⛔ **不裁**「该不该上闸」。
**②取值域**：`≥ 0` 全覆盖。
⚠️ **must-hit 控制**：同一条 grep 必须能命中**已知有水平判据**的
`audit-mockup-geometry-consistency.mjs`（G1/G2 量宽度）——
命不中 ⇒ 判定面塌，`g_vert = 0` **⛔ 不许采信**（`lab:N48`）。
⚠️ **must-not-hit 控制**：`height` 出现在**注释 / 变量名 / CSS 属性表**里 **⛔ 不算判据**
（`§2.23` 推论三：与对方自称对立前先证自己的计数器 —— 本格是「与自己的假设对立前」同理）。
⚠️ **退路**：某闸判据**跨文件**（引擎 + 规则模块，如 `audit-mockup-conformance` 的模块化形态）
⇒ 按**规则模块**计数，⛔ 不按脚本文件计数；两个口径都报。

### H3 —— 命题②：「行高该不该一致」这条**规则**在不在

**读数** `r_vert` = DS 规则真源文档（`mockup-conventions.md` / `domain-tvu.md` /
`code-conventions.md` / `design-process.md`）里，关于**垂直节奏 / 行高一致 / 行间距**的规则条目数。

| 档 | 条件 | 判 |
|---|---|---|
| H3-a | `r_vert = 0` | ✅ 命题② **成立** —— 属 **(c) 无据可依** |
| H3-b | `r_vert ≥ 1` ∧ `g_vert = 0` | 属 **(b) 靠人走查**，⇒ 命题②**不成立**（规则在，只是没闸） |
| H3-c | `r_vert ≥ 1` ∧ 内容与 `CANONICAL-F104` 判据 ①**不一致** | 属 **(e)**，逐字交出两边差 |

**①绑几个判定**：**1**（存在性事实）。⛔ **不裁**这条规则该怎么写。
**②取值域**：⚠️ **第三态 `(e)` 已显式留档**（规则在但与判据对不上）。
⚠️ **退路**：规则写在**项目资料**（`TVU Pack/docs/specs/lcd-canonical-spec.md`，F104 entry 逐字
「期望值见 …，2026-08-06 起取值不在 DS」）而非 DS 真源 ⇒ 记 **`在仓外`**，
**⛔ 不记 `0`**（`0` = 查过不存在；`在仓外` = 存在但不在 DS 读者的可达面上 —— `§2.23` 推论四同型）。

### H4 —— 命题③：**穷举**还有哪些维度落在 (b) / (c)

**方法（跑前写死）**：从**三个独立来源**取「设计维度」清单，取并集后逐维度落 H1 的格 ——
① `design-review-queue.md` 的 7 条 · ② `CANONICAL-F104` 判据清单 4 条 ·
③ `mockup-conventions.md` / `domain-tvu.md` 的 Acceptance 条目。

**读数**：`n_total` 维度数 · `n_a` / `n_b` / `n_c` / `n_d` / `n_e` 各格计数。

| 档 | 条件 | 判 |
|---|---|---|
| H4-a | `n_c ≥ 1` | ✅ 命题③ **成立** —— 确有其他「无据可依」维度 |
| H4-b | `n_c = 0` ∧ `n_b ≥ 1` | 命题③ **半成立** —— 有缺口但都属「规则在、没闸」 |
| H4-c | `n_b = n_c = 0` | 🔴 命题③ **不成立** —— 覆盖面是全的，先查我自己的口径 |

**①绑几个判定**：**1**（穷举计数）。⛔ **不裁**优先级（那是 ④，交 owner）。
**②取值域**：⚠️ **⛔ 不声称穷尽** —— 三来源并集是**下界**，必须逐字标
「按这三个来源取，⛔ 不保证是 DS 的全部设计维度」（`§2.21` 推论一同型纪律）。
⚠️ **退路**：某维度在三来源里**措辞不同实为同一条** ⇒ 归并后再计数，
并**列出归并对照表**（`§2.23` 推论二：副本膨胀会把一条读成多条）。
⚠️ **措辞变体表（`§2.23` 推论一，跑前列出）**：
`行高` / `height` / `row height` / `行栅格` / `垂直节奏` / `vertical rhythm` / `间距` / `spacing` / `gap` / `leading`。

### H5 —— 交付物本身：处方必须可执行

**读数** `p_out` = 本格产出的 `proposals/` 文件数。

| 档 | 条件 | 判 |
|---|---|---|
| H5-a | `p_out ≥ 1` ∧ 含【逐维度覆盖表 + 每条缺口的可验收判据 + owner 决策点】 | ✅ 交付成立 |
| H5-b | `p_out = 0` | 🔴 **本格失败**（连续第 10 格 0 处方） |

**①绑几个判定**：**1**（交付事实）。
**②取值域**：⚠️ **退路**：若 H4 实测 `n_b = n_c = 0`（无缺口）⇒ 处方内容改为
「**覆盖面完整的实证 + 三来源口径边界**」，**仍必须出处方**，⛔ 不许因「没发现问题」而不交付。

---

## 4. 控制

| 控制 | 内容 | 失败即 |
|---|---|---|
| **must-hit** | 闸判据 grep 必须命中 `geometry-consistency` 的 G1/G2（已知水平判据） | 判定面塌 ⇒ `g_vert = 0` ⛔ 不许采信 |
| **must-not-hit** | `height` 在注释 / 变量名 / CSS 属性表里 **⛔ 不算判据** | 读数虚高 |
| **副本归并** | 跨 `worktrees/` / 归档副本面一律按 basename 归并（`§2.23` 推论二） | 读数虚高 |
| **措辞变体表** | 按措辞取数**先列同义变体表**（`§2.23` 推论一） | 漏计 |
| **口径写死** | DS 侧 `':(exclude).claude/worktrees/**'`；lab 侧 `':(exclude)runs/**/*.jsonl'` | ⛔ 不靠事后过滤 |
| **不自然读数** | 任一计数呈异常整齐 / 与另一读数不自然相等 ⇒ 先当假阳查 | `§2.21` 推论二② |

---

## 5. 交付纪律

1. 🔴 **必须产出 `proposals/` 处方**（H5-a），⛔ 只出 report 判本格失败。
2. **lab `§8` 单向纪律**：处方里只写「缺口是什么 + 可验收判据长什么样 + owner 要拍什么」，
   **⛔ 不替 DS 选实现、⛔ 不改 DS 任何文件。**
3. 命题 ④（该不该补 / 先补哪个）**⛔ lab 不裁** —— 只交「优先级依据」（影响面 / 已知实证 / 前置条件），
   **决策留给 owner**。
4. 引任何 DS 读数必须**标 sha**；收尾重取 DS HEAD 并逐项扫落后窗口。
5. `CANONICAL-F104` 那条前置（「行」的结构特征需先 live 核）**必须原样写进处方**，
   ⛔ 不许略过 —— 它是「按容器特征过滤会整类漏掉」的已知风险。
6. 收尾自证：四 pin dirty 起止 · DS 工作树 dirty 起止 · 0 新 run · 未 build / 未 release / 未 freeze。
