# Next Session Pickup — F20 Codex 验收（2026-05-13 收尾）

> **用途**：新 session 起手直接粘贴本文件内容给 Claude Code，验收 Codex 执行 INFRA-F20 的结果。
> **前任**：[`archived/next-session-pickup-2026-05-13-end.md`](archived/next-session-pickup-2026-05-13-end.md)

---

## TL;DR（3 句话）

1. **本 session 完成**：CANONICAL-006/002/008 关闭，STATUS.md 精简，设计规范 tracker 新建，INFRA-F19 确认已完成，INFRA-F20 prompt 写定并已 fire 给 Codex。
2. **Codex 正在执行 INFRA-F20**：创建 Playwright 视觉基线框架（playwright.config.ts + tests/visual/docs-pages.spec.ts + 全 page dark/light 截图）。
3. **新 session 首要任务**：验收 Codex 的 F20 报告，验证截图完整性，然后继续下一个任务（INFRA-F26）。

---

## 1. 验收 Codex F20 报告的检查清单

Codex 完成后会给出 §4 完成报告。验收时按以下顺序检查：

### 1.1 文件是否创建

```bash
ls playwright.config.ts
ls tests/visual/docs-pages.spec.ts
ls tests/visual/__screenshots__/ | head -20
find tests/visual/__screenshots__ -name "*.png" | wc -l
```

预期：
- `playwright.config.ts` 存在
- `tests/visual/docs-pages.spec.ts` 存在
- 截图数 = `orderedPages.length × 2`（每 page dark + light 各一张）

### 1.2 截图命名格式

```bash
find tests/visual/__screenshots__ -name "*.png" | sort
```

预期格式：`{page-id}-dark.png` / `{page-id}-light.png`，如 `badge-dark.png`、`badge-light.png`。

### 1.3 重跑验证（0 diff）

```bash
pnpm test:visual
```

预期：全 pass，0 diff（刚生成的 baseline 与自身对比）。如有 diff → 截图生成不稳定，需处理。

### 1.4 vitest 不冲突

```bash
pnpm test
```

预期：vitest 现有测试全 pass，不受 playwright 配置影响。

### 1.5 build 不破

```bash
pnpm build
```

预期：✅ 无错误。

---

## 2. 验收通过后的下一步

### F20 ✅ 通过 → 立即做 INFRA-F26

**INFRA-F26**：extract-figma timestamp idempotence（~3h）
- 问题：每次 `pnpm sync:figma-library` 产生 ~9000 个无意义 dirty 文件（timestamp churn）
- 方案：`extract.mjs` + `normalize-component-tokens.mjs` 加 byte-level 比对，内容无变化则不重写文件
- 需写 prompt → fire 给 Codex

backlog 条目在：`docs/internal/backlog.md` → `INFRA-F26`

### F20 ❌ 有问题 → 诊断并修复

常见问题：
- `pnpm test:visual` 有 diff → 可能是 animation 未禁用或页面加载未稳定
- 某几个 page 截图超时 → 检查 page 路由是否正确（`getPagePath` 返回值）
- 截图数量不对 → 检查 `orderedPages` 长度 vs 实际截图数

---

## 3. 本 session commit chain（2026-05-13）

| commit | 内容 |
|---|---|
| `ce495da5` | fix(CANONICAL-006): Pagination figma alignment — 7 mismatch + hierarchy |
| `447a41d1` | docs(status+retro): STATUS.md 精简 + 设计规范完整计划 tracker |
| `0341d233` | feat(CANONICAL-002): PromptMessage autoDismissMs auto-dismiss |
| `8d3ff281` | docs: close CANONICAL-002/008, update tracker + STATUS |
| `903cc324` | docs: close F19 (already done) + write F20 prompt + backlog cleanup |
| wrap-up commit | STATUS.md (3) + tracker F19/F20 + 本 pickup 文件 |

---

## 4. 全局 Active 任务快照（截至本 session 收尾）

```
v0.1.x patches (4):  CANONICAL-007（blocked）  BRIDGE-MOCKUP-001/002/003（设计师）
                     BRIDGE-MOCKUP-004（tracker，等 CANONICAL-011）
v0.2 minor     (6):  INFRA-F20（Codex 执行中）  INFRA-F21/F24/F25/F26  CANONICAL-011
v1.0 major     (7):  Phase 6.3/6.4/6.6/6.7/6.8  BRIDGE-005  EXTRACT-006
Deferred       (3):  T1c  T4  Phase 8
```

**推荐 next 2 周路径**：F20 验收 → F26（~3h）→ F25（~3-5 天）→ CANONICAL-011 Chart（v0.2）

---

## 5. Dirty 文件协议

已知永久 dirty（INFRA-F26 修好前不动）：
- `figma-data/published/icons/manifest.json`
- `figma-data/normalized/tokenized-diff-report.json`
