# 预注册 —— A′′ 格：`STATUS-CHANGELOG.md` 不删裁定的**第二个裁定块**复核

> **跑前落盘。⛔ 事后不许改 §3 / §4；订正只能以「§X 事后订正」另段追加。**
> 承 A′ 格（`lab:N54`「存在理由过期」）。本格是 `lab:N54` 的**第二次命中**，
> 且形态更硬：A′ 格是「9 处提及、0 处知道已裁」，本格是 **lab 明文把它登记成「未追问」项 ≥5 次**，
> 而答案与第一个裁定块**在同一个 commit 上**，放了整场 C / D / E / A′ 四格。

---

## 1. 被验命题

DS 活源 `scripts/audit-doc-shape.mjs:48-73` 那段 📌 注释，逐字自称
「**`STATUS-CHANGELOG.md`（= S1 的 `DEST.S1`，本闸把内容挤过去的那个落点）为什么刻意不上体量闸、
也不切分、也不删 —— 这一段是那条决定的唯一真源**」（2026-08-25 评估，起因逐字点名
ai-ds-lab `proposals/2026-08-24-archive-triage.md` 把它列进「桶三 · 纯流水账 → 真删」），
含**四条理由**与**三条带判据的重开条件**。

**本格要答的**：那四条理由，**用 lab 侧独立可取的读数**核，现在各自还成不成立；
三条重开条件各自达成与否。

🔴 **本格最大的风险（承 §2.20 推论一，A′ 格已真实命中一次）**：
**核对方的理由时最容易变成给它背书。** 每一条理由都必须有一个 **lab 侧独立可取的读数**；
「DS 写了理由、听起来对」⛔ 不构成证据。
⚠️ **反向也不许**：A′ 格 `archiveDir` 那条被造故障翻掉了，⛔ **不许因此反向假定本格也会翻** ——
预测照写、由实测裁。

⛔ **lab 不裁该不该重开、不裁该不该删、不替 DS 选修法、不催。**

---

## 2. 起手实测（**非假设** —— 写本预注册之前已经看到的，如实登记）

### 2.0 四行块前提核验（AGENTS §2 第 20 条，⛔ 三行块不够用）

```
登记记的：  docs/round2-status.md:1153 逐字「STATUS-CHANGELOG.md 未删的原因**未追问**」
           —— 同一句在 lab 内复现 ≥5 处（:1153 / :1234 / :1370 / :1486 / :1599，
           另 reports/2026-08-26-round2-patternindex.md:332 ·
           reports/2026-08-26-round2-readsurface-criterion.md:182/:215 ·
           reports/2026-08-26-round2-l1fingerprint.md:225），可追到 §20.6 第 2 条
现取的：    DS 活源 scripts/audit-doc-shape.mjs:48-73 = 四条理由 + 三条带判据的重开条件；
           `git log -S "刻意不上体量闸" -- scripts/audit-doc-shape.mjs` ⇒ 引入 commit = **c1db57b8 本身**
           （= C/D/E/A′ 四格测量所用的那个 pin）；`git log c1db57b8..HEAD -- scripts/audit-doc-shape.mjs`
           ⇒ **空**（活源 21 个 commit 里一次未被碰）
前提还成不成立：🔴 **不成立** ——「未追问」这个前提本身是错的。DS 2026-08-25 已答，
           且答案从 C 格第一格起就在 lab 手里的 pin 上。
它还该做吗：✅ **该做，但换问法** —— 不是「去追问 DS」（DS 已答），而是**复核那四条理由**，
           与 A′ 格同构。⛔ 不是「催 DS 删」也不是「替 DS 判该不该删」。
```

⚠️ **第四行的执行口径**（承 §2.20 那句「⛔ 别只 grep 那个待做项自己的名字」）：
本次是 `git grep "刻意|重开条件|为什么.*留在|唯一真源|已裁|裁定"` 扫 DS `scripts/*.mjs` + `docs/meta-rules/`，
**⛔ 不是** grep `STATUS-CHANGELOG`。若只 grep 后者，答案不会出现 —— 因为裁定块写在**别的闸**的头注释里。

### 2.1 起手读数（逐条登记，⛔ 不算验证结果）

| # | 读数 | 值 | 备注 |
|---|---|---|---|
| 1 | DS 活源 HEAD | **`b593c301`** | A′ 格记 `cddb16dd` |
| 2 | pin `c1db57b8` 落后 | **21** | D 格 3 / E 格 19 / A′ 格 20 ⇒ **每格重取** |
| 3 | 四个 pin `dirty` / HEAD | **0 / 0 / 0 / 0**，HEAD 全对 | 起手已测 |
| 4 | DS `dirty` | `vocabulary.md` · `backlog-owner-decisions.html` | 已知两项，⛔ 不清 |
| 5 | 同族裁定块总数（按措辞 grep） | **3** | ⑴ `audit-plan-lifecycle.mjs:103-125`（A′ 格已核）· ⑵ `audit-doc-shape.mjs:48-73`（**本格**）· ⑶ `audit-doc-shape.mjs:29-40`（起因是 DS 自己的 `INFRA-F95`，⛔ 不点名 lab） |
| 6 | ⑴⑵ 的引入 commit | **同为 `c1db57b8`** | 两个块同一个 commit |
| 7 | ⑶ 的重开条件类型 | **日期型：2026-09-01 起重算日增速** | **6 天后到期**；注释逐字「到期复核时它很可能正好压线，**必须自己重算**，别引用本行」⇒ owner = DS，**lab 只登记，⛔ 不代做** |
| 8 | lab 散文层提及 `STATUS-CHANGELOG` | **31 处**（`docs/*.md` `proposals/*.md` `reports/*.md` `AGENTS.md` `metrics/*.mjs`） | 知情处 = **0**（H6 精确分组待测） |
| 9 | `DEST.S1` 的形态 | `:180` 逐字 `S1: 'docs/internal/STATUS-CHANGELOG.md 顶部'` = **纯字符串常量**，只出现在 `:224` 的 FAIL 文案 `超出内容搬去：${DEST.S1}` | ⚠️ **未见任何 `existsSync` / 读该路径** —— 但这是**静态读**，H1a 由造故障裁 |
| 10 | `WRAP-UP.md` 三处协议 | `:13` / `:15` / `:17` **逐字与 DS 所述完全一致**，仍在 | 静态面成立；**是否被执行**另测（H1c） |
| 11 | 🔴 现行层引用处数 | **我的静态口径 = 72**（`docs/**/*.md` + `AGENTS.md`，减 `_archive/` 与它自己）· **DS 写 77** | **差 5，⛔ 不抹平**（H3） |
| 12 | 🔴 `declaredShareOfDocs` 对不上 | lab 产物 `context-cost-71ac2711.json` 逐位：`docs = 327 份 / 95,157 行 / 2,268,529 tok` · `declaredRuleDocs = 14 份 / 10,543 行 / 254,846 tok` · `declaredShareOfDocs = 0.1123`。而 **`10543 / 95157 = 0.1108 ≠ 0.1123`** | ⚠️ 心算指向 `254846 / 2268529 ≈ 0.1123`（**token 口径**）⇒ **H2c 必须程序化确认，⛔ 不采信心算** |
| 13 | DS 引的三个数的来源 | ⑴⑵ 两个裁定块引的数**都逐位来自 lab `context-cost-71ac2711.json`** | ⇒ **两块共用同一份 lab 读数**（H7） |

⚠️ **第 5 条的口径边界，如实说**：这是**按措辞 grep**（`2026-08-25 评估` / `这一段是那条决定的唯一真源` / `唯一真源` / `刻意`），
⛔ **不保证穷尽** —— 别的措辞写的裁定块查不到。**本格 ⛔ 不声称「DS 侧只有 3 个裁定块」。**

---

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

> 每条写明：**判定面** · **完整分区（⛔ 无空档）** · **预测** · **会推翻我自己的机制**。
> 🔴 **本节新增强制自查（承 §2.20 推论四，A′ 格 H2 踩到的）**：
> 每条规则末尾必须有一行 **「档内自查」**，逐档问「**这一档里塞了几个判定**」。
> 凡档的措辞出现「= / 即 / 也就是」把两件事等同，就要问「这两件事会不会分开发生」——会，就拆档。
> ⛔ 光写「无空档」不够；A′ 格五条取值全部落在预先指到的档里，**仍有一档焊了两个判定**。

### H1 —— 理由 ①「删不了：它是本闸判据的落点」

🔴 **该理由的措辞里就有两件事**，⛔ 预先拆成三条，不合并：
「**删不了**」（技术阻断）· 「**删它得先造新落点 = 净收益零**」（经济性）· 「`WRAP-UP.md` 三处协议要求 prepend」（协议面）。

#### H1a —— 技术阻断：删掉它，`audit:doc-shape` 会不会当场断

- **判定面**：`git archive` 导出 `c1db57b8` 到 `mktemp -d`（⛔ 不碰 pin、⛔ 不碰 DS 工作树），三臂：
  **基线**（不动）· **臂 A**（`rm docs/internal/STATUS-CHANGELOG.md`，⛔ 其余不动）·
  **臂 C（阳性对照，`lab:N48`）**（造一个必然触发 S1 的条件，证判定装置活着）。
- **读数**：三臂各自的 `EXIT` 码 + 自印逐字。
- **分区**：
  - 臂 A `EXIT=1` **且**失败信息逐字点名该文件 ⇒ **理由 ①「删不了」当场成立（技术阻断真实）**
  - 臂 A `EXIT=1` **但**信息不点名该文件 ⇒ **成立，但判读性缺陷**（另段登记，⛔ 不混进成立度）
  - 臂 A `EXIT=0` ⇒ 🔴 **「删不了」的技术阻断读法被推翻** ——
    ⛔ **本档到此为止，不许连带判「所以该删」，也不许连带判 H1b**（见档内自查）
  - **臂 C 不亮**（`EXIT=0`）⇒ ⛔ **不出读数，本条作废**（`lab:N48`）
  - **基线自己就 `EXIT≠0`** ⇒ 落「装置在基线上已异常」档，先查基线，⛔ 不把它当注入结果
    （承 A′ 格 `archiveDir` 那条：**守卫在基线上就静默 ⛔ 别当成自己注入的故障**）
- **预测**：**臂 A `EXIT=0`**（依据：起手读数 #9，`DEST.S1` 是纯字符串常量、未见 `existsSync`）。
- ⚠️ **⛔ 预登记推翻机制（双向）**：
  ① 我可能漏看别处的读取方 ⇒ 造故障前**先穷举** `git grep -n "STATUS-CHANGELOG" -- 'scripts/' '.husky/' '*.json'`，
     把**所有**读取方列成清单再跑，⛔ 不靠 `audit-doc-shape` 一个文件的静态印象；
  ② **⛔ 不许因 A′ 格 `archiveDir` 翻过就反向假定本格必翻** —— 那是外推（§2.20 推论二同型）。
- **档内自查**：❶ 「`EXIT=0`」档只绑**一个**判定（技术阻断不成立），⛔ 不绑「该删」也不绑「净收益非零」——
  二者会分开发生（可能删了不断，但造新落点确实净收益零）。❷ 「`EXIT=1`」档同理只绑技术阻断成立。

#### H1b —— 经济性：「删它得先造一个新落点 = 换个名字的同一个文件，净收益零」

- **判定面**：`audit-doc-shape.mjs` 里 `DEST.S1` 被引用的**全部位置** + `DEST` 上方那行注释逐字
  （DS 引作「FAIL 信息必须含『该搬去哪』…否则重蹈 `WRAP-UP.md:13` 覆辙」）+ 该注释是否仍在。
- **读数**：`d` = 删掉该文件后，为让 S1 的 FAIL 文案仍成立而**必须新建**的落点数（0 或 1）。
- **分区**：`d = 1` ⇒ **成立**（净收益零论证站得住）· `d = 0` ⇒ **推翻**（存在不需新落点的路径，逐字给出）·
  **`DEST` 上方注释已不在活源** ⇒ 落「论据的引文已失效」档，如实登记（`lab:E49` 时效错同族）。
- **预测**：`d = 1`（成立）。
- ⚠️ **⛔ 这一条是纯静态论证，lab 侧独立读数只有「引文是否仍在 + 引用位置数」** ——
  ⛔ **不许把「听起来合理」写成成立**；若 lab 取不到独立读数，**如实落「无独立读数、本条不判」档**，
  ⛔ 不默认采信 DS（§2.20 推论一）。
- **档内自查**：三档各绑一个判定，无「=」焊接。

#### H1c —— 协议面：`WRAP-UP.md` 那条 prepend 协议**实际有没有被执行**

- **判定面**：DS `git log` 上 `docs/internal/STATUS-CHANGELOG.md` 的被改次数 vs 同窗口的 wrap-up 次数
  （以 `docs/STATUS.md` 顶部 "Last updated" 被改次数为 wrap-up 的代理，**口径要写明**）。
- **读数**：`e` = 执行率（改 CHANGELOG 的 commit 数 / 改 STATUS 顶部的 commit 数），窗口标 sha 两端。
- **分区**：`e ≥ 0.9` ⇒ **协议真被执行**（理由 ① 的协议面成立）· `0 < e < 0.9` ⇒ **部分执行**，逐值交出 ·
  `e = 0` ⇒ 🔴 **规定通道 ≠ 实际通道**（D 格 §22.3 同族：一条 owner 拍定的纪律 15/15 读到、0 执行）·
  **代理口径取不到 / 无法把 wrap-up 与 commit 对上** ⇒ 落「代理不可用」档，⛔ 不硬套一个比值。
- **预测**：`e ≥ 0.9`（依据：DS 是高纪律仓，且该文件近 30 天净 +4,146 行说明在被写）。
- ⚠️ **⛔ 预登记推翻机制**：「文件在被写」⛔ 不等于「每次 wrap-up 都写了」——
  前者是**存在性**、后者是**覆盖率**，⛔ 别用前者答后者（`lab:N49` 推论四谓语错同族）。
- **档内自查**：四档各绑一个判定。⚠️ `e = 0` 那档⛔ 不绑「所以协议该改」——那是 owner 的事。

### H2 —— 理由 ②「体量不是缺陷，因为它不在 AI 的读取面」

🔴 拆三条：**交集**（事实）· **分母时效**（那三个数是不是过期读数）· **比值口径**（`0.1123` 是什么比）。
⛔ 不合并 —— 三者会分开发生（交集可以为 0，同时分母已过期、同时比值被读窄）。

#### H2a —— 交集 `i`：`STATUS-CHANGELOG.md` 在不在 `declaredRuleDocs` 那 14 份里

- **判定面**：DS 注入面声明数组（**静态读**，⛔ 不重跑 `metrics/context-cost.mjs` —— 它 `:96` 会 `spawnSync` 跑闸），
  在 `71ac2711` / `c1db57b8` / 活源 `b593c301` **三 sha** 各取一次。
- **读数**：`i ∈ {0, 1}`（该文件在 / 不在），外加 `|declaredRuleDocs|` 三 sha 的值。
- **分区**：`i = 0` **且**三 sha 同一份 ⇒ **HIT**，理由 ② 的事实成立 ·
  `i = 0` **但**三 sha 不同一份 ⇒ **成立但带时效缺口**，逐 sha 交出（⛔ 不合并成一句）·
  `i = 1` ⇒ **推翻**，且**它同时就是重开条件 (b) 的达成**（见 H5b —— 🔴 **但这两件事仍分开记**）·
  **份数 ≠ 14 / 数组取不到** ⇒ 落「量具已过期」档（`lab:E49`）。
- **预测**：`i = 0`，三 sha 同一份（依据：A′ 格已实测该数组三 sha 逐字同一份、12+6+ENTRY 去重 = 14）。
- **档内自查**：⚠️ 「`i = 1`」那档措辞里出现了「**同时就是**」—— 按 §2.20 推论四，
  问「这两件事会不会分开发生」：**不会**（(b) 的字面就是「口径改成含它」）⇒ **允许同档，但仍分行记两个判定**，
  且在报告里**分两处交**，⛔ 不写成一句。

#### H2b —— 分母时效：DS 引的三个数写在 `c1db57b8` 上，读数取自 `71ac2711`

- **判定面**：`c1db57b8` 与 `71ac2711` 之间 `docs/` 树的份数/行数差。
  **`c1db57b8` 自己就删了 34 份 retrospection**（A′ 格已证）⇒ 分母必然已变。
- **读数**：`Δfiles`、`Δlines`（标口径名：`split('\n').length` 还是 `wc -l` —— A′ 格已证两者差 = 份数）。
- **分区**：`Δ = 0` ⇒ 分母未变，DS 引数仍当期 · `Δ ≠ 0` ⇒ 🔴 **裁定引的是过期分母**，交出订正值 ·
  **两 sha 之一取不到** ⇒ 落「取不到」档，⛔ 不估算。
- **预测**：`Δfiles ≤ -34`（至少少 34 份）。
- ⚠️ **⛔ 关键限定，预先写死**：分母过期 **⛔ 不等于结论错** —— `i = 0` 与 docs 总量无关（A′ 格已立同款限定）。
  本条只交「引的数是不是当期」，⛔ **不许据此说理由 ② 不成立**。
- **档内自查**：三档各一个判定；上面那句限定正是为了防「分母过期 = 理由不成立」这种焊接。

#### H2c —— 比值口径：`declaredShareOfDocs = 0.1123` 是**什么**比

- **判定面**：lab 自己的 `metrics/context-cost.mjs` 里该字段的计算式（**读源码**，⛔ 不跑）+ json 三组数。
- **读数**：该字段的分子/分母字段名。
- **分区**：`= lines 比` ⇒ 与 `10543/95157 = 0.1108` 应一致，**不一致则是 lab 自己的量具缺陷**，另段交 ·
  `= tokens 比` ⇒ 🔴 **DS 那段把「份/行/比值」三组数并列写，会被读成行数比** ⇒ 落**口径混写**档
  （⛔ 三个数各自都对，缺陷在并列）· `= 其它口径` ⇒ 逐字交出 · **算式读不出** ⇒ 落「取不到」档。
- **预测**：**`tokens` 比**（起手心算 `254846/2268529 ≈ 0.1123` 对上）。
  ⚠️ **⛔ 心算不作数，必须程序化确认**（承 A′ 格「交付前跑一次程序化自核」那条，本格提前到主证）。
- **档内自查**：四档各一个判定。⚠️ 「口径混写」档⛔ 不绑「所以理由 ② 不成立」——比值只是佐证，不是主论据。

### H3 —— 理由 ③「现行层 77 处引用全是整文件级，指向具体条目的只有 1 处且在它自己内部」

🔴 拆两条：**总处数**（口径/时点）与**带锚点处数**（论证的真正承重点）。⛔ 不合并。

- **判定面**：现行层（`docs/**` 减 `_archive/` 减它自己 + `AGENTS.md`）里对 `STATUS-CHANGELOG` 的引用，
  在 `c1db57b8`（裁定所在）与活源 `b593c301` 各取一次。
- **读数**：`n` = 引用总处数 · `k` = **带 `§` / `#` 锚点**（指向具体条目）的处数。
- **分区（H3a，`n`）**：`n = 77` ⇒ 口径与 DS 同 · `n ≠ 77` ⇒ 🔴 **不同值就是线索**，
  逐条查是**时点差**（两 sha 之间引用增删）还是**口径差**（DS 是否含 `.mjs` / `_archive` / 自身）
  ⇒ **⛔ 不抹平、⛔ 不改成 DS 的数**（§2.19 推论四）· **取不到** ⇒ 落「取不到」档。
- **分区（H3b，`k`）**：`k = 1` **且**那 1 处在文件自身内 ⇒ **HIT**，理由 ③ 成立 ·
  `k = 1` 但在文件外 ⇒ 🔴 **推翻**（分卷有死链风险）· `k = 0` ⇒ **比 DS 说的更强**（如实说「比预测好」）·
  `k ≥ 2` ⇒ 🔴 **推翻**，逐处交出 · **锚点判据取不到** ⇒ 落「取不到」档。
- **预测**：`n ≠ 77`（起手静态口径已得 **72**，差 5）· `k = 1` 且在文件自身内（HIT）。
- ⚠️ **⛔ 预登记推翻机制**：我的 72 是**我的**口径，⛔ 不能拿它当「DS 数错了」的证据 ——
  必须**先把 DS 的口径复原**（试含 `.mjs`、含 `_archive`、含自身等组合），
  复原不出再报「两个读数不同值」这个事实本身（`lab:N47` 一族：**取证工具与被测通道不同就不能推因果**）。
- **档内自查**：H3a / H3b 各档单判定。⚠️ 特别防「`n ≠ 77` ⇒ 理由 ③ 不成立」这种焊接 ——
  **总数差 ⛔ 不影响 `k`**，理由 ③ 的承重点是 `k` 不是 `n`。

### H4 —— 理由 ④「§11.3『归档池不得只进不出』在此空转；近 30 天 +7,623 / −3,477 / 净 +4,146 行」

- **判定面**：DS `git log --numstat -- docs/internal/STATUS-CHANGELOG.md`，窗口**两端标 sha + 日期**。
- **读数**：`+X` / `−Y` / 净 `Z` 三数。
- **分区**：三数逐位同 ⇒ **HIT** · 不同 ⇒ **标窗口端点**，判是**时点差**（DS 写于 2026-08-25，今天 2026-08-26，
  且活源已 +21 commit）还是**口径差**（30 天怎么数、含不含 merge），**⛔ 不抹平** ·
  `Y = 0`（纯 append）⇒ 🔴 **推翻**（DS 的论证正是「有删除，不是纯 append」）· **取不到** ⇒ 落「取不到」档。
- 🔴 **预先声明的假设间依赖，⛔ 事后不许补**：理由 ④ 的论证结构是「§11.3 那条原则的**目的**是降 AI 读取成本，
  而**理由 ② 证明该目的对本文件不成立** ⇒ 原则在此空转」。⇒ **④ 在逻辑上依赖 ②。**
  ⇒ 若 **H2a 落「推翻」档**，则理由 ④ **连带失效**，本条读数只作事实登记、⛔ 不单独判「成立」。
- **预测**：三数**不逐位同**（窗口右端已漂 1 天 + 21 个 commit），但 `Y > 0`（有删除）成立。
- **档内自查**：五档各一个判定；依赖关系已单列，⛔ 不塞进任何一档的措辞里。

### H5 —— 三条重开条件各自达成与否（🔴 **三条分列，⛔ 不合并成一个「重开条件」判定**）

> 承 A′ 格 §24.3 立的交付纪律：**「对方的论据被推翻」与「对方写的重开条件达成」是两件事，
> lab 只交出两句话的差，⛔ 不裁哪个算。** 本格三条重开条件同样**逐条独立判**。

| 条 | DS 逐字 | 判定面 | 分区（⛔ 无空档） |
|---|---|---|---|
| **(a)** | 「它进了任何 onboarding 必读面（L-core / L-ref 触发表 / hook 注入）」 | DS 的 L-core / L-ref 触发表 / hook 注入清单，三 sha 各取一次 | 在 ⇒ **达成** · 不在 ⇒ **未达成** · **三面之一取不到** ⇒ 该面单记「未核」，⛔ 不算未达成也不算达成 |
| **(b)** | 「`declaredRuleDocs` 的口径改成含它」 | 同 H2a 的数组 | 含 ⇒ **达成** · 不含 ⇒ **未达成** · 数组口径已变但仍不含 ⇒ **未达成 + 时效缺口**（分两行记） |
| **(c)** | 「**有人实测报告 grep / 编辑它失败**（工具上限，**不是「感觉大」**）」 | lab 15 个既有 run 的 `tool_use` / `tool_use_result`（§21.6 已记「在检索面 5/15 run」） | 🔴 **预先拆三档**：❶ **有 run 真失败**（报错 / 超限 / 读不完）⇒ **达成** · ❷ **有 run 被截断但未失败**（`head_limit` 命中上限、返回窗口满）⇒ **⛔ 未达成**，但**单独交出**（DS 逐字要的是「失败」不是「截断」）· ❸ **既无失败也无截断** ⇒ **未达成** · ❹ **判定面取不到 / 阳性对照不亮** ⇒ ⛔ 不出读数，本条作废（`lab:N48`） |

- **预测**：(a) 未达成 · (b) 未达成 · (c) 落 ❷ 或 ❸。
- 🔴 **档内自查（本格最关键的一处）**：(c) 的 ❶/❷ 之间正是 A′ 格 H2 那种「一档两判定」的同型陷阱 ——
  「**截断**」与「**失败**」听起来像一回事，实测会分开发生（A′ 格 `r009` 的 `head_limit: 60` 窗口满 = 截断，
  但那次 Grep **没失败**）。⇒ **预先拆成两档，⛔ 不许合并。**
- ⚠️ DS 逐字「⛔ 只是『它又涨了』不构成重开条件」⇒ **H4 的净增读数 ⛔ 不得计入任何一条重开条件的达成。**

### H6 —— 登记面：lab 侧提及处数 `p` 与知情处数 `q`

- **判定面**：lab 仓 `docs/*.md` `proposals/*.md` `reports/*.md` `AGENTS.md` `metrics/*.mjs`
  （⛔ **排除 `runs/*/transcript.jsonl` 与 `subjects/**/inventory/*.json`** —— 起手一次未排除的 grep 吐了 799 KB，
  正是 §2 那条「批量输出撑爆主线」的实例，**口径写死在此**）。
- **读数**：`p` = 提及处数 · `q` = **知情**处数（逐字含「已裁 / hold / 不删的原因 / 唯一真源」等指向该裁定的表述）。
- **分区**：`q = 0` ⇒ 🔴 **`lab:N54` 第二次命中**（存在理由过期）· `1 ≤ q < p` ⇒ **部分知情**，逐处指出 ·
  `q = p` ⇒ **推翻**（我 grep 错了，全知情）· **阳性对照不亮** ⇒ ⛔ 不出读数（`lab:N48`）。
- 另需分组（承 A′ 格 `p = 9` 的做法）：把 `p` 拆成「**登记成未追问/待删**」与「**只是引用它的体量数**」两组，
  ⛔ 不混为一个数。
- **预测**：`p ≈ 31`（起手口径）· `q = 0`。

### H7 —— 跨块：两个裁定块是不是**共用同一份 lab 读数**

- **判定面**：⑴ `audit-plan-lifecycle.mjs:103-125` 与 ⑵ `audit-doc-shape.mjs:48-73` 各自引的数字，
  与 lab `subjects/tvu-ds/inventory/context-cost-71ac2711.json` 逐位比对。
- **读数**：`s ∈ {逐位同一份 / 部分同 / 不同 / 其中一块不引数}`。
- **分区**：**逐位同一份** ⇒ 🔴 **两个裁定块押在同一个 lab 读数上** ⇒ H2b 若判「分母已过期」，
  **影响面是两块不是一块**（⛔ 但仍不等于两块的结论都错 —— 见 H2b 的限定）·
  **部分同 / 不同** ⇒ 逐数交出差 · **其中一块不引数** ⇒ 如实说，本条只对引数的那块判。
- **预测**：**逐位同一份**（起手已见 ⑵ 引的三组数与 json 逐位一致；⑴ 引的三个数 A′ 格已证同源）。
- **档内自查**：四档各一个判定。⚠️ 「逐位同一份」档⛔ 不绑「所以两块都不成立」。

---

## 4. 🔴 逐值指点表（§2.19 推论五 + §2.20 推论四**双重**兑现）

| 读数 | 可能取值 | 落哪一档 | 该档绑几个判定 |
|---|---|---|:-:|
| **H1a** 臂 A `EXIT` | `0` | 技术阻断被推翻 | 1 |
| | `1` + 点名该文件 | 技术阻断成立 | 1 |
| | `1` 不点名 | 成立 + 判读性缺陷（另段） | 1 |
| | 臂 C 不亮 | ⛔ 作废，不出读数 | 1 |
| | 基线 `EXIT≠0` | 「装置基线异常」档 | 1 |
| **H1b** `d` | `1` | 成立 | 1 |
| | `0` | 推翻 | 1 |
| | 引文已不在活源 | 「引文失效」档 | 1 |
| | **无 lab 侧独立读数** | **「不判」档**，⛔ 不默认采信 DS | 1 |
| **H1c** `e` | `≥0.9` | 协议真被执行 | 1 |
| | `(0, 0.9)` | 部分执行，交比值 | 1 |
| | `0` | 规定通道 ≠ 实际通道 | 1 |
| | 代理口径不可用 | 「代理不可用」档 | 1 |
| **H2a** `i` | `0` + 三 sha 同 | HIT | 1 |
| | `0` + 三 sha 不同 | 成立 + 时效缺口 | 1 |
| | `1` | 推翻 ‖ **另行**记 (b) 达成 | **2（已判会同时发生，分两处交）** |
| | 份数≠14 / 取不到 | 「量具已过期」档 | 1 |
| **H2b** `Δ` | `0` | 分母当期 | 1 |
| | `≠0` | 引的是过期分母（⛔ 不推「理由不成立」） | 1 |
| | 取不到 | 「取不到」档 | 1 |
| **H2c** 算式 | `tokens` 比 | 口径混写档 | 1 |
| | `lines` 比 | lab 自己的量具缺陷（另段） | 1 |
| | 其它口径 | 逐字交出 | 1 |
| | 读不出 | 「取不到」档 | 1 |
| **H3a** `n` | `77` | 口径与 DS 同 | 1 |
| | `≠77`（预测 72） | 线索档：先复原 DS 口径，复原不出只报「两读数不同值」 | 1 |
| | 取不到 | 「取不到」档 | 1 |
| **H3b** `k` | `1` 且在自身内 | HIT | 1 |
| | `1` 但在文件外 | 推翻 | 1 |
| | `0` | 比 DS 说的更强 | 1 |
| | `≥2` | 推翻，逐处交出 | 1 |
| | 取不到 | 「取不到」档 | 1 |
| **H4** 三数 | 逐位同 | HIT | 1 |
| | 不同 + `Y>0` | 时点/口径差，标端点，⛔ 不抹平 | 1 |
| | `Y=0` | 推翻 | 1 |
| | 取不到 | 「取不到」档 | 1 |
| | **H2a 落推翻** | ④ 连带失效，本条只作事实登记 | 1（依赖已单列） |
| **H5(a)** | 在任一 onboarding 必读面里 | **达成** | 1 |
| | 三面都不在 | **未达成** | 1 |
| | 某面取不到 | 该面单记「未核」，⛔ 不算达成也不算未达成 | 1 |
| **H5(b)** | `declaredRuleDocs` 含它 | **达成** | 1 |
| | 不含 | **未达成** | 1 |
| | 口径已变但仍不含 | 未达成 + 时效缺口（**分两行记**） | 1 |
| **H5(c)** | ❶ 有 run 真失败 | **达成** | 1 |
| | ❷ 有截断未失败 | **未达成**，但单独交出 | 1 |
| | ❸ 既无失败也无截断 | 未达成 | 1 |
| | ❹ 判定面取不到 / 对照不亮 | ⛔ 作废 | 1 |
| **H6** `q` | `0` | `lab:N54` 第二次命中 | 1 |
| | `1…p-1` | 部分知情，逐处指出 | 1 |
| | `= p` | 推翻（我 grep 错了） | 1 |
| | 对照不亮 | ⛔ 作废 | 1 |
| **H7** `s` | 逐位同一份 | 两块共用一份读数 | 1 |
| | 部分同 / 不同 | 逐数交差 | 1 |
| | 某块不引数 | 只对引数那块判 | 1 |

🔴 **全表档内自查结论（程序化数过，⛔ 不凭印象）**：全表 **53 档**，
**只有 H2a 的 `i=1` 档绑了 2 个判定**，且已判明二者**必然同时发生**（(b) 的字面就是「口径改成含它」）
⇒ **允许，但报告里分两处交，⛔ 不写成一句。** 其余 **52 档全部单判定**。
⚠️ **本条自查本身就抓到过错**：初稿写「44 档」、H5(a)/(b) 各把三个取值压成一行
（与全表「一行一档」不齐 ⇒ 档数统计失真）—— **落盘前用 `awk` + `grep -c` 重数才发现**，已修。
⇒ 这正是 A′ 格立的「交付前程序化自核」提前到预注册阶段执行的第一次命中。

⚠️ 另预先定死三处 A′/E 格同族风险：
- **「成立」的定义**：本格「理由还成不成立」一律指**该理由所依据的事实**是否仍为真，
  ⛔ **不含**「该理由的推理是否正当」；后者另段单独交（A′ 格原样沿用）。
- **「引用」的定义**：H3 的 `n` 只数**文本里出现该文件名/路径**，⛔ 不含「讲同一主题但没点名」。
- **「碰触 / 失败」的定义**：H5(c) 的「失败」= **工具真报错或真读不完**，
  ⛔ **截断不算失败**、⛔ **「感觉大」不算**（DS 逐字排除）。

---

## 5. ⛔ 本格明确不做（预先划界）

1. ⛔ **不裁 `STATUS-CHANGELOG.md` 该不该删、该不该重开、该不该切分**，⛔ 不替 DS 选修法、⛔ 不催。
2. ⛔ **不改 DS 的任何文件**（含那三段 📌 注释本身、含 `ci.yml:26` 那处陈旧头注释）。
3. ⛔ **不代做起手读数 #7 那条 2026-09-01 到期的重开条件复算** —— owner = DS，lab 只登记。
4. ⛔ **不产新 run**（承诺 **0 个**）· ⛔ 不 `pnpm build`（`lab:E48`）· ⛔ 不跑 `pnpm release`（含 `--dry-run`）·
   ⛔ 不重跑 `metrics/context-cost.mjs`（`:96` 会 `spawnSync` 跑闸）。
5. ⛔ **不改 `provenance.pinnedSha`**（`lab:E46`）· ⛔ 不动四个 pin 的工作树 · ⛔ 不碰 DS 工作树（含它两项既存 dirty）。
6. ⛔ **不开 §24.8 的候选 A / B / C / D**（Grep 返回序机制 · stale-anchors 入站面 · `_archive` 其余子目录 ·
   4 份 `.md` 读取方）—— 本格四行块已核过它们的前提，结论**只登记进未覆盖清单**，⛔ 不顺手做。
   ⚠️ 特别是 **C 的 `audit-stale-anchors.mjs:717-718` 那条硬依赖** —— 起手撞见，**只登记，⛔ 本格不测**。
7. ⛔ **不重算 C 格 52 文件覆盖表**（改 C 格量具，需单独裁）· ⛔ 不查 pattern-index 热区 1795–2124 ·
   ⛔ 不追 `squeeze.readButNotDeclared`。
8. ⛔ **不写「两边独立收敛」**（两仓 owner 同一个人）· ⛔ 不推断谁先谁后、谁影响谁。
9. ⛔ **不声称「DS 侧只有 3 个裁定块」**（起手读数 #5 的口径边界已写明：按措辞 grep，不保证穷尽）。

---

## 6. 收尾必交

1. **四条理由逐条核证表**（理由 × lab 侧独立读数 × 成立/部分/推翻），每格逐字证据 + 行号；
   ⛔ **不以「DS 这么写了」当任何一格的证据**（§2.20 推论一）。
2. **三条重开条件各自的达成判定**，(c) 必须写明落 ❶/❷/❸ 哪档，且**截断与失败分开交**。
3. **与本预注册逐条对账** —— **14 条可判定条目**：
   `H1a` `H1b` `H1c` · `H2a` `H2b` `H2c` · `H3a` `H3b` · `H4` · `H5(a)` `H5(b)` `H5(c)` · `H6` · `H7`
   （⚠️ `H1`/`H2`/`H3`/`H5` 只是父标题，**⛔ 不单独判**；小节标题数 13 ≠ 条目数 14，⛔ 别混用），
   ⛔ 事后不改假设；
   落空档要如实说落了空档，并对照 §4 逐值表说明「这个值我预先指到了没有」；
   🔴 **另加一项 A′ 格没有的对账：逐档复查「该档最终是不是只绑了一个判定」**（§2.20 推论四）。
4. **中途判断反转逐条交出**；**造故障是用来推翻自己的**（A′ 格三次反转两次靠它）。
5. **登记面订正落盘（追加段，⛔ 不改原文）**：
   - `round2-status.md` §20.6 第 2 条 / §21.6 / §22.7 / §23.9 / §24.8 那 **5+ 处**「未追问」订正为
     「**DS 2026-08-25 已答，真源 = `audit-doc-shape.mjs:48-73`**」
   - `proposals/2026-08-24-archive-triage.md` §3 第 4 步（删 `STATUS-CHANGELOG.md`）加注**已裁不做**
   - pin 落后 commit 数：D 格 3 → E 格 19 → A′ 格 20 → **本格 21**（⛔ 每格重取）
   - **DS 侧同族裁定块已知 3 个**（含 `audit-doc-shape.mjs:29-40` 那条 **2026-09-01 到期**的，标 owner = DS）
   - 起手撞见但本格不测的：`audit-stale-anchors.mjs:717-718` 对 `_archive/retrospection` 的硬依赖 ·
     `LIVE_TREE_EXCLUDE_PREFIXES` 排出站不排入站 · `_archive` 活源实为 5 个子目录
     （§24.8 第 3 条写的 `_design-kickoffs` **在活源不存在**，登记的名字就错了）
6. **收尾自证**：结论在 **DS 当前 HEAD** 上仍成立 —— **先列判定面文件清单，再扫完整窗口**
   （起手 21，收尾**重取实际值**），⛔ 不重蹈 D 格只扫 3 个。
7. **起止不变式**：四个 pin `dirty=0`、`HEAD` 未变（起手/收尾各测一次）；
   golden set **若用**则先跑 `node metrics/golden-set-freeze.mjs --pin ~/.ai-ds-lab/pins/tvu-ds-c1db57b8`，
   且 ⛔ **不带管道单跑**（`lab:N47`）；**若不用则如实说不用**。
8. **交付前跑一次程序化自核**（A′ 格靠它抓到自己两处引错行号）——
   本格额外把 **H2c 的心算结论**纳入自核面（⛔ 心算不作数）。
9. **本格未覆盖清单**，如实登记，⛔ 不算已验。

---

## §2.1 事后订正（2026-09-11，⛔ 不改上方表内文字 —— 预注册纪律）

**第 7 行**（⑶ 的重开条件类型）那句「⇒ owner = DS，**lab 只登记，⛔ 不代做**」**已不成立**：

- 它写于 **2026-08-27**，其前提是 `AGENTS §1.1` 边界改判（**2026-09-01**：lab 可直接写 DS master）**之前**的边界
  ⇒ 属 `lab:E49`「**边界本身已不成立**」那一类，⛔ 不是「读数过期」。
- 🔴 而它与 §30（2026-09-11）给 `proposals/2026-08-24-archive-triage.md` 补的那条登记
  （「判据齐备、到期可判 ⇒ 推荐下一格做它」）**并存且互相矛盾** ⇒ `lab:N56`（知情面分叉）的又一实例。
- ⇒ 🟢 **2026-09-11（review §31）已实际复核**：pin `30c2ab86`，**未达成 ⇒ ⛔ 不给 backlog 上闸**；
  并把 DS 那条**日期型**重开条件换成**存量阈值型**（它到期后整整 10 天没有任何机制提醒过任何人）。
  读数、口径分歧与两条如实登记的限制 ⇒ [`docs/2026-09-09-ds-slim-optimize-review.md` §31](2026-09-09-ds-slim-optimize-review.md)。
