# A⁗ 格预注册：`Ruling-N` 编号裁定体系的**悬空引用审计** —— 起手自查已把候选 A 的前提推翻

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

- 立档时间：2026-08-27
- ⚠️ **命名**：本格是 [`docs/round2-status.md`](round2-status.md) **§26.7 第 6 条**（候选 **A**）**改写后的形态**。
  ⛔ **别与 §24 的 `A′ 格`（桶二整条线）混淆** —— 那是另一格。本格记作 **`A⁗ 格`**（A 系列第五格）。
- 起手环境：DS 活源 HEAD = **`d9cac2e1`**（A″′ 格收尾记 `d9cac2e1`，**本格重取仍同值**）·
  pin `c1db57b8` 落后 **23**（D 3 / E 19 / A′ 20 / A″ 21 / A″′ 22→23 ⇒ **每格重取，已兑现；本格与上格同值**）
- 四个 pin 起手 `dirty = 0`（`339a72bf` / `4a68e02d` / `71ac2711` / `c1db57b8`，逐 pin 实测）
- DS 工作树既存 dirty 两项（`skills/shared-vocab-rules/vocabulary.md`、
  `docs/internal/_generated/backlog-owner-decisions.html`）—— **⛔ 不是本格弄脏的，⛔ 不清**
- 本格承诺：**0 个新 run · 0 个新量具 · ⛔ 未 build · ⛔ 未跑 `pnpm release`（含 `--dry-run`）·
  ⛔ 未重跑 `context-cost.mjs` · ⛔ 未用 golden set（故 ⛔ 不跑 freeze）·
  ⛔ 只读 `git grep` / `git show`，⛔ 不 checkout、⛔ 不碰 pin、⛔ 不碰 DS 工作树**

---

## 1. 被验命题

[`docs/round2-status.md`](round2-status.md) **§26.7 第 6 条**逐字：

> `Ruling-N` 编号裁定体系**只登记未穷举**（`pr-checks.yml` 引 `Ruling-1` / `Ruling-11`，
> 疑似真源在 DS `docs/internal/retrospection/2026-08-21-criteria-that-never-fire.md`）
> —— **A″ 格的措辞 grep 没覆盖到这一族。⚠️ 按措辞 grep，⛔ 不保证穷尽。**

**要验的**：① 这个编号体系的**引用面**有多大；② 它的**定义面**在哪、能不能被 lab 独立复核；
③ 「疑似真源」那半对不对；④ 「A″ 格措辞 grep 没覆盖到」那半对不对。

⛔ **不验 / 不裁**（全是 DS 的裁定权）：
- 这些编号裁定**内容本身**对不对；
- 悬空引用**该不该修**、DS **该不该建**一份定义面；
- Ruling-1「目录在但 0 份 .md ⇒ 不红」这个行为**该不该改**（A″′ 格 §3.1 已逐字声明 ⛔ 不裁，本格延续）。

---

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

### 2.0 三条起手纪律的执行结果

**① AGENTS §2 第 22 条【第五行】（lab 自己验过没）** —— 判定面 = HEAD `2bf419e` 的树
（`git status --porcelain` 实测为空 ⇒ 工作树 == HEAD 树，**本 session 尚未污染判定面**）；
口径写死 `git grep … ':(exclude)runs/**/*.jsonl'`：

| 候选 | grep 的关键读数 | lab 内命中 | 判 |
|---|---|---|---|
| **A（本格）** | `Ruling-[0-9]+` / `criteria-that-never-fire` | **5 处 + 4 处**，全部是 **A″′ 格自己的产物** | ✅ **未干过** |
| A 假阳 | `恒假\|永不触发\|never.?fire` | **27 处**，全是 lab 自己 `lab:N49` 那条线 | ⚠️ **关键词假阳，已排除** |
| B | `8c36e6a1` | 6 处，全是 A″′ 产物 | ✅ 未干过 |
| C | `24 个孤儿` | 6 处，全是 A″′ 产物 + `AGENTS.md:691` | ✅ 未干过 |
| C 另一半 | `77 处` / `k=0` | **A″ 格已验**（`round2-changelog-hold-plan.md:181` · report H3b · `status:1627`） | ⚠️ 一半已干过 |
| **D** | `2,449` / `2,859` / `15 份` / `18 份` | 🔴 **撞红**（见 2.2） | 🔴 前提是过期读数 |
| **E** | `5 份处方` | 🔴 **半撞红**：`status:939` §18.4 标题逐字「口径已订正 = **本轮全部 5 份处方**」且已逐条对账 | ⚠️ 部分已干过 |

**② AGENTS §2 第 20 条四行块**（对候选 A）：

| 行 | 内容 |
|---|---|
| **登记记的** | §26.7#6 逐字「疑似真源在 DS `docs/internal/retrospection/2026-08-21-criteria-that-never-fire.md`」 |
| **现取的** | DS `git grep -nE "Ruling-[0-9]+" -- . ':(exclude).claude/worktrees/**'` ⇒ **5 处 / 3 文件 / 3 个编号**（`Ruling-1`×3 · `Ruling-5`×1 · `Ruling-11`×1）；裸 `Ruling`（不带编号）= **0 处** |
| **前提还成不成立** | 🔴 **不成立** —— 那份文件是**引用方**：`:20` 处置列引 `Ruling-1`、`:21` 引 `Ruling-5`，⛔ **不是定义面**。真源自称在 `scripts/audit-claim-vs-livesource.mjs:296` 逐字「详见计划 §7.2 与 **SDD ledger** Ruling-1」 |
| **它还该做吗** | ✅ **该做，且性质已变** —— `sdd ?ledger` DS 内 **6 处、0 处是含 Ruling 的文件**；两份 `*ledger*.md`（`phase0-ledger` / `audit-iteration-ledger`）内 `ruling\|裁定` 命中 **0** ⇒ 起手读数指向「**5 处引用 / 0 处定义**」 |

**③ AGENTS §2 第 21 条推论一（把 grep 跑完）**：编号只出现 3 个，但 `pr-checks.yml:260` 逐字
「`--all` 已按 **2026-08-20 Ruling-11** 整条删除」⇒ 体系**至少 11 条** ⇒ **定义面不在已扫面内**。
⚠️ `裁定` 一词 DS 内 **71 处全是散文式 owner 裁定，⛔ 不是编号体系** —— 关键词假阳，已排除。

### 2.1 起手已取的 5 处引用逐字（本格 must-hit 控制的基准）

| # | 位置（活源 `d9cac2e1`） | 逐字 |
|---|---|---|
| 1 | `.gitea/workflows/pr-checks.yml:260` | 「`--all` 已按 2026-08-20 **Ruling-11** 整条删除」 |
| 2 | `.gitea/workflows/pr-checks.yml:263` | 「「目录在但 0 份 .md ⇒ 不红」是 **Ruling-1** **刻意**保留的行为（S3 只管目录消失），别从这里改。」 |
| 3 | `docs/internal/retrospection/2026-08-21-criteria-that-never-fire.md:20` | 处置列「pre-flight 自查（**Ruling-1**）」 |
| 4 | 同上 `:21` | 处置列「dispatch 前逐行读 brief（**Ruling-5**）」 |
| 5 | `scripts/audit-claim-vs-livesource.mjs:296` | 「详见计划 §7.2 与 **SDD ledger Ruling-1**」 |

三 sha（`d9cac2e1` / `c1db57b8` / `71ac2711`）上 `criteria-that-never-fire.md` **均存在**
（`git cat-file -e` 实测）⇒ 引它 ⛔ 仍须标 sha，但不会落空。

### 2.2 顺带撞出的一条（🔴 **不属本格，登记归档，⛔ 本格不追**）

候选 D 的第五行 grep 撞红：处方 [§1 表](../proposals/2026-08-24-archive-triage.md#L41)
`_archive/retrospection` **53 份 / 7,524 行**、「外部入站=0」**35 份 / 4,665 行** ⇒ 有入站 = **18 份 / 2,859 行**；
而处方 [§2 桶一:60](../proposals/2026-08-24-archive-triage.md#L60) 仍写「**15 份 / 2,449 行**有外部入站」
= **S1 原报**，lab 自己早已订正（[`retrospection-s1.md:19`](../reports/2026-08-24-retrospection-s1.md#L19) 表内即 18/2,859；
[`s2-s3.md:16`](../reports/2026-08-24-retrospection-s2-s3.md#L16) 逐字「（**原报** 15 / 2,449）」）。
**两侧算术各自自洽**：`7,524 − 4,665 = 2,859`（新口径）· `7,524 − 2,449 = 5,075` = S1 原报 S2 待判「38 份 / 5,075 行」（旧口径）
⇒ **同一份处方内 §1 与 §2 分属两个口径世代** ⇒ `lab:N56`「知情面与登记面分叉」**第 4 个实例**。
⚠️ ⛔ **不抹平**：`18 份`（文件数）与 A″′ 臂 E 的 `18 处`（孤儿引用处数）**仍是两个口径**，
数值相同 ⛔ 不足以判同批 —— 要判需重跑臂 E（**本格 0 新 run，故 ⛔ 不做**）。

---

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

> **每一档下面都写两问的答案**（§2.21 推论三 + §2.22 推论三）：
> ①【这一档绑了几个判定 —— 命题的哪部分被判了、哪部分没被判】
> ②【这个读数的取值域，我的定义覆盖全了吗 —— 含「取不到时怎么办」这类退路，
>   以及「这个读数是不是两个正交维度压成一个」】

### H1 —— 引用面穷举（三 sha 各取）

**读数**：`r_<sha>` = `Ruling-<数字>` 处数 · `f_<sha>` = 文件数 · `E_<sha>` = 编号集合。
三 sha = 活源 `d9cac2e1` · pin `c1db57b8` · pin `71ac2711`。

| 档 | 条件 | 判 |
|---|---|---|
| H1-a | `r_live = 5` | ✅ **复证起手读数**（⛔ 不算新发现） |
| H1-b | `r_live ≠ 5` | 🔴 起手读数错，逐条查我自己的口径（`lab:N48`） |
| H1-c | 三 sha 读数**相同** | 报单值 |
| H1-d | 三 sha 读数**不同** | **逐 sha 报，⛔ 不合并成一个数**（引它必须标 sha） |

**①绑几个判定**：**1** —— 纯计数事实。⛔ **不裁**「引用该不该有这么多」「体系该不该穷举」（应然，DS 的）。
**②取值域**：`r ≥ 0` 全覆盖。
⚠️ **退路**：某 sha 上某文件**不存在** ⇒ 记 `N/A（文件不存在）`，**⛔ 不记 `0`** ——
`0` 与 `N/A` 是**不同档**。这正是 A″′ 格那道 must-hit「在 `71ac2711` 上不存在」被预注册退路
误设为「判定面为空」的**同型坑**（§26.5 ⚠️ 退路失效），本格**预先拆开**。

### H2 —— 定义面存在性（DS **tracked** 面）

**读数**：`d_tracked` = tracked 面上「**逐条定义** Ruling-N」的载体份数。
**定义面的判据**（跑前写死）：一处载体里出现 **≥ 2 个不同编号**且伴随各自的**裁定正文**
（⛔ 只出现编号而无正文的算引用，不算定义）。

| 档 | 条件 | 判 |
|---|---|---|
| H2-a | `d_tracked = 0` | tracked 面**无定义面** ⇒ 5 处引用悬空（**仅就 tracked 面而言**） |
| H2-b | `d_tracked ≥ 1` | 报出载体路径 + 它定义了哪些编号 ⇒ §26.7#6 的「只登记未穷举」可就地穷举 |

**①绑几个判定**：**1** —— 存在性事实。⛔ **不裁**「该不该建定义面」「这算不算缺陷」。
**②取值域**：`0` / `≥1` 覆盖全。
⚠️ **must-hit 控制**（`lab:N48`：判据返回 0/空集先证判定面非空）：**同一条 grep 命令必须能命中
§2.1 那 5 处已知引用**，否则判定面塌，`d_tracked = 0` **⛔ 不许采信**，当场报装置故障。
⚠️ **must-not-hit 控制**（§3 铁律 2 推论一）：`裁定` / `恒假` / `永不触发` 这类散文词
**⛔ 不算本体系命中**（起手已证 DS 71 处 / lab 27 处全是别族）。

### H3 —— 定义面在 tracked **之外**（起手自查的显式缺口，⛔ 不预判）

**⚠️ 本档是三个不同的面，⛔ 不许压成「定义面存不存在」一个读数。**

**读数**（各自独立）：
- `d_untracked` = DS 仓内 **untracked + gitignored** 面上含 Ruling 编号的文件数
- `d_claude` = DS `.claude/` 下（**本档不排 `worktrees/`**）含 Ruling 编号的文件数
- `d_out` = DS **仓外**（`~/.claude/` superpowers/插件面）含 Ruling 编号的文件数

| 档 | 条件 | 判 |
|---|---|---|
| H3-a | 三者**全为 0** | 定义面在**已扫的全部面**上不存在 ⇒ 悬空结论**加强** |
| H3-b | 任一 `≥ 1` | **逐面报路径**，并标「该面**不在 lab 的取证承诺面内**」（⛔ 不据此裁 DS） |

**①绑几个判定**：**3** —— 三个读数各绑 1 个面的存在性。⛔ 合并会把三个面压成一个（§2.22 推论三同型）。
**②取值域**：各 `≥ 0`。
⚠️ **退路**：某个面**不可达**（不存在 / 无权限 / 超出承诺面）⇒ 记 `不可达（原因）`，**⛔ 不记 `0`**（同 H1 退路）。
⚠️ `d_out` 只做**存在性**扫描，⛔ 不读其内容、⛔ 不写入报告正文细节（不是本项目的取证面）。

### H4 —— 「SDD ledger」这个指针的可达性（真源**自称**）

**⚠️ 拆两个正交维度**（§2.22 推论三：状态 / 归因）：
- `l_exist` = DS 侧**名字含 `ledger`** 的文件份数（起手 tracked 面实测 = **2**）
- `l_hit` = 其中**含 Ruling 编号**的份数（起手 tracked 面实测 = **0**）

| 档 | 条件 | 判 |
|---|---|---|
| H4-a | `l_exist ≥ 1` ∧ `l_hit = 0` | **载体在、内容不在** ⇒ 指针指向一个**不含被引编号**的文件 |
| H4-b | `l_exist = 0` | 指针指向的载体**根本不存在** |
| H4-c | `l_hit ≥ 1` | 指针**可达** ⇒ 就地穷举编号体系 |
| H4-d | `l_alt ≥ 1`（**第三态**） | 名为 ledger 的文件存在且含**别的编号写法**（`裁定 N` / `R-N` / 表格序号 / `#N`）⇒ **⛔ 不压进 `l_hit = 0`**，单独报 |

**①绑几个判定**：**2**（`l_exist` / `l_hit`）+ 第三态读数 `l_alt`。
⛔ **不裁**「DS 该不该建这份 ledger」「这个指针算不算断」（应然，DS 的）。
**②取值域**：⚠️ **第三态 `l_alt` 已显式留档** —— 这是 A″ 格 `k` 只定义 `§`/`#` 锚点、
实测命中行号形式那种「取值域没覆盖全」的**同型坑**（已连中两次），本格**预先补上**。
⚠️ **退路**：`ledger` 一词若在 DS 侧命中数 **> 20**，说明我的文件名判据太宽 ⇒ 先证判据再取数，⛔ 不直接报。

### H5 —— 被引 3 个编号的**内容**可复核性（🔴 本格核心，最容易焊接）

**⚠️ 拆两个正交维度**（同 H4；这正是 §2.22 推论三立的判据）：
- `c_behav` ∈ `{0,1,2,3}` = 3 个编号（`1` / `5` / `11`）中，**其引用处声称的行为**在 DS 侧
  有**独立佐证**（代码 / 闸输出 / lab 已有实测）的个数
- `c_num` ∈ `{0,1,2,3}` = 3 个编号中，**编号本身**能追溯到定义面的个数

| 档 | 条件 | 判 |
|---|---|---|
| H5-a | `c_behav > c_num` | **行为可复核、编号不可复核** ⇒ 悬空的是**编号这层索引**，⛔ 不是裁定内容 |
| H5-b | `c_behav = c_num` | 两维度同步 ⇒ 报单一结论 |
| H5-c | `c_behav < c_num` | 编号可追但行为无佐证 ⇒ 🔴 反常，先查我自己的口径 |

**①绑几个判定**：**2** —— 两个正交维度各 1。
⛔ **不裁**「悬空引用该不该修」（应然，DS 的）；⛔ **不裁** Ruling-1 那个行为该不该改（A″′ §3.1 已声明，本格延续）。
**②取值域**：`0–3` 全覆盖；「行为可复核但编号不可复核」这个第三态**已由拆维解决**，有档可落（H5-a）。
⚠️ **退路**：某编号的引用处**只给编号、无内容描述**（`Ruling-5` 疑似如此）⇒ 该编号在 `c_behav` 上
记 **`无从判`**，**⛔ 不记 `0`**（`0` = 查过且无佐证；`无从判` = 没有可查的命题）。
⚠️ **预期已知**：`Ruling-1` 声称的行为「目录在但 0 份 .md ⇒ 不红」已由 **A″′ 格臂 E 实测**
（删光文件留空目录 ⇒ must-hit 不响）⇒ 预测它落 `c_behav` 的命中侧。
**⛔ 引用该实测必须标 sha `c1db57b8` 且标明「⛔ 未验证可外推到活源」**（A″′ §26.2 逐字）。

### H6 —— §26.7#6「A″ 格措辞 grep 没覆盖到这一族」是否成立

**读数** `h` = A″ 格那 4 个措辞（`唯一真源` / `刻意` / `重开条件` / `20XX-XX-XX 评估`）
对 **§2.1 那 5 处引用所在行**的命中处数。

| 档 | 条件 | 判 |
|---|---|---|
| H6-a | `h = 0` | §26.7#6 那句 ✅ **成立** —— 措辞组合确实扫不到这一族 |
| H6-b | `h ≥ 1` | 🔴 **不成立** —— 措辞 grep **覆盖到了**；漏的是「**命中之后没往下追编号**」⇒ **两件事不同，⛔ 别混写**（`lab:N49` 推论四「谓语错」同族） |

**①绑几个判定**：**1** —— 命中数事实。⛔ **不裁** A″ 格当时该不该继续追（那是对我自己过去行为的应然评价，另立）。
**②取值域**：`0` / `≥1` 覆盖全。
🔴 **跑前写死的预测**：起手已见 `pr-checks.yml:263` 逐字含「**刻意**」⇒ **我预测 `h ≥ 1`**，
即 **§26.7#6 后半句会被推翻**。⛔ 事后不改此预测。

### H7 —— lab 侧登记面（判定面 = **跑前 commit 的树**）

**读数**：`p` = lab 内提及 Ruling 的处数 · `q` = 其中**知情**「真源不是 `criteria-that-never-fire.md`」的处数 ·
`q_attr` = **状态知情但归因错**的处数（**第三态**）。

| 档 | 条件 | 判 |
|---|---|---|
| H7-a | `q = p` | lab 全面知情 |
| H7-b | `0 < q < p` | 部分知情，逐处报 |
| H7-c | `q = 0` ∧ `q_attr > 0` | **状态登记了、归因写错了** ⇒ `lab:N56` 同族（§25.5 第 6 条那一态） |
| H7-d | `q = 0` ∧ `q_attr = 0` | 完全未登记 |

**①绑几个判定**：**2**（`p` / `q`）+ 第三态 `q_attr`。
**②取值域**：⚠️ 三态**已显式留档**（§2.22 推论三立的判据，A″′ 格 H4 正是漏了这一态）。
⚠️ **判定面纪律（§2.22 推论五）**：`p` / `q` / `q_attr` 必须在
**`git archive <本预注册 commit> | tar -x -C "$(mktemp -d)"`** 导出的树上量，
**⛔ 不在工作树当前状态上量** —— 因为 §27 与本文件**本身就会成为判定面的一部分**，
文件级 `--exclude` 对「追加进既有判定面文件的段落」**结构性无效**。
🔴 **跑前写死的预测**：`p = 5`（全是 A″′ 产物）· `q = 0` · `q_attr = 3`
（`plan:64-65` / `status:1803-1804` / `report:258-259` 三处逐字写「疑似真源在 criteria-that-never-fire.md」）。

---

## 4. 控制（内建，签名一变当场报装置故障）

| 控制 | 内容 | 失败即 |
|---|---|---|
| **must-hit** | 主 grep 命令必须命中 §2.1 那 **5 处**（逐处比对文件+行号） | 判定面塌 ⇒ 所有 `0` 读数 ⛔ 不许采信 |
| **must-not-hit** | `裁定`（DS 71 处散文）/ `恒假\|永不触发`（lab 27 处 `lab:N49` 线）**⛔ 不算本体系命中** | 关键词假阳混入 ⇒ 读数虚高 |
| **口径写死** | 所有 grep 排除写进命令：lab 侧 `':(exclude)runs/**/*.jsonl'`；DS 侧 `':(exclude).claude/worktrees/**'`（**H3 除外，该档故意包含**） | ⛔ 不靠事后过滤（§2.21 推论二⚠️） |
| **整齐读数先当假阳** | 任一读数呈「每个样本恰好 N 次」或与另一读数**不自然相等**（如 `18` vs `18`）⇒ 先追查再采信 | §2.21 推论二② |
| **自核脚本自身** | 交付前程序化自核；**报红先判「红在被核对象还是红在自核脚本的口径」** | §2.22 推论五 ⚠️ |

---

## 5. 交付纪律

1. **三次反转（若有）逐条交出**，⛔ 不事后改假设。
2. **逐值表**：每个读数标**落哪一档 / 有无空档 / 该档绑了几个判定**。
3. **引任何 DS 读数必须标 sha**（活源会漂，本 session 内也可能漂 ⇒ **收尾重取 DS HEAD 并逐项扫落后窗口**）。
4. 🔴 **第 22 条推论一（本格必须兑现）**：若判出「对方已做 / 已裁 / 指针已断」，
   **必须当场回改那条待做项的登记面本身**（= `docs/round2-status.md` **§26.7 第 6 条正文**），
   ⛔ 不能只写进本格报告和 §27。
5. 顺带撞出的 §2.2（候选 D 口径世代分叉）**必须回改处方 §2 桶一:60 的登记面**，
   并在 §26.7 第 4 条就地标注 —— 同属第 4 条推论一的兑现。⛔ 但 ⛔ 不抹平「18 份 vs 18 处」。
6. 收尾自证：四个 pin `dirty` 起止 · DS 工作树 dirty 起止 · 0 新 run · 未 build / 未 release / 未 freeze。
