# Design Walkthrough Report (F1) — V4-2333 LCD + V4-2376 Config-T · 走查轮三十三

**Date**: 2026-08-07 · **Owner**: Nancy · **状态**：F1 已跑完，findings 待 owner 拍板后发 Jira
**Deliverable**: LCD `0054ib0nLmt27bC3QlGDl7` Section `9402:59` · Config-T `rJJjWWs51n2iFOlCIC7aYG` Section `8075:1000`
**Page type**: Settings / Form（Data Audit 跳过）+ Monitoring 元素（TEST/LIVE 状态带 → M3/M4 触发）
**PRD reference**: LCD `9345:2`（§4，15 条）· Config-T `8084:522`
**Conformance report**: `tvu-design-system/docs/handoffs/.conformance/0054ib-round33-20260807.json` · `rJJj-round33-20260807.json`

---

## 0. Axis Execution Ledger

| 轴 | 覆盖 section | FIRED / SKIPPED | 理由 / 触发依据 |
|---|---|---|---|
| **轴① 系统一致性** | §3 D1/D2 + §5.7 D6/D9/D13 + D16 | ✅ FIRED | 双端同 feature、跨 surface 口径复用 ⇒ D1/D2 必查；D16 见机检 `binding-fidelity` |
| **轴② 既有 6-section** | §1–§6 | ✅ FIRED | 定稿前兜底全扫，无条件触发 |
| **轴③ 视觉质量** | §5.5 + §5.6 + §5.8 | ✅ FIRED | 两端各 ≥2 个反馈元素（toast ×4 / hint ×6）⇒ §5.5 触发 |
| §5.9 生成代码轴 | — | ⏭️ SKIPPED | 纯 Figma mockup，无 claude.ai/design HTML 产物 |
| §5 数据可行性 | — | ⏭️ SKIPPED | Step 0 判为 Settings/Form；无 derived metric（Bitrate/Delay 为设备直报遥测，非派生值）|

### Report Completeness Gate

| 判断轴 | 有实质 finding？ | 证据指针 |
|---|---|---|
| §2 PRD/US 覆盖率 | **YES** | PRD req 14「发起失败」无对应帧，仅有提交失败 L7 → F33-2 |
| §4 Anti-pattern Scan | **YES** | 「只查语义不查像素」命中：过时措辞 `Update 提交` 两端各 1 处逃过前 6 轮扫查 → F33-1 |
| §5.6 强调预算 + 视觉权重 | **YES** | 四个 toast 强调预算一致（各帧恰 1 个语义色浮层）；见 §5.6 |
| §5.7 a11y / 运行态 / 主题对等 | **YES** | D9：toast 存续期遮蔽源状态文本 150px → F33-5；发起失败态缺设计 → F33-2 |
| §5.8 视觉质量 | **YES** | B6 可扫描性：`_connector · ①→B1` 横穿 C0 帧 480×3 → F33-3 |

---

## 1. Sibling Visual Contract 一致性（M21）

- **Sibling probed**：Config-T 端同 feature Section `8075:1000`（跨 surface 对照）+ LCD 同文件既有 toast 先例 `9472:84`
- **Contract 实测**：toast 一律 DS `Message` set / `size=L` / `h=45` / `relY=8` / 水平居中
- Findings：
  - ✅ 四个 LCD toast 全部满足契约（281→relX 100 · 322→79 · 369→56 · 363→59，各等于 `(480−w)/2`）
  - ✅ 跨 surface 命名口径一致：句内提及信号本身用小写 `test signal`，大写 `Test Signal` 仅用于页面名 / Settings 行名

## 2. PRD 覆盖率

PRD §4 共 **15 条**；Acceptance 卡 **14 条**（与 D43 ① 记录一致）。

| # | 需求 | 对应交付 | 覆盖 |
|---|---|---|---|
| 1–4 | 无源开测 / 复用 Live 控件 / TEST 标示 / 动态图卡+时间码 | AFTER 1 · AFTER 2 | ✅ |
| 5–8 | 共用设备设置 / 三参数 / 默认值同源 / Format 十档 | L2 · L3 · Data Contract | ✅ |
| 9 | 测试中参数可编辑、应用后重连 | L4 · L5 · L6 | ✅ |
| 10 | 入口挂 Settings 树、不新增齿轮 | L1.5 · B1 | ✅ |
| 11 | Config-T 新增 Test Signal tab | Config-T 端 | ✅（跨端） |
| 12 | 两端显示并可改接收机 | C0 · C1 · C2 · C3 | ✅ |
| 13 | 提交控件 dirty 驱动 + 提交结果双态 | L5 · L6 · L7 | ✅ |
| **14** | **发起失败 → 停留空闲态 + 失败反馈，不得假 LIVE** | **仅 L7（提交失败）** | **⚠️ partial → F33-2** |
| 15 | 真实源优先 + 拔出后自动回落 | AFTER 2b · 2c · 2d | ✅ |

**Coverage: 14 / 15 (93%)**

## 3. Rule Compliance

| Rule | Status | Evidence |
|---|---|---|
| M-INTEGRITY I1/I3/I4（integrity 闸）| ✅ PASS | 双端 scoped 机检 `integrity ✅ PASS` |
| M-INTEGRITY I2（overlap 闸）| **❌ LCD FINDINGS(10) / ✅ Config-T PASS** | 10 条全为 `frame ⨯ _connector` → F33-3 |
| M23.14 双语行距（bilingual 闸）| ✅ PASS | 双端 `bilingual-spacing ✅ PASS` |
| M23.6 连线锚定（connector 闸）| ✅ LCD PASS / ❌ Config-T FINDINGS | Config-T 侧解析器抓不到 node id（已知局限）|
| M52 / D16 binding-fidelity | ❌ FINDINGS（两端）| §M49.1 owner-deferred 存量类，非本轮引入 |
| M-COLOR（colors 闸）| ❌ FINDINGS（两端）| 同上，file-wide 存量债 |
| M32 库归属（library-origin）| ❌ FINDINGS（两端）| 同上 |
| §字体规范〈产品层字体〉| **⚠️ 债清单数字需更正** | LCD 产品帧实测 **152 个 Roboto 节点**（旧记录 88）+ 9 段 PingFang SC → F33-6 |
| Section 结构 | ✅ | BEFORE `9359:2` 与 AFTER 分属不同 Section |
| M3 状态色（Monitoring）| ✅ | 蓝 ● TEST / 红 LIVE 区分明确 |
| M4 Dark theme | ✅ | LCD 全深色 |

## 4. Anti-pattern Scan

| Anti-pattern | Found? | Location |
|---|---|---|
| 规则正文枚举特例 | ❌ | — |
| 参考输入当 spec | ❌ | REFERENCE 区显式标注「非交付物」|
| 未评估 default 直接交付 | ❌ | — |
| **只查语义不查像素 / 旧措辞残留** | **✅ found** | `9627:272` + `8094:521` 的 `Update 提交` → F33-1（已修）|
| 只查组件名不查渲染实况 | ❌ | toast 已亲取渲染图核对 |
| BEFORE 与 AFTER 同 Section | ❌ | — |

## 5.5 Feedback UI Inventory（M52.3）

| 类 | 成员 | 源 | 尺寸 | 判定 |
|---|---|---|---|---|
| toast | `9472:84` info · `9901:778` info · `9988:423` success · `9988:690` error | ✅ DS `Message` set（`remote:true`）| 全 `size=L` / h45 / relY8 / 居中 | ✅ 同源 |
| inline hint | 6 处 `hint · …` | 手写 TEXT（LCD 无 DS inline-hint 组件）| Roboto Regular | ✅ 类内同构 |

## 5.6 强调预算 + 视觉权重

| 帧 | 语义色浮层 | 灰 hint | 主 CTA | 判定 |
|---|---|---|---|---|
| AFTER 2b / 2d | 1（info toast）| 0 | Stop Test | ✅ 未超预算 |
| L5 | 0 | 1（unsaved changes）| OK | ✅ |
| L6 | 1（success toast）| 1 | OK | ✅ |
| L7 | 1（error toast）| 1 | OK | ✅ |

## 5.7 系统一致性补充轴

| 维度 | 判定 | 说明 |
|---|---|---|
| **D6** a11y | ✅ | LCD 为触屏 + 物理键，无键盘焦点范式；对比度由 DS token 保证 |
| **D9** 运行态 | **❌** | **发起失败态无设计（F33-2）**；toast 存续期遮蔽源状态（F33-5）。其余态（idle / running / dirty / success / error / 源接入 / 源丢失）齐备 |
| **D13** 主题对等 | N/A | LCD 仅深色，无浅色主题 |

## 5.8 视觉质量轴

| 维度 | 判定 | 说明 |
|---|---|---|
| **B1** 视觉层级 | ✅ | 卡内 18/15/13/11 四档，相邻比 ≥1.18；产品帧 Verdana 三档 |
| **B2** 信息密度 | ✅ | 无 chartjunk |
| **B5** 留白节奏 | ✅ | UX 卡与左右兄弟 hGap 100 / 80；param-table 三列 20/20 |
| **B6** 可扫描性 | **❌** | `_connector · ①→B1`（`9748:323`）横穿 C0 帧 480×3，打断阅读动线 → F33-3 |
| **B7** 渐进披露 | ✅ | Timecode / Overlay 在 LCD 只读、全量参数收在 Config-T |

---

## 6. Findings 与建议动作

| ID | 严重度 | Finding | 状态 |
|---|---|---|---|
| **F33-1** | 🔴 High | 两端参数对照表仍写 `Update 提交`（`9627:272` / `8094:521`），与 D40②/D41① 拍板的 Config-T=`Apply` 正面冲突 | **✅ 本轮已修**（两端 → `Apply 提交`，残留 0，段结构未变，列间距仍 20）|
| **F33-2** | 🟡 Medium | PRD req 14「测试**发起**失败」无对应交付帧（只有提交失败 L7）；Acceptance 第 14 条把两种失败合并成一句，遮蔽了缺口 | **✅ 本轮已修**（owner 拍板「补一帧」）：新增帧 `10052:459` `AFTER 1b - Start Test failed · stays idle (error toast)`（A 列 y2290，clone 自 AFTER 1 保持空闲态）+ error toast `10052:645`（`Couldn’t start the test signal — please try again.`，w375 居中 relX53/relY8）+ annot `10053:492`（A5，6 段与模板角色逐段吻合）+ 分支标签 `10054:492`；Acceptance **14→15 条**（拆「发起失败」/「提交失败」），卡高 960→1018 |
| **F33-8** | 🟡 Medium | **新发现**：LCD UX 卡 `Changes` 五段 ①–⑤ **完全没有「提交与结果反馈」段**（dirty→OK→成功/失败全缺），而 Config-T 同类卡 `8085:520` 有 ⇒ 跨 surface 不对等，dev/QA 只读 LCD 卡看不到这条线 | **✅ 本轮已修**：补第 ⑥ 段 `Commit & result feedback`（含本轮新增发起失败态），卡高 604→790 |
| ~~**F33-3**~~ | ⛔ **撤回（假阳性）** | ~~LCD overlap 闸 10 条 `frame ⨯ _connector`，主犯 `9748:323` 横穿 C0 帧 480×3~~ | **不成立 → 见下方「F33-3 撤回」**。owner 已批准「只修主犯」，但 probe 后前提被推翻，**未执行**|
| **F33-3′** | 🟡 Medium | **`audit-mockup-overlap` 判据缺陷**：比 group 包围盒且不认连线锚定语义 ⇒ 画对的连线图必然报红 | ⏸ DS 档回流候选 |
| **F33-4** | 🟡 Medium | D43 ③ 记「LCD 10 处保留 `Start Test`」，实测交付层现存 **30 处**；逐条判定语义**全部正确**（均为按钮动作）⇒ 属记录口径错误、非漏改 | ✅ 本报告更正，收尾写进 spec |
| **F33-5** | 🟢 Low | toast 遮住 `NO INPUT · Test Pattern` 150px（`9901:766`）；按改前宽 321 反推覆盖范围相同 ⇒ 既有形态、非本轮引入，且先例帧 AFTER 2b 同构、toast 自动消失 | 登记不改 |
| **F33-6** | 🟢 Low | LCD 产品帧字体债实测 **152 个 Roboto 节点**（DS 实证档案记的 88 是轮五旧数）+ 9 段 `PingFang SC`；均需 owner 在本地 Figma 换 Verdana | 登记，数字在收尾更正 |
| **F33-7** | 🟢 Low | 两个参数对照表（本轮设计结论的对照表，非参考物）被放在 **REFERENCE Section** 内，与「REFERENCE 区 = 贴进来的来源」定义不符 | ⏸ 待 owner 拍板是否迁出 |

### F33-3 撤回 —— 我自己给的 finding 被 probe 推翻

owner 已就「只修主犯 `9748:323`」拍板，但**动手前 probe 出前提是错的，故未执行**。

`9748:323` 实际构造：`connector-line-h` 在 **y 23–25**，而所有帧自 **y 40** 起 ⇒ 横线根本没进任何帧。group 包围盒到 y=43，是因为两端 `connector-dot`（y 37–43）与 `connector-arrow`（y 30–40）**故意探进帧内 3px** —— 那正是 M23.6「两端锚定」要求的做法。

对闸报的 10 对逐一做**叶子级**相交核验：

| 判定 | 数量 | 实质 |
|---|---|---|
| 叶子级真相交 | **6** | 全为 `connector-dot ⨯ frame`，6×3 / 3×6 —— 设计正确的锚点 |
| 纯 bbox 假阳性（叶子相交 = 0）| **4** | 含原点名「主犯」的 `①→B1 ⨯ C0` 480×3、`⨯ annot·C0` 400×3、`⨯ B1` 244×3、`⨯ annot·s1` 410×3 |

⇒ **10 条里 0 条是真缺陷。** 改连线只会破坏正确锚定去迎合一个比包围盒的闸。

**真问题在闸（F33-3′）**：`audit-mockup-overlap` 以 group 包围盒判重叠、且无连线锚定语义豁免 ⇒ 任何含长跨度连线的流程图**结构上不可能 PASS**。过 §M-DISCIPLINE.SOURCE 三问 —— ① 换个产品仍成立 ② 是判据不是取值 ③ 别的 consumer 会照着去追不存在的重叠 ⇒ **DS 档**。建议修法：对名为 `_connector · *` 的 GROUP 走叶子级相交，或对「连线端点 ≤8px 探入」显式豁免。

**教训**：我在只看闸输出（`480.0x3.0` 这个数字）时就把它写成了「横穿 C0 帧」的 Medium finding，还给 owner 出了选项。**闸报的数字是包围盒，不是形状**——判定几何缺陷前必须下钻到叶子。

### 与本轮改动的因果切割（逐条用 node id 核过，非推断）

- F33-3 的 10 条 overlap 涉及 `9359:492 / 9490:4 / 9673:306 / 9748:323 / 9359:678 / 9490:7 / 9469:65 / 9490:10 / 9480:108 / 9901:795 / 9495:2 / 9672:257 / 9866:338 / 9867:346`，**无一是本轮触碰的 `9901:778` / `9597:217`** ⇒ 非本轮引入，是 scope 从轮三十二的单帧 `9343:2` 放大到整个 Section 后才暴露。
- Config-T 端命中 **826 个节点，与轮三十二完全一致** ⇒ 该端本轮未被改动，findings 全为存量。

### 机检原文（贴证据，不靠目测）

```
LCD  --node 9402:59   integrity ✅PASS · bilingual-spacing ✅PASS · connector ✅PASS
                      colors/typography-icon/library-origin/binding-fidelity/library-binding ❌FINDINGS（§M49.1 存量）
                      overlap ❌FINDINGS(10)  ← F33-3
                      1325 节点命中 / 1539 条 finding
Config-T --node 8075:1000  integrity ✅PASS · bilingual-spacing ✅PASS · overlap ✅PASS
                      connector ❌FINDINGS（解析器抓不到 node id，已知局限）
                      library-binding ⚠️ERROR（无预取 figma-data，非本轮引入）
                      826 节点命中 / 1095 条 finding ← 与轮三十二同数
```

**⚠️ 一处必须记的口径**：`--non-blocking` 让总闸在 9 个子闸**全 ERROR** 时照样 `exit 0`。本轮第一次跑就撞上（worktree 无 `.env`），**exit 0 完全不等于通过**——必须看 summary 里每个子闸的 PASS/FINDINGS/ERROR，不能看退出码。

**Walkthrough complete.** Issues found: **1 high（已修）/ 3 medium / 3 low**。
