# 预注册 —— A′ 格：桶二**整条线的存在理由**复核（DS 已裁 hold，lab 零登记）

> **跑前落盘，⛔ 事后不改假设**（照 `919e7ed` / `de73e1d` / `f00fc9e` 纪律）。
> §2「起手实测」逐条登记了写这份预注册**之前**我已经看到的东西（含 §2.0 三行块前提核验）——
> 那些**不算**本格的验证结果，⛔ 不得事后当成「假设被证实」。

- **格位**：第二轮 A′ 格。⚠️ **不是** `docs/round2-status.md` §23.9 候选清单里的任何一条 ——
  它是核那张清单的前提时**撞出来的**，如实标注为**计划外开格**（形态同 E 格 §23.6）。
  §23.9 第 2 条（候选 A）与第 3 条（候选 B）的**决策前提被本格发现的东西掀掉**，故改开本格。
- **日期**：2026-08-26
- **成本承诺**：**0 个新 run** · ⛔ 不 build · ⛔ 不跑 `pnpm release`（含 `--dry-run`） ·
  ⛔ 不碰四个 pin 的工作树 · ⛔ 不碰 DS 主仓工作树 · 本格**预期全程只读**（若需实测，一律
  `git archive` 导出到 `mktemp -d`）
- **起始不变式**：四个 pin `HEAD` = `339a72bf` / `4a68e02d` / `71ac2711` / `c1db57b8`，`dirty` = 0/0/0/0
  （起手已实测 `c1db57b8` = `0`，其余三个收尾一并复核）；
  golden set v1 @ `c1db57b8` 用前必跑，**⛔ 不带管道单跑取退出码**（`lab:N47`）
- **⚠️ 新增量具**：预期 **0 个**。本格是登记面复核 + 只读核证，⛔ 不新造量具；
  若中途确需，按 `lab:N50` 推论一先写边界表再用。

---

## 1. 被验命题

**起因**（§2.0 三行块）：DS 侧 `scripts/audit-plan-lifecycle.mjs:103-125` 有一段 📌 注释，
逐字自称「**这一段是那条决定的唯一真源**」，内容是 `docs/_archive/superpowers/plans` 与
`docs/internal/_generated/` **为什么刻意留在 docs 树里**，起因逐字点名
`ai-ds-lab/proposals/2026-08-24-archive-triage.md §2 桶二`。
⇒ **桶二（两半都在内）在 DS 侧已被裁定 hold，并写了重开条件**，而 lab 全仓对此**零登记**。

⇒ **命题 Q1**：那条 hold 的**三条理由**，用 lab 自己的独立数据核，现在**各自还成不成立**。
⇒ **命题 Q2**：它写的**重开条件**（两条）达成了没有 —— 尤其后半句「它们真的进了某条
   onboarding 注入面」，lab 的 E 格已有半边数据（`_generated` 侧），另半边（`_archive/superpowers/plans`）从未测。
⇒ **命题Q3**：lab 侧把「**已裁定的 hold**」读成「**待执行的选择**」的登记处有几处，逐处订正。

⚠️ **本格最大的风险是变成给 DS 那段话背书。** 预先划死：
**每条理由都要用 lab 侧独立可取的读数核，⛔ 不得以「DS 这么写了」当证据**；
核出理由本身有缺陷就如实交（那是 lab 该干的事），但**⛔ 仍不判该不该重开、⛔ 不替 DS 选**。

⚠️ **也不得反向背书**：C/D/E 三格的机制产出（四重静默 / 5 条孤儿 / `criterionChangesBetween`
返回 `[]`）是**独立成立的事实**，⛔ 不因 hold 而作废，也⛔ 不因 hold 而升格成「本该阻止执行」。

---

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

### 2.0 三行块前提核验（AGENTS §2.18 推论二 / DS 触发器 S 格式）

**① 候选 A（§23.9 第 2 条 / 处方 §3 第 6 步）**

```
登记记的：  「_archive/superpowers/plans 24 份 / 15,343 行 | 移出 docs 树 | audit-plan-lifecycle.mjs
            的 archiveDir 是配置项，必须同 commit 改，否则该闸语义当场破」（处方 :41 / :69 / §3 第 6 步）
现取的：    份数/行数（git ls-files + git show 逐文件，⛔ 未碰工作树）：
              c1db57b8 = 25 份 / 15,974 行 · 339a72bf = 25 / 15,974 · 4a68e02d = 25 / 15,974
              71ac2711 = 24 份 / 15,319 行 · 活源 cddb16dd = 25 / 15,974
            多出的那份 = docs/_archive/superpowers/plans/2026-08-21-r13-commit-message-trace-gate.md
            （655 行；15,974 − 15,319 = 655 逐位对上）
            且 audit-plan-lifecycle.mjs:103-125 = 该动作的 hold 裁定真源
前提还成不成立：❌ 不成立，两半都没了。
            ① 事实层：24 / 15,343 在四个 pin 上一个都取不到；最接近的 71ac2711 = 24 / 15,319，
              差 24 —— 恰好等于份数（疑 per-file +1 的口径差，⛔ 本行不断言，见 H5）
            ② 决策前提层：这一步已被 DS 裁掉并写了重开条件 ⇒ ⛔ 不是「还没排期」
```

⚠️ 按 DS 触发器 S 的分层：① 属**事实**过期（同 `lab:E49`）、② 属**决策前提**过期（同 `lab:E50`）——
**这是同一条待做项上两层同时失效**，是四种登记面缺陷（谓语 `lab:N49` / 时效 `lab:E49` /
主语 `lab:E50` / **存在理由**）里的**第四种**，且本格是它的首次实证。

**② 候选 B（§23.9 第 3 条 / E 格报告 §10 第 6 条）**

```
登记记的：  「4 份 _generated/*.md 的完整影响面只查到闸与测试两层，别的读取方 ⛔ 未穷举」
现取的：    这 4 份落在同一个 hold 裁定的覆盖面内（📌 块逐字含 docs/internal/_generated/）
前提还成不成立：⚠️ 半成立 —— 事实那一半真的没做；但**用途**变了：
            它现在是 hold 的旁证/反证，⛔ 不再是「执行前的前置清单」
```

**③ 候选 F（§23.9 第 4 条）**

```
登记记的：  「ci.yml:26 把 stale-anchors 扫描面写成 3+5 份规则文档，与 LIVE_TREE_ROOT='docs'
            （自印 219 份）不一致 ⇒ DS 侧登记面陈旧，⛔ lab 只登记不代改」
现取的：    ⛔ 未在活源复核。而 245dbee4 逐字改过 stale-anchors 扫描面（+ AGENTS.md 入面）
前提还成不成立：⚠️ 待核，可能 DS 自己已修 ⇒ 照原判不开格，收尾一行复核（列入 §5 第 6 项）
```

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

1. **hold 裁定块的时点**：`git log -S"为什么刻意" -- scripts/audit-plan-lifecycle.mjs`
   ⇒ 引入 commit = **`c1db57b8` 本身**（2026-08-25）⇒ **它从 C 格第一格起就在 lab 手里的那个 pin 上**。
   活源该文件 `git log -3` = `c1db57b8` / `bfd8413f` / `0d008f2e` ⇒ **20 个 commit 里该块一字未改**。
2. **lab 侧零登记**：全仓 `grep --include=*.md "刻意留在|重开条件|declaredShareOfDocs"` = **0 命中**。
   lab 只从这个文件取过两样：耗时 6.2s（§163/§917/处方 `chain-failfast` §4）与
   `archiveDir` 是配置项（spec :440 / 处方 :69 / :193）⇒ **头注释那一段从未读过**。
3. **DS 侧已漂**：DS HEAD `19ff2888` → **`cddb16dd`**（E 格收尾后又 +1）；
   pin `c1db57b8` 落后 **20** 个 commit（⛔ 不是 E 格记的 19，也不是 D 格记的 3 —— 这个数**每格都要重取**）。
4. **DS 那两项既存 dirty 仍在**：` M skills/shared-vocab-rules/vocabulary.md` ·
   `?? docs/internal/_generated/backlog-owner-decisions.html` ⇒ ⛔ 不是 lab 弄脏的、⛔ 不清。
   ⚠️ 后者正是 hold 理由 ③ 的第 2 项所指 ⇒ **该理由的载体 lab 侧独立可证仍在**。
5. **桶二仍未执行**：活源 `git ls-files docs/internal/_generated/` = 仍跟踪全部 **8** 个。
   ⚠️ **本格要判的正是这个观测的原因** —— E 格把它读成「未执行」，而 §2.1 第 1 条指向「不做」。
6. **顺带撞到两处登记面缺陷（⛔ 不开格，只登记）**：
   ① 处方 §1 表里 `_archive/_prompts` 那一行**重复出现两次**（`:38` / `:39`，后者多一句「全部在用」）；
   ② `AGENTS.md` 第 19 条下有**两个「推论四」**（`:482` 造故障 / `:495` `existsSync` 守卫，
   后者的实证属第 18 条 D 格）⇒ 撞号，形态同 §2.4 推论二那条纪律。

---

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

> 每条写明：**判定面** · **完整分区（⛔ 无空档）** · **我现在的预测** · **会推翻我自己的机制**。
> 🔴 **§2.19 推论五**：E 格预注册专门写了「必须无空档」，结果 H5/H6 仍各落一处。
> ⇒ 本节每条**判定规则之后**必须再有一张「**逐值指点表**」——把该读数**所有可能取值**列出来，
> 指着每一个问「它落哪一档」。⛔ 光写一句「无空档」不构成执行（§4 有该表）。
> ⛔ 事后不许改这一节；订正只能以「§X 事后订正」另段追加。

### H1 —— hold 理由 ①「收益押在不代表 AI 读取成本的分母上」现在仍成立

- **判定面**：lab 自己那份 `context-cost` 产物里的 `totals.docs` / `totals.declaredRuleDocs` /
  `declaredShareOfDocs`，以及**交集断言**：`_generated/` 与 `_archive/superpowers/plans` 的文件
  出现在 `declaredRuleDocs` 那 14 份里的**份数 `i`**。
- **读数**：`i`（整数，`0 ≤ i ≤ |declaredRuleDocs|`）。
- **分区**：
  - `i = 0` ⇒ **HIT**：理由 ① 成立，处方 §5 那个验收分母确实不代表 AI 读取成本。
  - `1 ≤ i < |declaredRuleDocs|` ⇒ **部分不成立**：理由 ① 打折，且 `i` 本身是重开条件后半句的达成度。
  - `i = |declaredRuleDocs|` ⇒ **推翻**：那两个目录全在注入面里。
  - **判定面取不到**（`context-cost` 产物不在 / 口径已变 / 份数不再是 14）⇒ **落「量具已过期」档**，
    如实登记，⛔ 不用旧值硬套（`lab:E49`）。
- **预测**：**HIT（`i = 0`）**。理由：处方 §5.1 自己实测过「`declaredRuleDocs` 与删除清单交集 = 0」
  （`:254` 逐字「**0 份**（逐条核过，14 份全在下面清单外）」）⇒ 同一组文件，交集应仍为 0。
- ⚠️ **⛔ 预登记推翻机制**：处方 §5.1 那个交集算的是**删除清单**（桶三 34 份 retrospection 那批），
  **⛔ 不是桶二这两个目录**。若我把两者混用，就是在犯 `lab:E50` 的主语窄化。
  ⇒ **必须对桶二这两个目录重算交集，⛔ 不许引 §5.1 那个 0。**
  且 `declaredRuleDocs` 的份数是 **14**（DS 引）还是别的值，两处数（10,543 / 10,577 行）**不同值**
  ⇒ 按 §2.19 推论四，**那个差 34 行就是线索，⛔ 不抹平**。

### H2 —— hold 理由 ②「没有任何机制会把 AI 引向这两个目录」对**另一半**也成立

- **判定面**：`docs/_archive/superpowers/plans/` 下 25 份文件的**路径/文件名**在 15 个既有 run 里的碰触面。
  按 E 格那四面口径逐面量：`context-manifest` 三面 + `tool_use.input` / `tool_result` 通道面。
- **读数**：碰触次数 `g`，并按**形态**分：`g_dir`（只在目录清单里露名）· `g_read`（被 Read/Grep 正文）。
- **分区**：
  - `g = 0` ⇒ **HIT**：理由 ② 对这一半也成立。
  - `g_read = 0` 且 `g_dir ≥ 1` ⇒ **HIT-同形态**：与 E 格 `_generated` 侧一致（一次 Glob 把整目录塞进上下文）
    ⇒ 🔴 但落**口径缺口**：DS 那句「**机制**把 AI 引向」**没定义**含不含 agent 自发的 Glob
    ⇒ **如实标落缺口，⛔ lab 不裁**（同 E 格对 `mockup-targets` 的处置）。
  - `g_read ≥ 1` ⇒ **推翻**：重开条件后半句**已达成** ⇒ 交给 DS，⛔ 不替它判要不要重开。
  - **判定面非空未证** ⇒ **不出读数**：必须先跑阳性对照（`lab:N48`），对照不亮就作废本条。
- **预测**：**HIT（`g = 0` 或 `g_read = 0`）**。理由：E 格实测 `_generated` 三产物
  `tool_use.input` 零命中、只在 `Glob {"pattern":"docs/internal/_generated/*"}` 一次目录清单里露名
  ⇒ `_archive/` 更深、更没人 Glob。
- ⚠️ **⛔ 预登记推翻机制**：`_archive/superpowers/plans` 里有 25 份**plan 文档**，
  而 lab 的 run 里存在「读 DS 的 plan 找纪律出处」这种动作（第一轮就有）
  ⇒ **它比数据产物更可能被真读过**，`g_read ≥ 1` 完全可能。若如此我预测错，且那正是重开条件。
- ⚠️ 阳性对照必须用**同目录内**的一个已知被读过的对象，⛔ 不能用 `product-pattern-index`（不同目录、不同形态）。

### H3 —— hold 理由 ③「代价是实的」那四项现在仍全部成立

- **判定面**：逐项独立取证（⛔ 不以 DS 的表述为证据）：
  1. **处方未指定目的地** ⇒ 读处方 §2/§3 全文，找有无落点。
  2. **`backlog-owner-decisions.html` 是并行 session 未跟踪文件** ⇒ 活源 `git status --porcelain`。
  3. **硬编码 `_generated/` 路径的 8 个脚本含 `release.mjs`** ⇒ pin 上 `git grep` 实数。
  4. **本闸 `archiveDir` 得同 commit 改** ⇒ 读 `MANAGED_DIRS` + `:546` `absArchive` 的用法。
- **读数**：仍成立的项数 `c ∈ {0,1,2,3,4}`（分区无空档）。
- **分区**：`c = 4` ⇒ **HIT**（理由 ③ 整条成立）· `c ∈ {1,2,3}` ⇒ **部分成立**，逐项交出哪项没了 ·
  `c = 0` ⇒ **推翻**（代价已全部消失）。
- **预测**：**HIT，`c = 4`**。第 2 项起手已实测仍在（§2.1 第 4 条）。
- ⚠️ **⛔ 预登记推翻机制（最可能翻的是第 3 项）**：那个 **8** 与 lab 自己 `lab:E50` 那场
  「7 个脚本 / 3 个脚本」的主语争议**是同一个数面**。E 格已实测「8 个点名脚本全部确实硬编码
  `_generated/` 下的产物」⇒ 若 DS 说的 8 与 lab 实测的 8 **口径不同却同值**，按 §2.14 推论三 ④，
  **同值时引用必须带限定词**，⛔ 不许读成互证。
- ⚠️ 第 4 项要沿**实际执行顺序**走一遍（`lab:N53` 推论一）：`archiveDir` 不改会不会**真的**判红，
  还是像 E 格那样被别的步骤先建回来 ⇒ ⛔ 不看单脚本控制流就下结论。

### H4 —— lab 侧把 hold 读成 pending 的登记处 `p ≥ 4`

- **判定面**：全仓 `*.md` 里所有谈桶二处置状态的表述，逐处判三态：
  ① **读成待执行**（「未执行」/「该选…」/「等 DS 裁」）· ② **已知是 hold** · ③ **中性陈述事实**。
- **读数**：处数 `p`（= ① 的个数）。
- **分区**：`p = 0` ⇒ **推翻**（lab 其实登记过，是我 grep 错了）· `p ≥ 1` ⇒ **HIT**，逐处订正。
- **预测**：`p ≥ 4`（status §23.9 第 8 条 · E 格报告 §10 第 8 条 · 处方 §2 桶二表 · 处方 §3 第 2/3/6 步）。
- ⚠️ **⛔ 预登记推翻机制**：`p = 0` 的可能来源是**我的关键词没覆盖** ⇒
  **必须用至少两组独立关键词**（「桶二 / 移出 / gitignore」与「hold / 裁定 / 刻意 / 留在」），
  并给**阳性对照**：拿一处**已知**是「读成待执行」的（§23.9 第 8 条逐字「lab 仍不选」）
  证明检索面能命中它。对照不亮 ⇒ 本条读数作废（`lab:N48`）。
- ⚠️ 订正的**方式**预先定死：**追加订正段**，⛔ 不改原文（同 `lab:E49` / §21.5 的处置）——
  原文是当时的真实登记状态，抹掉它就看不见这条缺陷了。

### H5 —— 「24 份 / 15,343 行」能找到一个可复现的量法

- **判定面**：能否用某个明确口径在某个 sha 上复现出 `24` 与 `15,343` 这一对。
- **读数**：三态。
- **分区**：
  - **找到** ⇒ 登记该口径名（照 §2.4「凡引用分母必须带口径名」），差异归为口径差。
  - **找不到，但 `15,343 − 15,319 = 24 = 份数`** ⇒ 登记为 **per-file +1 假设**（如把每份的
    末行/标题多计一行），并注明**未证实**。
  - **找不到且行数也对不上任何口径** ⇒ 登记为**待查**，⛔ 不抹平、⛔ 不改成实测值了事（§2.19 推论四）。
- **预测**：落**第二档**（per-file +1，未证实）。
- ⚠️ **⛔ 不为这一条新造量具、⛔ 不超过一次尝试性复现**（防范围漂移）。

---

## 4. 🔴 逐值指点表（§2.19 推论五的兑现 —— 把每个读数的**每一个**可能取值指着问落哪档）

| 读数 | 可能取值 | 落哪一档 |
|---|---|---|
| **H1 `i`** | `0` | HIT |
| | `1`…`13`（若 `\|declaredRuleDocs\|`=14） | 部分不成立，`i` 即达成度 |
| | `14`（= 全集） | 推翻 |
| | **取不到 / 份数≠14 / 口径已变** | 「量具已过期」档，如实登记 |
| **H2 `g_dir`,`g_read`** | `g=0` | HIT |
| | `g_dir≥1, g_read=0` | HIT-同形态 **+ 口径缺口**（⛔ lab 不裁） |
| | `g_read≥1` | 推翻 = 重开条件后半句达成 |
| | **阳性对照不亮** | ⛔ 不出读数，本条作废 |
| **H3 `c`** | `4` | HIT |
| | `1`/`2`/`3` | 部分成立，逐项交出 |
| | `0` | 推翻 |
| | **某项判定面取不到** | 该项单独记「未核」，⛔ 不计入 `c` 的分子也不计入分母 |
| **H4 `p`** | `0` | 推翻（我 grep 错了） |
| | `1`…`3` | HIT，但预测偏高，如实说 |
| | `≥4` | HIT，与预测一致 |
| | **阳性对照不亮** | ⛔ 不出读数，本条作废 |
| **H5** | 找到口径 | 第一档 |
| | 差 = 份数 | 第二档（未证实） |
| | 都对不上 | 第三档（待查） |
| | **超过一次尝试仍无果** | 直接落第三档，⛔ 不继续投入 |

⚠️ 另预先定死两处 E 格落空档的同族风险：
- **「成立」的定义**：本格所有「理由还成不成立」一律指**该理由所依据的事实**是否仍为真，
  ⛔ **不含**「该理由的推理是否正当」。后者若有问题，**另立一段单独交**，⛔ 不混进 `c`。
- **「碰触」的定义**：H2 的 `g` 只数**路径或文件名**在 run 里出现，⛔ 不含「读了同名主题的别的文件」。

---

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

1. ⛔ **不判 hold 该不该重开、不替 DS 选修法、不催**（承 `lab:N49`/`N50`/`N51`/`N52` 四格单向纪律）。
2. ⛔ **不改 DS 的任何文件**（含 `ci.yml:26` 那处陈旧头注释、含那段 📌 注释本身）。
3. ⛔ **不重算 C 格 52 文件覆盖表**（§22.7 第 1 条原样）· ⛔ **不查 pattern-index 热区 1795–2124** ·
   ⛔ **不追 `squeeze.readButNotDeclared`**（三条原样留在未覆盖清单）。
4. ⛔ **不产新 run**（承诺 0 个）· ⛔ 不 `pnpm build` · ⛔ 不跑 `pnpm release`（含 `--dry-run`）（`lab:E48`）。
5. ⛔ **不改 `provenance.pinnedSha`**（`lab:E46`）· ⛔ 不动四个 pin 的工作树 · ⛔ 不碰 DS 工作树
   （含它那两项既存 dirty）。
6. ⛔ **不开候选 B（4 份 `.md` 穷举）**—— 它的用途已降级，本格只在结论里说明它现在是什么，
   ⛔ 不顺手做（防范围漂移，形态同 E 格撞出 §23.6 后仍守住主线）。
7. ⛔ **不为 H5 新造量具、不超过一次尝试性复现**。
8. ⛔ **不写「两边独立收敛」**（AGENTS §2.18 推论二末段：两仓 owner 是同一个人，
   ⛔ 也不推断谁先谁后、谁影响谁）。

---

## 6. 收尾必交

1. **hold 三条理由逐条核证表**（理由 × lab 侧独立读数 × 成立/部分/推翻），每格逐字证据 + 行号；
   ⛔ 不以「DS 这么写了」当任何一格的证据。
2. **重开条件两条各自的达成判定**，含 H2 的口径缺口（若落）如实标「⛔ lab 不裁」。
3. **与本预注册逐条对账**（H1–H5），⛔ 事后不改假设；**落判定空档要如实说落了空档**，
   并对照 §4 那张逐值指点表说明「这个值我预先指到了没有」。
4. **中途判断反转逐条交出**（D/E 格做法照办）；**造故障是用来推翻自己的**（E 格三次反转两次靠它）。
5. **登记面订正落盘（追加段，⛔ 不改原文）**：
   - status §23.9 第 8 条 / E 格报告 §10 第 8 条 / 处方 §2 §3：桶二从「待执行选择」订正为「已裁 hold + 重开条件」
   - 候选 A 的「24 份 / 15,343 行」按 H5 结论订正或标待查
   - pin 落后 commit 数：D 格 3 → E 格 19 → **本格 20**，并立一条「**这个数每格必须重取**」
   - 处方 §1 `_archive/_prompts` 重复行 · `AGENTS.md` 第 19 条两个「推论四」撞号
   - **新立第四种登记面缺陷「存在理由过期」**，进 AGENTS §2（与谓语/时效/主语并列）
6. **候选 F 一行复核**：`ci.yml:26` 那处陈旧头注释在活源 `cddb16dd` 上是否已被 DS 自己修掉
   （⛔ 只报，不改，不开格）。
7. **收尾自证**：结论在 **DS 当前 HEAD** 上仍成立 —— 扫**完整窗口**（起手 20，收尾重取实际值），
   ⛔ 不重蹈 D 格只扫 3 个；且**判定面文件清单要先列出来再扫**。
8. **起止不变式**：四个 pin `dirty=0`、`HEAD` 未变；golden set 若跑，⛔ 不带管道单跑。
9. **本格未覆盖清单**，如实登记，⛔ 不算已验。
