# 预注册：I 格 —— 「判出对方已做 / 已裁 / 已证伪」的**回改存量缺口**反查

> 落盘时间：2026-08-27 15:1x · lab HEAD 起手 `01b6589`（clean）
> 入口：用户在本 session 起手三候选里**挑定候选 3**（⛔ 不是 lab 自己开的格）
> 被验对象：**lab 自己**（`docs/round2-status.md` × `proposals/*.md` 的登记面一致性）
> 立格依据：`AGENTS.md` 第 25 条**推论三** —— §28.8 刚立、⛔ 尚未在存量上跑过

---

## 0. 一句话命题

`AGENTS.md` 第 25 条推论三判定：**「本格判出的每一条『对方已做 / 已裁 / 已证伪』，必须回改到对方会读的那份文件」**。
该口径由 §28.8 立、并在**当格**补上了一条（`designqa-gate-gap.md` §3.1a）。
⛔ **但它从未在存量上跑过** —— 本格反查：`docs/round2-status.md` 里累积的同类判定，
有多少条**只写进了 lab 自己的账本、没回改到 `proposals/` 正文**（= DS 的执行入口）。

⚠️ **本格的价值不在「找出几条」，在「这批未回改的会让 DS 白干什么」** —— 见 H4 危害分级。

---

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

### 1.1 三个面

| 面 | 定义（写死） | 份数 | 承诺 |
|---|---|:-:|---|
| **主判定面 P** | `docs/round2-status.md` @ lab `01b6589` | 1（2374 行） | ✅ **逐条跑完**，⛔ 不许 `head`/`-m`（第 25 条推论二） |
| **次判定面 S** | `git ls-files 'reports/*.md'` | 26 | ⚠️ **只做基数登记 + 定向抽样**，⛔ 不承诺逐条裁定 |
| **目标面 T** | `git ls-files 'proposals/*.md'` | 9 | ✅ 每条判定都要在 T 的**全部 9 份**上跑完检索 |

⛔ **排除面（显式登记，`AGENTS.md` §2.4 推论「扫描面本身要写进报告」）**：
`runs/**`（23 份 `.md` + 16 份 `.jsonl`）· `docs/round2-*-plan.md`（14 份，**预注册面 ≠ 交付面**）·
`docs/specs/`（1）· `docs/ds-reply-2026-08-25.md`（**对方的回信，不是 lab 的判定**）·
`AGENTS.md` / `README.md` / `tasks/`（纪律面与任务面，⛔ 非处方）。
全仓 tracked `.md` = **78**（已实测）⇒ 本格判定面 1 + 26，目标面 9，排除 42。

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

**1 处 = 一个「〔对方主语〕已完成〔某动作〕」的语义命题**，无论它在 P 里占几行、被复述几次。

- 机械筛只产出**候选行**；每条候选行由我**逐条裁定**再归并成「处」。
- **主语集（写死）**：`DS` · `owner` · `Owner` · `对方` · `DS session` · `DS 侧` · `R1` · `R2` · `R3`
- **谓语集（写死，26 项）**：`已做` `已落地` `已实现` `已上闸` `已加` `已改` `已修` `已提交` `已执行`
  `已完成` `已覆盖` `已接` `已合` `已裁` `已裁定` `裁定` `已定` `已拍定` `已决` `已采纳` `已拒` `已驳`
  `rejected` `已 hold` `已证伪` `证伪` `已推翻` `推翻` `被推翻` `已失效` `不成立` `别再走` `已弃` `作废` `已 live`
- ⚠️ **已知召回缺口（跑前就登记，⛔ 不事后补）**：主语与谓语**跨行分布**的命题，单行 AND-grep 抓不到
  ⇒ 落进 **H5** 的一档，⛔ 不许在结论里冒充「已跑完」。

### 1.3 起手实测基数（✅ 已跑，前置自查产物）

| 面 | 机械筛候选行 | 命令口径 |
|---|:-:|---|
| P = `round2-status.md` | **29** | 主语 grep → 管道谓语 grep（两级，⛔ 无 `head`） |
| S = `reports/` 26 份 | **34** | 同上，`grep -rn` |
| T = `proposals/` 9 份（**反向面**，见 H6） | **21** | 同上 |

✅ **`lab:N48` 已满足**（判定面非空，⛔ 不是「返回 0 先当结论」）。

---

## 2. 假设与取值域（跑前写死；⛔ 取值域是**笛卡尔积**，不是单臂值域 —— 第 25 条推论一）

### H1 · 判定面基数
候选行 29 归并后的**语义命题数** `N₁` = ?
**取值域**：`N₁` ∈ {0 · 1–5 · 6–10 · 11–15 · 16–20 · >20}
⚠️ 若 `N₁ = 0` ⇒ 先证判定面非空（`lab:N48`），⛔ 不许直接写「无缺口」。

### H2 · 有处方对应物的比例
`N₁` 中能指到 T 里**某一份具体文件（可到小节）** 的 = `N₂`；指不到的（纯 lab 内部账、或 owner 待做项）= `N₁ − N₂`。
**取值域**：`N₂/N₁` ∈ {0 · (0,¼] · (¼,½] · (½,¾] · (¾,1) · 1}

### H3 · 回改三态（对每条 `N₂` 内命题，在 T 的**全部 9 份**上跑完检索）
- **a = 已回改** —— 处方正文有留痕（标了日期 / sha / 「已订正」块）
- **b = 未回改** —— 处方正文**零处**提及该命题（⛔ 此判「没有」必须跑完，第 25 条推论二）
- **c = 半回改** —— 提到了，但**原推荐没改掉**（正文仍在指一条已被证伪 / 已被裁定不做的路）
**取值域**：`a` `b` `c` 各 ∈ {0 · 1 · 2 · 3 · 4 · 5 · >5}
🔴 **硬门**：`a ≥ 1` **且** `b + c ≥ 1` 才算判据活着；若三态不齐 ⇒ 走 H7 判恒红 / 恒绿。

### H4 · 危害分级（只对 `b` + `c`）
| 档 | 定义 | 后果 |
|:-:|---|---|
| 🔴 **重** | 处方仍在**推荐一条已被证伪 / 已被裁定不做的路** | DS 照做 ⇒ **白干**（§28.8 那条 `^Item/` 就是此档） |
| 🟡 **中** | 处方仍把一件**已做完的事**列为待做 | **重复劳动**（§26 「A″′ 格 H1–H4 是重复劳动」同型） |
| 🟢 **轻** | 只是登记面不同步，⛔ 不改变 DS 的动作 | 账面噪声 |
**取值域**：各档 ∈ {0 · 1 · 2 · 3 · >3}

### H5 · 措辞变体自查（第 23 条推论一 —— **第 5 次**）
用**二次扩充措辞集**（加 `landed` `done` `implemented` `superseded` `已上线` `已合并` `已关` `已收` `已回` `不再` `不必` `无需` + 跨行形态人工过）重跑 P，看 `N₁` 变不变。
**取值域**：{不变 · +1–2 · +3–5 · >5}
⚠️ 若 >0 ⇒ 说明一次筛的措辞集不够，**必须在报告里写明一次筛的召回率是估计值**。

### H6 · 反向形态：登记面分叉（§26.4 第五种登记面缺陷）
T 里写了「DS 已…」但 P 里**无对应判定**，或两处**口径互相矛盾**。机械筛候选行 = **21**（已实测）。
**取值域**：矛盾处数 ∈ {0 · 1 · 2 · 3 · >3}

### H7 · 🔴 对照臂（第 25 条**硬要求**：判据必须能区分两态，⛔ 缺这栏结论不成立）
探针 = **§28.8 那条命题**（「DS 已 live 实测证伪 `--config` 扩 `controlPatterns` / `^Item/`」）。
| 臂 | sha | 已知真值 | 判据**必须**报 |
|:-:|---|---|:-:|
| **故障臂** | lab `742d17d`（§28.8 回改**前**） | 只写进 status、处方正文没有 | **红（= b）** |
| **对照臂** | lab `01b6589`（§28.8 回改**后**） | `designqa-gate-gap.md:113` §3.1a 已回改 | **绿（= a）** |

**取值域 = 笛卡尔积**（⛔ 不是单臂二值）：
| 故障臂 × 对照臂 | 判 |
|---|---|
| **红 × 绿** | ✅ **判别器** —— 唯一可接受，本格结论成立 |
| 红 × 红 | 🔴 **恒红**（`lab:N58`）⇒ 信息量 0 ⇒ **本格 H1–H6 全部作废** |
| 绿 × 绿 | 🔴 **恒绿**（`lab:N33`）⇒ 同样作废 |
| 绿 × 红 | 🔴 判据方向反了 ⇒ 重写判据 |

✅ 前置自查已取到**对照臂的一半**（`designqa-gate-gap.md:113` 存在）⇒ ⛔ 但**故障臂尚未跑**，不得据此预言。

### H8 · 起手 / 收尾基线两栏（第 25 条推论四）+ 顺手锚订正
**起手（✅ 已实测 2026-08-27 15:0x）**：lab `01b6589` clean、单 remote `origin` ·
DS **`f15c8500`** dirty=1（`docs/internal/_generated/backlog-owner-decisions.html`，untracked）·
四 pin `339a72bf`/`4a68e02d`/`71ac2711`/`c1db57b8` 全 dirty=0。
🔴 **交接单写的 DS `6a78faa4` 起手就已过期（+3 commit）** ⇒ 收尾**必须重取**，⛔ 不许写成整格断言。

**顺手活（用户挑定时并入）**：把 §28.8 与处方里那组 `@6a78faa4` 行号锚更新到 `@f15c8500`。
✅ 已现取（⛔ 非推算）：`inScopeIds` `:726`→**`:731`** · probe 判定 `:804`→**`:809`** ·
`controlPatterns` `:104`→**`:109`** · `widthTolerance` `:119`→**`:124`** · `baseline` `:123`→**`:128`** ·
`probeG1` 声明行 `:312`→**`:317`** · `probeG2` 声明行 `:335`→**`:340`**。
⚠️ 该闸 `6a78faa4→f15c8500` 的 diff = **+10/−5，全落在头注释块，可执行代码零改动** ⇒ 全锚整体 **+5**。
⚠️ **§28.8 写的 `probeG1:316` / `probeG2:342` 与我现取的声明行差 4 / 2 行** ⇒ 落 H8 的一档待裁（锚在声明行还是体内某行）。
🔴 **必做程序化复证**：装置在 `f15c8500` 上原样重跑，`diff` 两次 stdout —— 空 diff 才算「§28.8 结论仍成立」。

---

## 3. must-hit / must-not-hit（`lab:N48` + `lab:N47`）

**must-hit（判据活着的证据）**
1. H7 对照臂 = **绿**（`designqa-gate-gap.md` §3.1a 被检出为 `a`）
2. H7 故障臂 = **红**（同一命题在 `742d17d` 上被检出为 `b`）
3. H3 的 `a ≥ 1` 且 `b + c ≥ 1`（三态里至少两态非空）

**must-not-hit（越界即中止）**
1. ⛔ **不改 DS 一个字节**（lab §8）—— DS 仓只 `git show` / `git diff`，⛔ 不 `checkout`、⛔ 不写
2. ⛔ **不裁设计规则的内容**；⛔ 不裁 A′ 形态 (i)/(ii)、不裁 G2 该不该留（那些是 DS 的工程判断）
3. ⛔ 不在四个 pin 上跑 `pnpm build`（`lab:E48`）· ⛔ 不改 `provenance.pinnedSha`（`lab:E46`）·
   ⛔ 不跑 `pnpm release` · ⛔ 不重跑 `metrics/context-cost.mjs`
4. ⛔ 不催「等别人的」那批（缺陷 A/A′/B 执行 · F104 两件 · 两个 hold · `audit-doc-shape.mjs` 日期型重开）
5. ⛔ 回改处方时**原文留痕不删**（§2.11）—— 只加订正块，⛔ 不重写历史结论
6. ⛔ 验 fail-closed 类判据**不带管道单跑**（`lab:N47`）
7. ⚠️ 本机**无 `timeout` / `gtimeout`**

---

## 4. 交付形态（⛔ 不只写报告 —— 第 25 条推论三就是治这个的）

1. **报告** `reports/2026-08-27-round2-writeback-gap.md`：H1–H8 逐条读数 + 三态清单 + 危害分级
2. 🔴 **逐条回改 `proposals/` 正文**（本格的**核心交付**，⛔ 不是附带）：
   每条判为 `b` / `c` 的命题，在对应处方里加一个标日期的订正块，原文留痕不删
3. **`docs/round2-status.md` §28.9** 登记：起手→收尾两栏 · 三态计数 · 危害分级 · 未覆盖项
4. **顺手锚订正**：`@6a78faa4` → `@f15c8500`（含装置重跑 diff 的程序化证据）
5. 若撞出新形态 ⇒ 进 `AGENTS.md`（编号续 `lab:N59`）

---

## 5. ⛔ 跑前就登记的未覆盖项（如实，⛔ 不事后补）

1. ⛔ **次判定面 S（`reports/` 34 行候选）不逐条裁定** —— 只登记基数 + 定向抽样
2. ⛔ **跨行分布的命题**（主语与谓语不在同一行）单行 AND-grep 抓不到 ⇒ H5 登记，召回率是**估计值**
3. ⛔ **判「DS 有没有真的读过某份处方」不可亲验** —— lab 只能量「处方正文写了没」，
   ⛔ 不能量「DS 读到没」。**两句话不可互相冒充**
4. ⛔ **不复核候选 1**（`bf0df7d5` + `audit-acceptance-gate-coverage.mjs` 是否 owner 亲裁）—— 用户未点，§8 单向纪律
5. ⛔ **G 格原未覆盖四项 · F104 两件待 owner · 两个 hold · `audit-doc-shape.mjs` 日期型重开条件（2026-09-01 到期）** —— 原样保留
6. ⛔ **live Figma 上「同宽不等高 + label 不同」的真实发生率** —— lab 够不到
