# Retrospect — Backlog 全量 reconciliation + v0.9.0 发版 + consumer 真渲染验证（2026-06-11）

> 触发：minor release（v0.9.0）+ 学到通用工程经验（stale-claim propagation 机制）+ 踩反模式（转述未验证 claim 连犯）。

## 一句话

从用户两个文档疑问起手，滚成：backlog 35→1 条全量 reconciliation + 2 条流程 memory + consumer 真渲染验证闭盲区 + v0.9.0 发版（含修 v0.2–v0.8 潜伏 token 缺口）。

## 关键经验（可复用）

### 1. ⭐ 外部可变态声明"搬动前必 live 重验"（根因级机制，非又一条规则）

**反模式实证**：我把旧 backlog "input/select 图标 light 绑 raw grey-13 hygiene" 原样抄进新建 design-review-queue #4，并据此推导 "owner-acked code-leads divergence" 方案。用户挑战 → live 扫 `input box/filled` 全 112 变体 152 图标叶子 = **0 个绑 raw grey、全绑 `Icon/Default` 语义 token、与 code 零 drift**，claim 完全 stale。

**根因**：不是"不知道要验证"（已有 4 条同族 memory：extract-output-not-figma-truth / review-result-vs-rationale / name-search-absent-fallacy / trigger-O 仍犯），而是**复制声明时把它的"真值"默认搬了过去**——外部状态会变，写下时为真 ≠ 现在为真，旧验证不随复制继承。

**机制**（owner 拍板，[[feedback_external-claims-verify-on-move]]）：外部可变态声明（live Figma / 发布包 / 设计师意图）在**搬动 / 当事实使用**那一刻**必须当场 live 重验**；唯一形态、无"标未验证后搬走"降级。**刻意不做**全局时效戳 / docs hook——失败只在搬动点，值类真相已有 verifier/16 audits 机器闸，设计系统完成度已高，全局戳成本>收益（同型再犯才升级，[[feedback_reactive-correction-over-preemptive-rules]]）。

### 2. Backlog reconciliation 第一遍就判"状态 + 合理性"

**反模式**：我把 verified-done 的删了，但对"未做"的几条只标 deferred/blocked 就留着，等用户再三追问"有没有必要/能不能现在做"才发现多数已 stale（F21 v2 被 render-drift-gate 取代且原 framing 违禁启发式 / v3 eslint 早进 pre-commit / F25 被 axe a11y CI 覆盖）。

**正解**（[[feedback_backlog-reconciliation-proactive-judgment]]）：reconcile 每条第一遍同时给两层判断——①做没做（实证，别信 entry 自述）②没做的话现在还合理吗 / 有无更好/已存在机制取代。三态：✅删 / ❌stale 被取代→删或 relocate / 🟡仍合理→留并标 actionable·blocked·deferred。

**成果**：35 条 ### → 1 条真待办（794→~40 行），每条经 code/audit/A=0/live-Figma 实证。INFRA-F41 唯一剩（icon 注解 Low/可选，无 blocker）。

### 3. Consumer 真渲染验证闭"只测 ESLint 不渲染"盲区

**史实**：`src/index.ts` 从不 import `variables.css` → `dist/style.css` 零 token 定义 → consumer 组件 unstyled，**潜伏 v0.2–v0.8 六个版本无人发现**，根因正是 reference adoption 只测 ESLint plugin、从没在真 consumer 渲染过组件。

**做法**：发版前 `pnpm pack` tarball → 一次性最小 consumer app（vite+vue）→ Playwright 双主题断言 **9/9 PASS ×2 路径**（tarball+alias 产物级 + 真实 fresh-install 文档路径 `import '.../style.css'`）：token 解析 / data-theme 切换 / Digital Numbers @font-face `document.fonts.check`=true / brand 双主题 / TopBar·Button·Notification 真渲染。截图证据 `_reports/consumer-verify-0.8.0-{dark,light}.png`。
**教训固化**：修复类（尤其 build/打包/发布产物）发版前必须在真消费路径渲染验证，不能只信 build 产物 spot-check。

### 4. v0.9.0 release — Packages 实物验证执行到位

3 minor（ship-token-css / 时钟字体 / showMenu default）→ 本地 16 闸 + render-gate（926 entries A=0/mismatch=0）全绿 → tag → CI publish run 27330427930 success → **Packages API verified `0.9.0` created 2026-06-11T07:21:09Z**（[[feedback_release-verify-packages-page]] mandatory step 没跳）。

**生态注**：`vue@3.5.36`（npm latest）官方发布损坏（packument deps=`workspace:*` 未替换，3.5.35/3.4.0 同源正常）→ consumer fresh install 需钉 `vue@3.5.35`。**这条本身也是"声明前必验"的实践**：我先写"本机代理喂坏数据"的错误诊断，curl 原始 registry + 对照邻版后才定位是 Vue 官方 broken release，已修正。

## 产出

- commits：`1b7adc45`（backlog −753）/ `8a1a7de7`（release v0.9.0）/ `1e44db6f`（published&verified）/ 本收尾 commit
- 新文件：`design-review-queue.md` · 本 retrospect · 2 memory（external-claims-verify-on-move / backlog-reconciliation-proactive-judgment）
- 发布：`@nancyzeng0210/tvu-design-system@0.9.0`（GitHub Packages verified）
