# V4-1865 Mockup Session Retrospect + Rules Backflow

**Date**: 2026-06-01
**Task**: TVU Pack · Config-T mockup for [V4-1865](https://tvunetworks.atlassian.net/browse/V4-1865) "Enable Reuse of TM1100 Pack's Second Internal WiFi Module"
**File**: [Config-T file `rJJjWWs51n2iFOlCIC7aYG`](https://www.figma.com/design/rJJjWWs51n2iFOlCIC7aYG/Config-T---Local-UI---v7.7---8.0--20240220) · new page `6601:2`
**Iterations**: v1 → v5 (5 walkthrough rounds with rebuild each)

---

## 1. Session 概览

| v | 关键 deliverable | 用户反馈触发 |
|---|---|---|
| v1 | 5 frame · WiFi pagination + Hotspot dim OFF + M23 spec card 顶端版 | 用户说"硬件理解错了" |
| v2 | 重做 · 3-mode Hotspot + 2-section coordination 架构 | 用户问"为什么用 dropdown 不用 single radio" |
| v3 | M32 compliance refactor · radio + library icon Arrow Up | 用户抓 Arrow Up 语义错 + 提示文字染品牌色 + 列错位 + 缺 Jira 组件 |
| v4 | M23 canonical 重构 · Jira widget + PRD card + 2 section UX cards + 全双语 | 用户请求补流程连线 |
| v5 | 3 条流程连线 + row 间距 120→440px 调整 | 完成，本次 retrospect |

---

## 2. Top 7 Process Gaps（按返工成本排序）

| # | Gap | 返工成本 | 真源回流去处 |
|---|---|---|---|
| 1 | **跳 design-process.md 8 步 Jira 流程**（M-DISCIPLINE 已存在但未用 TodoWrite 物化）| 5 轮 walkthrough · 几乎整个 mockup 重做 | M-DISCIPLINE 实证已加；code-side 加 R-DISCIPLINE mirror |
| 2 | **硬件架构假设错** — 凭 Jira description "second internal WiFi module" 字面理解 | v1 整轮报废 | design-process.md Pre-Phase 0 Step A 加输入 #4 "当前硬件 / 系统架构 context" |
| 3 | **M23 canonical 起手没读全文** — 7 点规则只对 2 点（navy + 双语，缺 4px cyan 左 stroke / cyan title / Noto Sans SC ZH / opacity 0.45 / Layout A-逐行）| v4 全部重做 spec card | M-DISCIPLINE 已覆盖（强制 TodoWrite 物化即可强读全文）|
| 4 | **品牌色 vs M23 cyan accent 混用** | v4 全 UX 卡 title 重新设色 | M-COLOR §C4 annotation accent color attribution 表 |
| 5 | **deliverable spatial proximity** — PRD/spec 卡距 mockup > 一屏 | v4 layout 整体重构 | M23.12 Spatial Proximity sub-rule |
| 6 | **Unicode 字符代 icon** — F5 用 `→` 字符 / M23 卡用 `⚠`/`□` Unicode | v3 / v4 局部修 | 已有 M-TXT-ICON-AUDIT 覆盖（DUPLICATE 不重立）|
| 7 | **跨 node arrow 凭 frame 中线估算 Y** — 真实 Mode `absoluteBoundingBox.y = 1679`，我估 2360 | v5 重画 3 arrows | figma-technical-reference.md Q14 absoluteBoundingBox probe |

---

## 3. 回流明细（6 处编辑 + 1 retrospect doc + 1 code mirror）

### 3.1 [`mockup-conventions.md`](../mockup-conventions.md)

| 改动 | 类型 | 简述 |
|---|---|---|
| M-DISCIPLINE 实证 list | append | V4-1865 作为 2026-06-01 第二次实证（BM-1047 之后）|
| M-COLOR §C4 | **NEW** sub-clause | brand green / M23 cyan / tips gray 三色归属表 + V4-1865 反例 |
| M23.12 Spatial Proximity | **NEW** sub-rule | UX 卡 / PRD 卡 layout 紧邻 mockup 强制 |

### 3.2 [`design-process.md`](../design-process.md)

| 改动 | 类型 | 简述 |
|---|---|---|
| Pre-Phase 0 Step A 输入表 | amend | 加输入 #4 "当前硬件 / 系统架构 context" + ask 模板 + V4-1865 反例 |

### 3.3 [`figma-technical-reference.md`](../figma-technical-reference.md)

| 改动 | 类型 | 简述 |
|---|---|---|
| Q14 Cross-node arrow probe | **NEW** Q | 跨 node 画连线必 probe `absoluteBoundingBox`，禁止估算 |

### 3.4 [`code-conventions.md`](../code-conventions.md)

| 改动 | 类型 | 简述 |
|---|---|---|
| R-DISCIPLINE umbrella | **NEW** rule | mirror M-DISCIPLINE 到 code-side · TodoWrite 物化 R-rules / 6 task-type todo 子集 / 同 enforce 条款 |

---

## 4. 与现有规则对比（DUPLICATE 不重立 / PARTIAL 已合并）

| 反思候选 | 是否真源已覆盖 | 处理 |
|---|---|---|
| Unicode 字符代 icon | ✅ M-TXT-ICON-AUDIT | DUPLICATE · 不重立 |
| Library primitive scan as Phase 0 default | ✅ M0 + M30 + M32 已覆盖 icon 范围 | PARTIAL · 不重立（Radio/Checkbox/Tag primitive 探查由 M0 catalog grep 兜底）|
| 互斥选择控件量化 (N≤4=radio, N≥5=dropdown) | ❌ 未覆盖 | DEFERRED · 待积累 2-3 个实证后再立（M22 设计意图已隐含强信号）|
| 2-section coordination · single source of truth | ❌ 未覆盖 | DEFERRED · 是 SaaS 设计 pattern，候选 design-process.md 后续 |
| "Hide vs dim" file convention | ❌ 未覆盖 | FOLDED to M-COLOR §C4 触发逻辑（disabled state 视觉契约本质是色彩 + 可见性的 file-level convention）|

---

## 5. 高效对话建议（按 ROI 排序）

### 5.1 提需求方（PM / Designer 视角）

1. 任务文字里出现 "second X" / "third Y" / "extend Z" → **主动写一句"当前 X 是…"**，省 AI 1 轮反推
2. 设计规范在 repo 真源里 — AI 起手没读对一定要喊（用户实战："我记得我写过这个规则"）
3. 给 walkthrough 反馈时一次性列完所有违例项，避免分 N 轮挤牙膏（AI 一次能修 4-5 项）

### 5.2 AI 协作流程

1. **起手必 TodoWrite 物化 M-rules / R-rules**——别等 walkthrough 才发现 8/10 规则没执行
2. **不读规则全文就开画 = 反 M-DISCIPLINE**，特别 M23 / M-COLOR 这类多 sub-clause 大规则
3. **路径决策时显式列 trade-off 给用户拍板**，不要"技术便利"暗中替"UX 适配"决定（如选 dropdown 不选 radio 案例）

### 5.3 PM / Stakeholder review 方

1. mockup 文件起手必看 Jira widget 是否带 hyperlink (M23.8) + page 名是否 M45 三段式
2. 看 M23 卡：navy bg + 4px cyan 左 stroke + 双语 → 缺一即不合规
3. spatial proximity 检查：每个 spec 卡距其描述的 mockup 是否 ≤ 一屏

---

## 6. Model 选型推荐（基于本 session 实证）

- **本 session 主要用 Sonnet** — 适合多轮规则对比 + 长文档导航 + 多步骤 figma 操作
- 单纯字段改动（如 pagination text update）—— Haiku 也可
- **多 sub-clause 规则的合规判断**（如 M23 7 点 / 8 步 Jira 流程）—— Sonnet 更稳，Haiku 容易遗漏

---

## 7. Action Items

| # | Action | Owner | Due |
|---|---|---|---|
| 1 | 本 6 处真源回流 commit + push tvu-design-system | AI | 本 session |
| 2 | meta-rules.md 加触发器 F「读 ≠ 做」cross-cutting（M-DISCIPLINE / R-DISCIPLINE 元层 mirror）| Nancy / 下次 session | 下次 mockup 类 session |
| 3 | V4-1865 Jira ticket comment 贴 Figma link + 6 个待 confirm 问题 | Nancy | 本周 |
| 4 | Slack 同步 Joshua Tucker walkthrough 邀请 | Nancy | 本周 |
| 5 | "互斥选择量化" + "2-section coordination" 等 DEFERRED 候选 → 累积 2-3 个实证后立 | TVU 团队 | 跨 session |

---

## 8. 附录 · `use_figma` 改动统计

| Phase | 调用次数 | 主要节点 |
|---|---|---|
| v1 phase | ~8 calls | 6601:2 (page) / 6602:1949..6602:2792 (F0/F1/F2/F3) / 6603:287 (F4 dim) / 6614:1203 (M23 v1) |
| v2 redesign | ~6 calls | 6626:287/569/851 (F3/F4/F5 mode states) / 6627:* (mode swaps) / 6629:1125 (M23 v2) |
| v3 M32 refactor | ~5 calls | 6635:1370/1389/1436 (radio groups) / 6636:1324 (arrow up icon) |
| v4 M23 canonical | ~5 calls | 6646:1324 (Jira widget) / 6648:1116 (PRD card) / 6649:1116 (WiFi UX) / 6650:1116 (Hotspot UX) |
| v5 flow arrows | ~4 calls | 6654:1116..1127 / 6658:1116/1119 (arrows + labels) |
| **Total** | ~28 calls | 1 page + 6 mockup frames + 1 Jira widget + 3 spec cards + 3 arrows + numerous primitives |
