# Next Session Pickup — v0.5.0 主线（Phase 6.8 Button + Tier 1-B mockup audit 并行）

> **用途**：新 session 起手直接读本文件，按 §3 推荐 Sprint 顺序 + §4-7 各 sprint baseline 自检 + spec 真源开 v0.5.0 主线。
> **前任**：[`next-session-pickup-2026-05-15-v0-4-0-publish.md`](next-session-pickup-2026-05-15-v0-4-0-publish.md) → 已完成（v0.4.0 ✅ published 2026-05-14 → Packages 页 `@nancyzeng0210/tvu-design-system@0.4.0` Latest verified；evidence backfilled in commit `35fecc36`）
> **当前版本**：v0.4.0 ✅ published；v0.5.0 🟢 prep — 0 commits

---

## TL;DR

1. v0.4.0 publish 链路全部收尾（tag pushed → CI green → Packages 页 verified → STATUS/tracker/retrospect evidence backfill commit `35fecc36`）
2. **本 session 起步 = v0.5.0 主线 Sprint A (Phase 6.8) + Sprint B (Tier 1-B) 并行**（0 文件冲突）；Sprint C (Tier 2-E) + Sprint D (Tier 2-F) 顺路 plan owner 直接实现
3. **Sprint A 起手 must do baseline 自检**：发现 SoT drift（tracker "21 sets / 8400 variants" vs decisions JSON "8 sets"）必须先 resolve，才能写 executor prompt — 同 v0.4.0 Phase 6.7 范式

---

## 1. 当前状态确认（起手必做）

按 SessionStart hook + STATUS.md §起手必读链路，**机械跑 5-step onboarding**：

```bash
# Step 0 — git baseline
git status --short              # 应只有别 session 持续动的 .claude/settings.json
git log --oneline -5            # 顶部应是 35fecc36 docs(wrap-up): v0.4.0 ✅ published — backfill CI + Packages evidence
git tag --list 'v0.4.*'         # 应有 v0.4.0
git tag --list 'v0.5.*'         # 应**无** v0.5.0（本 session 不打 v0.5 tag，留给 release wrap-up）

# Full baseline green（任一不绿 → STOP 排查）
pnpm test                       # 114 passed | 1 skipped
pnpm exec vue-tsc --noEmit      # 0 错
pnpm run audit:translation-completeness  # 9 findings / 0 active / 9 allowlisted
pnpm run prepublishOnly         # 10 strict gates 全通过
```

5-step onboarding 文档：
1. [`docs/STATUS.md`](../../STATUS.md) — v0.4.0 ✅ published / v0.5.0 prep
2. [`docs/PROJECT_GOAL.md`](../../PROJECT_GOAL.md) — 5 能力 + Quick Reference
3a. [`docs/internal/retrospection/design-spec-canonical-alignment-tracker.md`](../retrospection/design-spec-canonical-alignment-tracker.md) §排期原则 + §v0.5.0 段
3b. **本文件**
4. [`AGENTS.md`](../../../AGENTS.md) 必读链路 §1-10
5. v0.4.0 release retrospect [`2026-05-14-v040-release.md`](../retrospection/2026-05-14-v040-release.md) — 4 反模式 + 18 步 wrap-up checklist 流程化

---

## 2. v0.4.0 已 ship 状态（无需再做）

| 阶段 | Commit / Evidence |
|---|---|
| 主线 4 sprints + Tier 2-D | `cca1a043` (audit fix) · `529bb366` (6.6a) · `0db2bfd0` (6.6b) · `5546ae0b` (6.7 B path) · `92ffb937` (catch-up) · `50ff23d0` (2-D) |
| Release | `77f338fd release: v0.4.0` |
| Tag push + CI green + Packages verify | tag `v0.4.0` · CI run [25856655323](https://github.com/NancyZeng0210/TVU-Design-System/actions/runs/25856655323) green 1m24s · Packages API verified `0.4.0` created 2026-05-14T11:07:11Z |
| Evidence backfill | `35fecc36 docs(wrap-up): v0.4.0 ✅ published — backfill CI + Packages evidence` |

复盘见 [`2026-05-14-v040-release.md`](../retrospection/2026-05-14-v040-release.md)。

---

## 3. v0.5.0 主线内容 + 推荐 Sprint 顺序

### 3.1 v0.5.0 主线（tracker §v0.5.0 SoT）

| 项 | 估时（tracker）| 实跑预测 | 破坏性？ | 落地能力 |
|---|---|---|---|---|
| **Phase 6.8** Button canonical 完成迁移 | ~20-30h | ~3-4h Codex executor* | 是（旧 API @deprecated）| 能力 1/2（DS 最大单组件 API 统一） |
| **Tier 1-B** `audit:mockup-conformance.mjs` | ~6-10h | ~2-3h Codex executor* | 否（新 audit gate）| **能力 4 第一个 L3+ gate（项目最大缺口）** |
| 顺路 **Tier 2-E** `scripts/figma-url-to-canonical.mjs` | ~4-6h | ~1h plan owner 直接 | 否 | 替代 AI 读 catalog |
| 顺路 **Tier 2-F** `scripts/lint-skills.mjs` | ~3-5h | ~1h plan owner 直接 | 否 | 验各 skill md 起手依赖文档存在 |

\* 实跑预测沿用 v0.3.0 / v0.4.0 趋势（4-8× under-estimate；ref retrospect "Wrap-up Process 流程化"段）。**但 baseline 必跑**——估时偏差 >2× 触发重路线（per memory `feedback_baseline-before-plan`）。

### 3.2 并行可行性

| Sprint | 改动文件范围 |
|---|---|
| A (Phase 6.8) | `src/canonical/ButtonBridge.vue` · `src/components/Button/Button.vue` · `src/design-system/translation/*` · `runtime-additions.md` · `playground/docs/pages/ButtonPage.vue` |
| B (Tier 1-B) | `figma-sync/audit-mockup-conformance.mjs`（新建）· `package.json` script · `RELEASING.md` gate 表 |

**0 文件冲突** ✅ 两轨可并行起步。

### 3.3 推荐 Sprint 顺序

| Sprint | 内容 | 估时（实跑预测）| 状态 |
|---|---|---|---|
| **A.1 — baseline 自检 + path 拍板** | Plan owner 直接跑 §4.1 baseline → resolve SoT drift → propose A/B/C path 给用户拍板 | ~30min plan owner | ✅ **done 2026-05-15**（详见 §4.2/§4.3）|
| **A.2 — SoT drift cleanup** | Plan owner 直接改 tracker / STATUS / backlog / prop-aliases.json / 本 pickup 同步实证数字（"21 sets / 8400 variants" → 实证 "8 主 sets × ~400 variants + 1 url link + 20 isolated"）| ~30min plan owner | ✅ **done 2026-05-15**（commit pending user review）|
| **A.3 — Phase 6.8 executor prompt + 执行** | 写 prompt（加 `canonicalTheme` axis 到 ButtonBridge + base Button + vitest case + docs demo + 旧 API @deprecated）→ executor 跑 → plan owner 复审 | ~3h | 🟡 next |
| **B — Tier 1-B executor prompt + 执行** | 写 prompt（与 A.3 并行起步）→ executor 跑 → plan owner 复审 | ~6-10h | pending |
| **C — Tier 2-E plan owner 直接** | `scripts/figma-url-to-canonical.mjs` | ~1h |
| **D — Tier 2-F plan owner 直接** | `scripts/lint-skills.mjs` | ~1h |
| **E — v0.5.0 release wrap-up** | flip Phase 6.8 / Tier 1-B decisions resolved + changeset + tag → 18 步 checklist（retrospect §Wrap-up Process 流程化）| ~30min |

**Plan owner 推荐先做 Sprint A baseline + path 拍板**（其它 sprint 不依赖此但 A 是最大未知）。

---

## 4. Sprint A — Phase 6.8 Button canonical 完成迁移

### 4.1 baseline 自检（plan owner 直接跑；写 prompt 前必做）

per memory `feedback_baseline-before-plan` + v0.4.0 Phase 6.7 SoT drift 教训：

```bash
# Step 1 — 现状 canonical 桥层
sed -n '1,80p' src/canonical/ButtonBridge.vue
# ↑ 已确认（写 pickup 时）：7 axis = color/fixedWidth/icon/radius/size/status/style
#   缺：theme axis（decisions JSON 说 figma 真源含 theme "across 8 sets"）

# Step 2 — Button decisions
jq '.decisions[] | select(.id == "button-canonical-api-migration")' \
  src/design-system/translation/divergences-decisions.json
# 当前 status = "approved-migration-plan" · phase = "Phase 6.8"
# notes: "Add canonicalTheme, document canonical API, deprecate old API for one version, then remove."

# Step 3 — figma 真源 axis 实数（SoT drift 验证关键）
find figma-data/published -path '*Button*' -name '*.json' | head -5
jq '.componentSet.componentProperties // .properties' figma-data/published/<Button-file>.json
# ↑ 期望确认 figma 真源 axis 实数：是 8 sets 还是 21 sets？
#   tracker §v0.5.0 + backlog #188 BRIDGE-Tier3 + retrospect 2026-05-06 都说 "21 sets / 8400 variants"
#   decisions JSON 说 "8 sets"
#   两者必须 reconcile — 否则 prompt 范围错位

# Step 4 — base Button (runtime) 现状
sed -n '1,40p' src/components/Button/Button.vue
grep -n "canonical\|@deprecated" src/components/Button/Button.vue

# Step 5 — Button prop-aliases 现状
jq '.aliases[] | select(.componentScope == "Button")' \
  src/design-system/translation/prop-aliases.json | head -30
```

### 4.2 SoT drift 实证结果（✅ 2026-05-15 resolved）

baseline 跑 `jq '[.components[] | select(.figmaName | test("Button"; "i"))]' figma-data/normalized/components.manifest.json` 实证后：

| 项 | 历史 tracker / backlog 说法 | decisions JSON 说法 | 实证 ground truth |
|---|---|---|---|
| figma 真源 Button entries | "21 sets / 8400 variants" | "include theme across 8 sets" | **29 entries / 3,224 variants**：8 主 sets (`dark/light × L/M/S/XS`) × ~400 + 1 url link × 4 + 20 isolated `IconLoadingButton*` 单节点 |
| Phase 6.8 范围 | "21 sets 全量 migration" | "Add canonicalTheme, deprecate old API" | **加 `canonicalTheme` axis** 到 ButtonBridge（已有 7 axis：icon/style/color/status/radius/fixedWidth/size）+ base Button 同步 |
| 旧 API @deprecated 范围 | "21 sets 全 deprecat" | "deprecate for one version then remove" | base Button `variant` / `size` / `disabled` / `loading` @deprecated since 0.5.0，v0.6.0 删 |
| 孤立 IconLoadingButton 20 节点 | (未提及) | (未提及) | 不在 Phase 6.8 scope（figma 文件 cleanup，建议设计师 owner — BRIDGE-MOCKUP-006 待登记）|

→ 历史 "21 sets / 8400 variants" 已修正：tracker / STATUS.md / backlog.md / prop-aliases.json / 本 pickup 全 sync 实证数字；历史 retrospect / 历史 prompt 原文保留作为快照，[tracker §SoT 实证段](../retrospection/design-spec-canonical-alignment-tracker.md) own ground truth。

### 4.3 Path 拍板结果（✅ 2026-05-15 user ack）

| Path | 描述 | 选定？ |
|---|---|---|
| **A — Add `canonicalTheme` axis + SoT cleanup** | ButtonBridge.vue + base Button.vue 加 theme axis（`dark`/`light`，默认 inject('docsTheme', 'dark') 兜底）+ 旧 API `variant`/`size`/`disabled`/`loading` @deprecated since 0.5.0（v0.6.0 删）+ vitest theme axis 3 case + docs ButtonPage Canonical theme demo + decisions JSON `button-canonical-api-migration` → resolved + tracker / STATUS / backlog / prop-aliases sync 实证数字 | ✅ **选定 2026-05-15** |
| ~~B — Path A + Phase 6.8 内处理 20 孤立 IconLoadingButton 节点~~ | hard rule #1 "不修改 Figma" 限制下 figma cleanup 必走设计师轨道 → 实质等同 Path A + BRIDGE-MOCKUP-006 backlog | rejected（与 A 实质一致）|
| ~~C — Phase 6.7 范式 ack-only（不改代码）~~ | 改 decisions JSON 措辞 ack Phase 6.8 实质已落地，不加 canonicalTheme prop；代价 = consumer 不能 mix dark/light Button，mockup-to-code 反向生成器拿不到显式 theme prop | rejected（不满足能力 2 完整性）|

### 4.4 Sprint A executor prompt 模板（path 拍板后写）

参考 v0.3.0 Phase 6.4 prompt + v0.4.0 Phase 6.6 prompt 严格范式：

- 范围明确（哪个 file + 哪些 axis + 是否加 prop-aliases entry）
- vitest case 数（每个 axis 至少 1 个 case）
- @deprecated tag 写法（base Button 旧 prop 标 `@deprecated since 0.5.0, use canonical* instead, will be removed in 0.6.0`）
- divergences-decisions JSON 同步：`button-canonical-api-migration` status `approved-migration-plan` → `resolved` + resolvedAt + resolutionRef commit SHA
- docs site ButtonPage demo 加 Canonical API + Deprecated API 两段 + dual-mode toggle
- STOP at end（per memory `feedback_executor-no-self-commit`）

### 4.5 Sprint A spec 真源（按读取顺序）

1. **本文件 §4.1-4.4**（baseline 自检 + path 拍板）
2. [`runtime-additions.md`](../../runtime-additions.md) — 当前**无 Button section**；Phase 6.8 完成时需新加 Button canonicalTheme section（pattern 同 Input.showCount / Select.multiple）
3. [`src/canonical/ButtonBridge.vue`](../../../src/canonical/ButtonBridge.vue) — 7 axis 现状
4. [`src/components/Button/Button.vue`](../../../src/components/Button/Button.vue) — base runtime 实现
5. [`src/design-system/translation/divergences-decisions.json`](../../../src/design-system/translation/divergences-decisions.json) `id: button-canonical-api-migration`
6. [`src/design-system/translation/divergences.md`](../../../src/design-system/translation/divergences.md) "Button 双 API" 段
7. [`src/design-system/translation/prop-aliases.json`](../../../src/design-system/translation/prop-aliases.json) Button scope entries
8. [`docs/internal/component-mapping-scan.md`](../../component-mapping-scan.md) Button mapping
9. [`docs/internal/backlog.md`](../../backlog.md) #182 CANONICAL-007（unblock target — Phase 6.8 完则 CANONICAL-007 unblock）
10. retrospect [`2026-05-06-t2-sample-extension-and-phase-a-bootstrap.md`](../retrospection/2026-05-06-t2-sample-extension-and-phase-a-bootstrap.md) §Button mega 21 sets / 8400 variants 决策背景

---

## 5. Sprint B — Tier 1-B `audit:mockup-conformance.mjs`

### 5.1 baseline 自检

```bash
# Step 1 — 现有 audit 范式参考（12 个 audit-*.mjs）
ls figma-sync/audit-*.mjs
# 重点参考：
#   audit-figma-conformance.mjs (figma 真源 vs code 一致性)
#   audit-figma-published-vs-code.mjs (Bridge mapping 完整性 + needs-review 状态)
#   audit-translation-completeness.mjs (v0.3 Tier 1-A 范式 — JSON Schema + 10 维 audit + allowlist)

# Step 2 — Tier 1-B 检查项原始 spec（tracker §轨道 C SoT）
sed -n '/Tier 1-B/,/Tier 1-C/p' docs/internal/retrospection/design-spec-canonical-alignment-tracker.md
# 检查 4 项：
#   - library key 验证（mockup 引用的 figma component key 必须存在 figma-data/published/ 索引）
#   - 颜色 token bound（mockup fills 必须 bound to design system token，禁 hex）
#   - 字体 token（mockup text 必须 bound to font token）
#   - M1-M5 命名 hard rules（per design-process.md / mockup-conventions.md）

# Step 3 — M1-M5 hard rules 现状
grep -nE "^## M[1-5][^0-9]" docs/internal/mockup-conventions.md \
                            docs/internal/design-process.md
# 确认 M1-M5 在哪份文档 / 是否客观可测（per meta-rules trigger K）

# Step 4 — design-walkthrough skill 客观项分离 unblock
cat .claude/skills/design-walkthrough/SKILL.md | head -50
# Tier 1-B audit 上线后，design-walkthrough skill 的"客观可测"项可拆给 audit，skill 留主观判断
```

### 5.2 Sprint B 设计要点

| 要点 | 说明 |
|---|---|
| 输入 | mockup 文件（`.fig` 不可读 → 走 figma MCP `get_design_context` JSON 或本地 `figma-data/mockup/` 缓存） |
| 输出 | findings JSON（同 audit-translation-completeness 范式）+ stdout 摘要 |
| Strict mode | 升 11th strict gate（与现有 10 strict 加和）；allowlist 范式同 Tier 1-A |
| Failing 行为 | strict mode 下 fail = release block；non-strict = warning |
| CI 接入 | `package.json` `audit:mockup-conformance` script + `prepublishOnly` 链加入 |
| L 级 | L3+（per meta-rules trigger K：客观可测规则必须 L3+）|

### 5.3 Sprint B executor prompt 模板

参考 Tier 1-A Sprint 4 (`audit-translation-completeness.mjs`) 范式：
- 5+ 维 audit dimensions 各独立函数
- Schema 验证 + allowlist + strict / non-strict mode
- Plan owner 在 prompt 末尾要求 executor 报告每维 finding 数 + 实际 input 来源（figma-data / MCP）
- STOP at end

### 5.4 Sprint B spec 真源

1. **本文件 §5.1-5.3**
2. [`design-spec-canonical-alignment-tracker.md`](../retrospection/design-spec-canonical-alignment-tracker.md) §轨道 C Tier 1-B 段
3. [`figma-sync/audit-translation-completeness.mjs`](../../../figma-sync/audit-translation-completeness.mjs) — 5 维 audit 模板范式
4. [`figma-sync/audit-figma-conformance.mjs`](../../../figma-sync/audit-figma-conformance.mjs) — figma 真源对比范式
5. [`docs/internal/mockup-conventions.md`](../../mockup-conventions.md) — M0/M1/M10 hard rules SoT
6. [`docs/internal/design-process.md`](../../design-process.md) — M22 / Pre-Phase 0 / M11 / M14 / M15 / M16 / M21 / M6（其中客观可测项目可机械化）
7. [`docs/meta-rules.md`](../../meta-rules.md) trigger K — 客观可测规则必须 L3+

---

## 6. 顺路 Sprint C/D — Tier 2-E / 2-F（plan owner 直接路径 B）

### 6.1 Tier 2-E `scripts/figma-url-to-canonical.mjs`

| 项 | 内容 |
|---|---|
| 用途 | 替代 AI 读 `figma-component-catalog.md` — 用户 paste figma URL → 输出 canonical 组件名 + props 映射 |
| 输入 | figma URL（提取 fileKey + nodeId） |
| 数据源 | `figma-data/published/` index + `src/design-system/translation/figma-to-code-mapping.json` |
| 输出 | stdout: canonical component path + suggested props |
| 估时 | ~1h plan owner 直接 |
| 参考范式 | `scripts/new-backlog.mjs`（Tier 2-D · v0.4.0 ~89 行 zero-dep ESM CLI）|

### 6.2 Tier 2-F `scripts/lint-skills.mjs`

| 项 | 内容 |
|---|---|
| 用途 | 验各 `.claude/skills/*/SKILL.md` 起手依赖文档存在（防止 skill 引用文档被移走后 silent fail） |
| 输入 | 扫 `.claude/skills/*/SKILL.md` 提取所有 `(docs/.*\.md)` link |
| 输出 | findings: skill name + missing file paths |
| Strict mode | 升 12th strict gate（与 Tier 1-B 加和后 11 → 12）|
| 估时 | ~1h plan owner 直接 |
| 参考范式 | `audit-allowlist/` 文件夹结构 |

---

## 7. Sprint E — v0.5.0 release wrap-up

按 [`2026-05-14-v040-release.md`](../retrospection/2026-05-14-v040-release.md) §Wrap-up Process 18 步 checklist：

1. flip `button-canonical-api-migration` decision → resolved (+ resolvedAt + resolutionRef SHA)
2. tracker §v0.5.0 段加 ✅ shipped + actual evidence
3. STATUS.md "当前版本" 段升 v0.5.0 + Last updated 改今天
4. CHANGELOG.md 加 v0.5.0 section（含 breaking change notice for Button old API @deprecated）
5. RELEASING.md gate 表加第 11 + 12 strict gate
6. retrospect [`docs/internal/retrospection/<YYYY-MM-DD>-v050-release.md`](../retrospection/) — Scope shipped / 反模式 / 学到的教训 / Evidence
7. changeset → `pnpm changeset` minor bump + summary
8. `pnpm changeset version` → bump package.json 0.5.0
9. commit `release: v0.5.0`
10. **用户必须 ack tag push 这一步**（不可逆）
11. `git tag v0.5.0 && git push origin v0.5.0`
12. `gh run watch <run-id>` 监控 CI
13. CI green 后 `gh api 'orgs/.../packages/.../versions'` 实物 verify（per memory `feedback_release-verify-packages-page` — CI green ≠ publish 成功）
14. STATUS / retrospect 回填 CI run URL + Packages URL + Packages API timestamp
15. commit `docs(wrap-up): v0.5.0 ✅ published — backfill CI + Packages evidence`
16. push master（per memory `feedback_commit-includes-push` — 本项目默认 commit 含 push）
17. 起 next-session-pickup-<YYYY-MM-DD>-v0-6-0.md（v0.6.0 主线 Tier 1-C + EXTRACT-006 + CANONICAL-007）
18. SessionEnd hook 自动 check "Last updated" 是今天

---

## 8. 历史决策 + memory 索引（必读）

| Topic | Memory file |
|---|---|
| Baseline 实跑前不信 backlog 估值 | [feedback_baseline-before-plan](../../../../../.claude/projects/-Users-nancy-Documents-AICoding-VS-Code-tvu-design-system/memory/feedback_baseline-before-plan.md) |
| Executor 不准自 commit | [feedback_executor-no-self-commit](../../../../../.claude/projects/-Users-nancy-Documents-AICoding-VS-Code-tvu-design-system/memory/feedback_executor-no-self-commit.md) |
| Review result vs rationale | [feedback_review-result-vs-rationale](../../../../../.claude/projects/-Users-nancy-Documents-AICoding-VS-Code-tvu-design-system/memory/feedback_review-result-vs-rationale.md) |
| Commit 含 push（项目默认）| [feedback_commit-includes-push](../../../../../.claude/projects/-Users-nancy-Documents-AICoding-VS-Code-tvu-design-system/memory/feedback_commit-includes-push.md) |
| Release wrap-up 必 verify Packages 页 | [feedback_release-verify-packages-page](../../../../../.claude/projects/-Users-nancy-Documents-AICoding-VS-Code-tvu-design-system/memory/feedback_release-verify-packages-page.md) |
| No popup for clear recommendation | [feedback_no-popup-for-clear-recommendation](../../../../../.claude/projects/-Users-nancy-Documents-AICoding-VS-Code-tvu-design-system/memory/feedback_no-popup-for-clear-recommendation.md) |
| One-shot prompts | [feedback_one-shot-prompts](../../../../../.claude/projects/-Users-nancy-Documents-AICoding-VS-Code-tvu-design-system/memory/feedback_one-shot-prompts.md) |
| Parallel sessions（dirty 协议）| [user_parallel-sessions](../../../../../.claude/projects/-Users-nancy-Documents-AICoding-VS-Code-tvu-design-system/memory/user_parallel-sessions.md) |
| Audit 白名单 vs SOT 重构 | [feedback_audit-whitelist-vs-sot-refactor](../../../../../.claude/projects/-Users-nancy-Documents-AICoding-VS-Code-tvu-design-system/memory/feedback_audit-whitelist-vs-sot-refactor.md) |

---

## 9. v0.4.0 关键复盘点（reference，不重复）

详见 [`2026-05-14-v040-release.md`](../retrospection/2026-05-14-v040-release.md) §反模式 + 学到的教训：

- **反模式 1**：Plan owner 引入 prompt 模板回归 — Sprint A 写 prompt 时不写 commit message section
- **反模式 2**：Plan owner 把"我没找到"等同"不存在" — Sprint A baseline grep 范围必须含 `tests/`
- **反模式 3**：Pickup spec 可以跟 canonical 现状 desync（Phase 6.3 + 6.7 二次实证）— 本 pickup §4.2 已识别 21 sets vs 8 sets drift，必须 baseline 实证后再写 prompt
- **反模式 4**：MCP server churn 触发 UI render bug — figma MCP 启动慢时给足 ToolSearch 时间

---

## 10. 起手第一句话（用户对新 session 说）

```
按 docs/internal/_plans/next-session-pickup-2026-05-15-v0-5-0.md 接手
```

或更短：

```
继续 v0.5.0 主线
```

新 session 起手会自动跑 SessionStart hook → 5-step onboarding → read 本文件 → 直接进 **Sprint A.3**（写 Phase 6.8 executor prompt — 加 `canonicalTheme` axis；Sprint A.1 baseline + A.2 SoT cleanup 均 ✅ 2026-05-15 done，详见 §3.3/§4.2/§4.3）。

**用户必须 ack 的关键节点**：
- Sprint A.3 executor prompt 写完后用户审，ack 后交 Codex 执行
- Sprint B Tier 1-B executor prompt 同上
- §7 step 10 tag push（不可逆操作）
