# UX 设计内部分享会 —— 选材判据（本文件是判据真源）

> **这条线刻意独立成一个文件夹**（owner 2026-09-10 要求「在当前项目的一个文件夹下，跟其他的分离开」）。
> 三个文件 + 一个 agent + 一个取数单，⛔ 别把它们摊回 `docs/internal/` 平层。
>
> | 件 | 在哪 | 管什么 |
> |---|---|---|
> | **判据**（本文件） | `docs/internal/design-share/README.md` | **哪条值得讲** |
> | 期次记录 | [`ledger.md`](./ledger.md) | 往期讲过什么（防重复选材） |
> | 每期候选 | `_digests/<YYYY-MM-DD>.md` | 那一期定稿的候选清单 |
> | 取数单 | `scripts/report-design-share-evidence.mjs`（`pnpm report:design-share`） | **数从哪来** |
> | 侦察 agent | `.claude/agents/design-share/scout.md` | 跑取数单 + 按本文件筛 |
>
> ⚠️ **取数单为什么不在本文件夹里**：它要能被 `pnpm report:*` 唤起、与另外 3 个
> `report:*` 同一形态，放到 `docs/` 下会让仓库自己的脚本清点面看不见它。
> ⇒ 这一处刻意不"分离开"，理由记在这里而不是靠下一个人猜。

---

## 为什么有这套东西（⛔ 别读成"为了更规范"）

owner 2026-09-10 逐字：**「每期我都得盯着 AI 挖数据、太占我时间。」**

那个成本的来源不是"挖得慢"，是**每期 AI 都在即兴发明取数口径**，而即兴取数是本仓
实证最不可靠的一环（复盘 [`2026-09-02-a`](../retrospection/2026-09-02-a-the-one-off-script-is-the-unreliable-part.md)：
失误全在取证脚本、零在产品代码，失败形态是**整齐的假象**而非报错）。

同一形态在 2026-09-10 那期分享材料上复发过一次：主线亲验**推翻了 subagent 报的 3 处关键读数**。
⇒ 所以这套东西的目标**不是**"让 AI 参与选材"，是**让数不必被 owner 复核**：
口径钉在取数单里、正确性由历史向量自证、agent 不许自己算。

**判定这套东西有没有用的唯一标准**：owner 拿到候选清单后，**有没有再去核那些数是怎么来的**。
还要核 ⇒ 它没达成目的，改取数单，⛔ 不是改这份判据。

---

## 六条选材判据（**排序依据，不是打勾表**）

判据全部**反推自 2026-09-10 那期已认可的材料** —— 那份材料的章节结构就是 owner 认可过的
"什么值得讲"，⛔ 不是谁凭感觉列的。每条后面括号里是它在那份材料里的落点。

| # | 判据 | ⛔ 反面 |
|---|---|---|
| **1** | **收益导向** —— 讲这件事**换来了什么**（「省下的重复劳动」/「挖出来的隐患」两类分开记） | ⛔ **不罗列规则条数 / 闸条数**。owner 第一轮反馈逐字否掉的就是这个形态 |
| **2** | **有一条真实交付做主线**，逐步走一遍，且**显式写「为什么拿它举例」** | ⛔ 不抽象讲流程。上一期主线 = Touch Screen v7.7→8.0 的 Wi-Fi Other（隐藏 SSID） |
| **3** | **前后对比是主结构** —— 「以前 · 靠人看」/「现在 · 一条命令跑 N 类检查」并排 | ⛔ 不只讲现在的样子（听众无从判断改进幅度） |
| **4** | **有真实拦截实例** —— 机制**真的挡下过**什么，带 commit / 报告原文 | ⛔ 不写「我们建了一道闸」。建了 ≠ 挡下过 ⇒ 那是 meta-rules 反模式 #7 的同型 |
| **5** | **读数可复核** —— 每个数带得出它的那条命令，且取自活源非估算 | ⛔ 不写估算、不写"约"、不写口径不明的数（取数单里 `UNKNOWN` 的原样保留） |
| **6** | **含已知不足与下一步** | ⛔ 不只报喜 |
| **6b** | **「决定不做 / 否决掉的」也算成果** | ⛔ 别只讲做了什么。上一期成果列表里就有「五角色核查后一个都没建」这一条 |

### 判据权重（受众决定，⛔ 别一套排序打天下）

| 受众 | 吃重的判据 | 为什么 |
|---|---|---|
| **领导** | 1 · 3 · 4 · 6 | 关心幅度与可信度；判据 4+6 是可信度的来源（只报喜的材料不可信） |
| **UX 同事** | 2 · 3 · 6b | 他们要能照着做；主线案例 + 前后对比 + "哪条我们决定不做"最有用 |
| **PM / Dev** | 2 · 4 · 5 | 关心交付面实际发生什么变化、卡点在哪 |

---

## 取值纪律（⛔ 三条，违反即材料作废）

1. **所有数走 `pnpm report:design-share`**，它先自证一批历史向量再出数。
   ⛔ **条数别在这里写死** —— 真源是取数单里的 `SELF_TEST` 数组，它每次运行自印全部条目与结果。
   （此处原写「6 条」，2026-09-11 已 stale 两次：向量从 6 → 7 → 8。）
   ⛔ **自证不过就地停** —— 带着漂了的口径出材料比没有材料坏。
2. **⛔ 不许绕过取数单另算。** 与已上闸量具矛盾时，**默认错的是新写的那个**
   （复盘 [`2026-09-03-b`](../retrospection/2026-09-03-b-when-two-instruments-disagree-suspect-the-one-i-wrote.md)）。
3. **⛔ `UNKNOWN` 不许填数。** 当前两条 UNKNOWN（测试文件数 / 提交前检查条数）
   是 2026-09-10 期页面写了、但**当天无法从仓库复现**的数。
   ⚠️ **那不等于页面的数错了** —— 是口径没被记下来。要变成数字 = 先钉口径 + 补一个历史向量。

---

## 发布档位（⛔ 这一条 2026-09-10 被读错过一次，别再读错）

**「本地」指的是产物形态**（仓库内自包含单页 HTML，取代 Claude Artifact），**不是"不公开"。**

实证：2026-09-10 那份"本地文件"有两个 commit（`bd912238` + `e0a1f0fe`）进了
`playground/public/` + `playground-dist/` ⇒ **已上公网**，且它确实付了整层脱敏。

| 档 | 落点 | 脱敏义务 |
|---|---|---|
| **A · 仅本地** | `docs/internal/design-share/_digests/` 或不进 git 的本地文件 | 无 —— 可嵌真实截图 / 真实 issue key / 真实 Figma 链接 |
| **B · 随 docs 站发布** | `playground/public/` + `playground-dist/` | **整层脱敏**：内部 issue key 改写为描述性说法 · 产品界面不嵌真实截图（HTML/CSS 抽象重绘）· 不露内部主机名 / Gitea URL |

⛔ **档 A 的材料别顺手 commit 进 `playground/public/` 或 `playground-dist/`** ——
那一步把脱敏义务整层拉回来，而且**不可逆**（公网已可索引）。
真源：[`DEPLOY.md`](../../DEPLOY.md) 逐字「committing `playground-dist/` is not merely "a deploy" — **it publishes to the open internet**」；
发不发是 owner 的决定，走 [`RELEASING.md`](../../RELEASING.md) Step 4。

### 出稿前要过的闸（档 B 专属）

- `pnpm audit:no-hardcoded-design-tokens` —— **它在"独立分享页"这一档上有 fail-open 且奖励偏离标度**，
  已登记 [[INFRA-F147]]。⛔ 出稿前读那条 entry，别以为闸绿就等于页面对。
- docs 站视觉改动的 pre-commit 视觉门要 `VISUAL_COMMIT_APPROVED`，**AI 不得自设** ——
  它的含义是「owner 看过实际效果并说出口了」。

---

## 素材池 —— ⛔ 它是**现取拼装**的，不是一份沉淀副本（2026-09-10 新增）

owner 问过：「每次做产品设计时会自动收集内容到相关文档下吗？DS 优化的内容能自动加入吗？
后续我要分享时就从这里面读取，会快捷很多。」

**答案是两侧本来就在收**，缺的只是可机械读的标记位：

| 池 | 在哪 | 谁让它必然产出 |
|---|---|---|
| **A · DS 设计系统优化** | `docs/internal/retrospection/*.md` | [`WRAP-UP.md`](../../WRAP-UP.md) §Retrospection 分级触发 + meta-rules 触发器 D |
| **B · 产品设计** | `<消费仓>/docs/specs/*-design-record.md` | [`design-process.md`](../design-process.md) §交付收尾 #3 逐字「**所有**消费产品需求设计都产出此记录」 |

⇒ **刻意没有建第三个池子。** 判据是一句话：**这条素材能不能从活源现取？**

- **能现取**（数、commit、闸轨迹、复盘篇目、design-record 存在性）⇒ ⛔ **不沉淀**。
  沉淀就是造第二份会漂的真源，而它**会**漂 —— 本仓最贵的那一类缺陷。
- **不能现取**（为什么这么设计 · owner 当场的原话 · 被否掉的候选及理由 ·「为什么拿它举例」）
  ⇒ ✅ 必须沉淀。而这一栏**恰好就是** design-record 9 段与复盘正文已经在写的东西。

**4 个标记位**（`share_worthy` / `audience` / `one_liner` / `evidence`）让 `pnpm report:design-share`
把两个池子**现取捞出来**。⛔ **字段契约真源不在本文件**，在
[`scripts/audit-share-frontmatter.mjs`](../../../scripts/audit-share-frontmatter.mjs) 头注释
（那道闸每次运行自印契约）—— 本节复述一份就是第二份会漂的副本。

**两侧的档位不一样，⛔ 别混**：

| 侧 | 档 | 为什么 |
|---|---|---|
| **A（本仓复盘）** | **L4 pre-commit + L5 pr-checks**，只拦**新增** | 存量 41 份结构上不在判据面里 ⇒ 不需要豁免表，本闸也**没有**豁免表 |
| **B（消费仓 design-record）** | **warn-only** | 硬拦「缺失」会当场打断所有已有 design-record 的消费仓。⛔ 别写成「design-record 侧有 L4」，那句话是假的 |

取素材：`pnpm report:design-share --since=… --until=… --consumer=<消费仓绝对路径>`
⚠️ **不给 `--consumer` 时 B 侧印 `SKIP` 而不是 0** —— 「没列出来」⛔ 不等于「没有素材」。

---

## 每期怎么跑（三步）

1. **主线派 agent**：`design-share-scout`，给全窗口 / 受众 / 时长 / 是否公开（输入契约在 agent 文件 §2）。
2. **主线核一件事**：它交回的第 1 段里自证段是不是**全绿且 `EXIT=0`**（⛔ 别核成某个固定条数 ——
   向量会增加，写死的数注定 stale）。⛔ 只核这一条，⛔ 别重算它的数
   —— 重算就等于把 owner 的时间成本转移给主线，那不是省下来。
3. **定稿**：写 `_digests/<YYYY-MM-DD>.md`，在 [`ledger.md`](./ledger.md) 加一行。

⛔ **本文件不管出稿的排版 / 页数 / 视觉** —— 那是设计判断，每期按受众定，不在这里固化。
