# 预注册：K 格 —— 复核 DS 的「Acceptance ↔ 闸对位登记」**三件未复核**

> 落盘时间：2026-08-27 16:3x · lab HEAD 起手 `44605ba`（clean，单 remote `origin`）
> 🔴 **DS HEAD 起手 `60d644a0`** —— ⛔ **不是**交接 prompt 里写的 `f3fea851`（起手即已漂 **+4** commit）
> 入口：用户在本 session 起手四候选里**挑定候选 1**（⛔ 不是 lab 自己开的格，§8 单向纪律）
> 被验对象：**DS 侧**（`scripts/audit-acceptance-gate-coverage.mjs` + 其数据面 + 相关登记面）
> 立格依据：`proposals/2026-08-27-designqa-gate-gap.md` §4.1 `:195-200` 逐字登记的**三件⛔ 未复核**
> ⚠️ **编号用 `K1–K8`，⛔ 不用 `J*`／`H*`** —— 同名会撞面（第 26 条推论二 / 第 27 条推论二同族）

---

## 0. 一句话命题

I 格（`lab:N59`）已证「§4 那个 owner 决策点 **DS 侧已落地形态 (ii)**」，
但**自己逐字登记了三件没复核**（`:196` / `:197-198` / `:199`）：

1. ⛔ `bf0df7d5` 是不是 **owner 亲裁** —— 「owner 拍过」当时**无独立读数**
2. ⛔ 形态 **(ii) 那半个缺口**补上了没有 —— 处方 `:177` 逐字判过 (ii)「**发现不了「没有闸的那些条」**」
3. ⛔ 「④ 现由 R1/R2/R3 **全部覆盖**」这类**自称**的独立读数

🔴 **本格命题**：这三件里，**「已落地」与「已解决」之间还差多少**？

⚠️ **本格价值不在推翻 DS** —— 三件全部判「成立」也是结论（那就把 §4.1 从「已落地」升到「已解决」）。
⛔ 真正不可接受的是**让这三件继续挂着**：处方 §4.1 现在的措辞会让读者以为缺口已闭合。

---

## 1. 口径（⛔ 全部跑前写死）

### 1.1 判定面与时点（🔴 DS 会漂 ⇒ 每栏写死 sha，⛔ 不许用「现行」）

| 面 | 定义（写死） | 时点 | 起手实测 |
|---|---|---|---|
| **GATE** | `scripts/audit-acceptance-gate-coverage.mjs` | @`f15c8500`〔I 格读数时点〕 | **391** 行 |
| **GATE′** | 同上 | @`60d644a0`〔本格起手〕 | **414** 行（`9f8fd5a2` +23） |
| **DECL** | `git grep -n "covers-acceptance:" <sha> -- 'scripts/*'`，⛔ 排 `.claude/worktrees/` | @`f15c8500` | **2** 文件（新闸自己 4 + geometry 1） |
| **DECL′** | 同上 | @`60d644a0` | **5** 文件（新闸 4 + product-code 3 + geometry 1 + handoff 1 + affordance 1） |
| **CLAIM** | 「`R1/R2/R3` 全部覆盖」措辞 | @`60d644a0` | 非空（`.changeset/…claim-semantics.md:9` · `audit-mockup-geometry-consistency.mjs:15`） |
| **RULE** | `docs/internal/domain-tvu.md` §M17 那条 Acceptance | @`60d644a0` | 待取（④ = 「行高与分隔线间距」） |

🔴 **主裁定时点 = `60d644a0`**（最新面才回答得了「现在补上没有」）；
**`f15c8500` 只作对比栏**（= I 格读数时点，为可比性保留）。
⚠️ **收尾必须重取 DS HEAD**；若又漂且 diff 命中上表任一面 ⇒ **重跑该面并对 diff**（🔴「格内也会漂」已 7 次实证，本格起手即第 8 次）。

### 1.2 判定单元（⛔ 处数 ≠ 行数 ≠ 出现次数 ≠ 文件数）

- **1 道被审闸** = 一个 `scripts/*.mjs` 文件带 ≥1 条 `covers-acceptance:` 自陈（⛔ 新闸自己的模式串/文档命中**不计**）
- **1 个 Acceptance 段** = 真源里一个被闸枚举为判定对象的段（口径以闸自己的定义为准，跑时逐字抄下来）
- **1 条自称** = 一句「X 由 Y 覆盖 / 全部覆盖」的断言，无论重复几处

### 1.3 三件各自的判据（写死）

**K1 · owner 亲裁** —— 多通道，🔴 **每条通道先证鉴别力再用**（第 25 条）：

| 通道 | 判据 | 鉴别力预判 |
|:-:|---|---|
| ① git 身份 | `bf0df7d5` 的 author/committer | 🔴 **起手已证零鉴别力 ⇒ 弃用**（见 §3） |
| ② 登记面 | `backlog.md` 的 `INFRA-F142` / `CANONICAL-F104` entry 里 owner-gated 状态措辞 | 待测 |
| ③ 文本痕迹 | commit message body / `.changeset/` / STATUS 是否引用 owner 指示 | 待测 |
| ④ 时间线 | 处方交付 → `bf0df7d5`(13:45:20) 之间有无 owner 往返窗口 | ⚠️ **弱**（旁证，⛔ 不单独定案） |

**K2 · 形态 (ii) 半缺口** —— 读 GATE′ 源码判**输入面方向**：

- **反向枚举存在** ⇔ 闸从 **Acceptance 真源**枚举段、再反查有无闸（⇒ 能发现「没有闸的那些条」）
- **仅自陈** ⇔ 闸只扫 `scripts/` 的 `covers-acceptance:` 自陈（⇒ (ii) 那半个缺口**原样存在**）
- 量化三栏（🔴 **必须给全档**，第 26 条推论三）：`N_seg`（枚举总段数）· `N_ex`（判「不可机检」豁免）· `N_req`（要求有闸）

**K3 · 「全部覆盖」自称** —— 取 RULE 里 §M17 ④ 的**逐字**内容，逐子项对位 `R1/R2/R3` 的判据语义：

- 落档 `{自称成立 / 自称过强 / 自称不成立}`
- 🔴 **对照臂必须同步跑 ①②③ vs G1/G2/G3**（若该判据在 G 族上也一律判「成立」⇒ 可能恒绿，读数作废）

---

## 2. 假设与分档（🔴 跑前写死，⛔ 事后不许改档）

| 假设 | 落档（写死） | 跑前预判 |
|:-:|---|---|
| **K1** owner 亲裁 | `{已证亲裁 / 已证非亲裁 / 三通道全零⇒不可判}` | 预判 **{已证非亲裁 或 不可判}** |
| **K2** 反向枚举 | `{完全补上 / 部分补上 / 未补}` | 预判 **{部分补上}**（`9f8fd5a2` subject 有「+34 段全分类掉」） |
| **K2n** `N_seg` | `{30–80}` | — |
| **K3** 自称 | `{成立 / 过强 / 不成立}` | 预判 **{过强}** |
| **K4** DECL′ 被审闸数 | `{1–8}` | 起手实测 **4 道**（1 → 4） |
| **K5** 回改需求 | 每条判出的结论 → 【对方会读的那份文件】有无**栏位承载**（第 25/26 条） | — |
| **K6** 对照臂 | 每条判据给对照读数，⛔ 恒红/恒绿 = 零信息 | — |
| **K7** 自我订正 | 本格自己的判据 bug 逐条登记 | 起手已有 **1 条**（见 §4） |
| **K8** 两栏基线 | 起 X → 止 Y（⛔ 不写整格断言，第 25 条推论四） | — |

🔴 **硬门**：K2 若判「未补」而 K3 又判「成立」⇒ 两者互斥（自称覆盖但闸看不见没闸的条）⇒ **必有一条判错，回头查判据**。

---

## 3. 对照臂（第 25 条硬要求，⛔ 恒红/恒绿 = 零信息）

**K1 通道①的鉴别力 —— 起手已实测判死**：

| 臂 | 面 | 读数 | 结论 |
|:-:|---|:-:|---|
| 1 | `bf0df7d5` 的 committer | `NancyZeng0210 <zengweiying2012@163.com>` | — |
| 2 | 近 **30** 个 commit 的 committer | **30/30 同一身份** | 🔴 **恒绿** |
| 3 | 全仓 **1747** commit 的 author | **1709 同一身份（97.8%）**，另有 `lora`/`LoraLv` 等 5 身份共 38 | ⚠️ 历史上非单一，但**近期面恒绿** |

⇒ **通道① 在本判定面上不携带判别力 ⇒ ⛔ 弃用**，K1 只能走 ②③④。
⚠️ **⛔ 不许把「author 是 NancyZeng0210」读成「owner 亲裁」** —— DS session 跑在 owner 自己的机器上、用同一套 git config。

---

## 4. 交叉验证锚（第 27 条推论一：**新判据先在已有读数的面上跑**）

🟢 **锚已对上（起手前置自查）**：DECL 判据在 @`f15c8500` 上复跑得 **2 文件 = 新闸自己 4 处 + `audit-mockup-geometry-consistency.mjs` 1 处**，
与 §4.1 `:191` 逐字登记的「仅命中 2 个文件…真正带声明的被审闸目前 = 1 道」**逐位相同** ⇒ 判据可用于产 `60d644a0` 的新读数。

🔴 **本格已发生的自我订正 #1（⛔ 判据 bug，读数曾为假 0）**：
`git show "$s:scripts/…"` 在 zsh 下**加双引号仍被吃掉** —— `$s:s/cripts/audit-acc/` 被解析成
**参数展开的 `:s` 替换修饰符**（⛔ 与历史扩展无关，双引号挡不住）⇒ `git show` fatal，
而管道下游 `wc -l` 照样吐 **0**，差点被读成「文件 0 行」。
⇒ **口径订正：必须写 `${s}:path`（花括号）**，⛔ 「加引号」这条既有纪律**不充分**，收尾须回改 AGENTS.md。
⚠️ 这是「**第四种 0**」：既不是零命中、也不是文件不存在，而是**命令失败产生的 0**。

---

## 5. ⛔ 边界（§8 单向纪律，跑前声明）

1. ⛔ **不改 DS 一个字节** —— 全程 `git grep` / `git show` / `git log` 只读
2. ⛔ **不跑 DS 的闸 CLI / `vitest` / `pnpm build` / `pnpm release`**（与 §28.6–§28.10 各格一致，保持可比）
3. ⛔ **不在四个 pin 上跑 `pnpm build`**（`lab:E48`）· ⛔ 不改 `provenance.pinnedSha`（`lab:E46`）
4. ⛔ **不裁**：新闸该怎么改 · owner 该选哪个形态 · 任何设计规则的**内容**
5. ⛔ **不代 owner 回答 K1** —— 若三通道全零，如实登记「不可判」并把问题交回 owner，⛔ 不猜

## 6. 预登记的未覆盖（跑前先写，🔴 且必须写明**降级损失的是哪个量**，第 27 条）

1. ⛔ **本格不复核新闸的判据正确性**（只判**输入面方向** + 覆盖声明）⇒ 损失的是**闸内判据面**，⛔ 不影响 K2 的方向结论
2. ⛔ **不 live 核 Figma**（lab 够不到）⇒ 损失的是 K3 的**实证面**，K3 只给**语义对位**读数
3. ⛔ **候选 2 / 3 / 4 全部不碰**（用户本轮只点了候选 1）
