---
share_worthy: yes
audience: 领导, UX
one_liner: 排序连错两轮，因为取证面只记「发生过的事件」，记不下「每期都要付一遍的成本」
evidence: dc598071, cb746b0c
---

# 我量到的成本是发生过的那一次，不是每期都要发生的那一份

> **落点**：`dc598071`（分享选材线 + 只读 agent + 口径自证取数单）· `cb746b0c`（素材池 4 字段上闸 L4+L5 + 取数单接两侧现取）。
> **同族真源**：[`2026-09-02-a-the-one-off-script-is-the-unreliable-part.md`](./2026-09-02-a-the-one-off-script-is-the-unreliable-part.md)
> —— 「一次性脚本才是不可靠的那环」全文在那里，⛔ 本篇不复写。本篇写它没覆盖的一件：
> **取证面本身的盲区**，以及它怎么让两轮自信的排序都反了。

---

## 一 · 主线教训：**成本分两种，我的取证面只看得见一种**

owner 问「要不要建一个 UX 设计复盘的 agent」。我走完判据链，答**不该建**，理由成立且现在仍然成立
（复盘的产出要写盘，恰落在本仓「subagent 强于 skill 的唯一位置 = 受限工具集」判据的反面）。

他澄清是**分享会选材**。我重判，答「**只落 skill 定判据、暂不建 agent**」，理由是：

> 判据是唯一有实证成本的那一格（三轮返工全在「讲什么」）；agent 那一格已有实证可用的
> 等价物（ad-hoc 派只读 subagent，当轮就这么干、成了）。

那两句**每一句都是真的**，而**排序是错的**。他一句话推翻：

> 「每期我都得盯着 AI 挖数据、太占我时间」确实是这个问题。

### 病灶不是我漏读了什么，是我的取证面结构上看不见它

我的取证面是 **git 历史 + work-log**。那两样记的都是**事件**：某天做了什么、返工了几轮、
哪个读数被推翻。三轮返工是个事件 ⇒ 我量到了。

而「每期都得盯着」**不是事件，是费率**。它在 git 里没有任何痕迹 —— 因为它每期都被付掉、
每期都不留下一条 commit。⇒ **我不是估错了它的大小，我是根本没有它的读数。**

**判法（下次排序前强制问一句）**：

> 这条成本是**一次性发生过的**，还是**每期都要付一遍的**？
> 后者在我的取证面里有没有痕迹？——**没有 ⇒ 我量不到它，必须问，⛔ 不许按"没量到"当"不重要"排。**

⚠️ 这与 `feedback_baseline-before-plan`（"backlog 估值是假设，先跑 baseline"）**不是一回事**，
别拿它当已覆盖：那条治的是「数字不准」，修法是去量；本条治的是「**这个量没有任何采集面**」，
量不出来，只能问人。

⚠️ 也别读成「凡事都要问 owner」—— 那会撞 `feedback_no-popup-for-clear-recommendation`。
区别在**这一个具体的量**：可从上下文客观推出的（可探测的）照旧自己判；**费率类成本
本身不可探测** ⇒ 只有它需要问。

---

## 二 · 本仓自己的闸纠正了我，而它警告的那条纪律我当天刚引用过

新闸我原本只挂 `.husky/pre-commit`。`audit:gate-ci-parity` 当场 **EXIT=1**，把它判成 **L4-only**
（`--no-verify` 一句即失效），并逐字警告：

> ⛔ 接线前先无参实跑一次，看它自印的分母是不是空 —— **无参恒 exit 0 的闸裸接进 CI
> 会得到一个永远绿的 step，比 L4-only 更糟**（看起来有 L5，其实是假绿）。

我照它实测：`--staged` 在 CI 里没有 staged index ⇒ 恒 0 目标恒绿；`--all` 是 report-only ⇒ 恒 exit 0。
**两者接进 CI 都是假绿。** ⇒ 新增 `--range` 档（照 `audit-commit-affordance-trace` 的 L5 先例）。

**值得记的不是"闸救了我一次"，是这个**：那条纪律（假绿出在判据之外 / 闸的分母要非空）
我在**同一天、同一个 session 里**至少引用过三次 —— 用它论证过取数单为什么要钉已知向量、
论证过 `UNKNOWN` 为什么不许填数、论证过 report-only 不算 L4。**然后我给自己刚写的闸挂载时
还是差点犯。**

⇒ **通名：引用过一条纪律 ≠ 把它应用到自己刚做的东西上。**
`feedback_new-gate-acceptance-three-questions` 逐字有一句「把自己刚建的机制放进终审范围」——
这次就是那句话的又一个实例，而且是在我引用完它之后发生的。⇒ 那条不是"记住就行"的，
它需要一个**动作**：新建任何闸后，把它交给仓库里既有的元闸跑一遍，⛔ 别自己判它够不够。

---

## 三 · 「本地」这个词我按字面推，而它在项目历史里有既定含义

owner 说「挑选值得分享的内容**在本地**」。我读成"**不公开**"，并据此写了「本地档免掉整层脱敏」
这条建议 —— 交给他了才被自己后来的现取推翻。

实证：2026-09-10 那份"本地文件"有两个 commit（`bd912238` + `e0a1f0fe`）进了
`playground/public/` + `playground-dist/` ⇒ **已上公网**，而且它确实付了整层脱敏
（issue key 改写、不嵌真实截图、抽象重绘）。真正的含义是 **产物形态**：
仓库内自包含单页 HTML，**取代 Claude Artifact**（work-log 13:39 逐字）。

⇒ **通名：项目历史里出现过的词，先查它在这个项目里指什么，再按字面推。**
一个词的字面义与项目内既定义冲突时，**错的是字面义**。判法很便宜 ——
`grep` 那个词在 work-log / commit message / 文档里最近一次的用法，比我推一遍快。

⚠️ 这条的代价形态特别隐蔽：我给出的建议**内部完全自洽**（本地 ⇒ 不公开 ⇒ 免脱敏 ⇒
可嵌真实截图），自洽性让它读起来很可信，而它的**第一个前件**是假的。

---

## 四 · 这次做对、下次照做的（⛔ 不只囤教训）

1. **承重事实派专用 agent 查完，我自己再复核一遍。** `.claude/agents/` 递归发现是承重的
   （错了就静默不加载 = 反模式 #7）⇒ 派 `claude-code-guide` 拿官方 URL 后我自己 WebFetch 重读，
   拿到逐字 `scans .claude/agents/ ... recursively` + `identity comes only from the name
   frontmatter field`。**子代理的其余回报（一长串 frontmatter 字段）我用不到，就不采信也不引用** ——
   只核我要承重的那一条，别顺手把整份回报当事实收下。
2. **取数口径钉在历史 commit 上，不钉"今天应等于几"。** 今天的值本来就该变，拿它做断言等于没断言。
   6 条向量取自已发布分享页里经亲验的数；全量跑时另独立复现两条棘轮起点 **83 / 56**，
   与当天 work-log 主线亲验的订正值逐字相符 ⇒ 共 8 个向量。
3. **复现不出 ≠ 对方错。** 两条口径（测试文件 213 / 提交前检查 30）今天无法从仓库复现，
   落地形态是印 `UNKNOWN` + 写明「⚠️ 不代表页面的数错了，是口径没被记下来」+ ⛔ 禁因接近就填 211/29。
4. **展示路径也要跑一遍。** ★ 那条渲染分支用临时注入验过，并 **sha256 字节级还原**（工作树干净）。
   未验的展示代码正是产生"整齐假象"的地方。
5. **不冒充结构保证。** 新 agent 有 `Bash`（取数必须跑 git）⇒ 在文件里显式写「它的只读保证
   **弱于** `upstream-research`，'改不了文件'是约定不是机制」。⛔ 别把约定写成机制。
6. **两侧档位不同就分开写死，并主动说出哪句话是假的。** 消费仓侧是 warn-only ⇒ 在闸头注释、
   changeset、`design-process.md` 三处都逐字写「⛔ 别说 design-record 侧有 L4，那句话是假的」。

---

## 五 · 未闭合（⛔ 不是待办清单，是诚实边界）

- **agent 本 session 派不出来** —— 三次实测均报 `Agent type 'design-share-scout' not found`，
  agent 清单在 session 起手固定。⇒ 「Claude 会不会真路由到它」是这条线唯一未验的一环，
  而它正好是反模式 #7 的风险面。**新 session 第一件事就是验它。**
- **存量 41 份复盘没有 4 字段**（本篇是第一份有的）。射程只含"新增"⇒ 存量结构上不在判据面里，
  **本闸没有豁免表**。要不要回填由 owner 定，`pnpm report:share-frontmatter` 的覆盖率是那个决定的读数
  —— ⛔ **它不是待办**。
- **这道闸会拦下一个新增复盘的 commit**，含并行 session 的。报错文案自解释（纯内部写一行
  `share_worthy: no` 即可）。
