# 几何走查 · 行栅格存量清单（R1/R2/R3）

> ⛔ **机械生成，别手改** —— 重跑 `node scripts/report-geometry-rows-backlog.mjs --out <此文件>` 刷新。
> ⛔ **本文件不判对错**：每条都是可核事实（实测数字 + Figma 链接），**判真假是 designer / owner 的活**
> （AGENTS「⛔ 不替真源编设计理由」）。判完才谈 `BASELINE_R1/R2/R3` 取值与要不要常开 —— 见 backlog `CANONICAL-F104`。
>
> **怎么判**：每条给了众数、离群值、差值、Figma 链接。判「真缺陷」就在 Figma 修；判「有意」就把它写进
> `--config` 的 `allow` 表并**写清理由**（闸每次运行会把 allow 掉的每一条连同理由打出来，禁静默 cap）。
>
> **声明证据分档**（2026-08-27 加）：每条附一档，读的**全是 Figma 自己写下的属性**
> （`itemSpacing` / `layoutMode` / `layoutPositioning` / `layoutSizingVertical`），零审美判断。
> **🅰️ = 文件内部矛盾**（容器自己声明 `itemSpacing=S`、实际 gap≠S、且无 `ABSOLUTE` 子可解释）
> —— 这一档**不需要人判**，直接在 Figma 修。其余三档仍要人拍，但都带上了「Figma 怎么声明的」这个事实：
> **🅰️² 全 FIXED**（有人单独改过这行，⚠️ 仍可能是有意如 footer）· **🅱️ 有显式声明解释**（`HUG` 行高由内容定 /
> `ABSOLUTE` 被拿出 flow ⇒ 更可能有意）· **🅲 无声明可比**（非 auto-layout / R3）。档语义真源 = 脚本头注释。
>
> ⛔ **分档不是判定**，它每次重跑都重算。⛔ 别在本文件上打勾记判定 —— 整份覆盖，勾会被抹掉。判定的**唯一落点**是
> 上面那两个：Figma 里改掉，或 `allow` 表里加一条带理由的具名豁免。本文件只是**事实清单**，
> 判过的条目会因为「已修」或「已被 allow 命中」而自然从这里消失 —— 那才是进度的可核信号。
>
> 生成自 `figma-data/mockup/` 的本地快照（gitignored，388 MB 级）。⛔ 数别抄进别处，重跑现取。

**合计**：4 份快照 · 原始命中 **71** 条 · 去重后独立决策点 **28** 个。

**声明证据分档合计**：🅰️ 文件内部矛盾 **5**（无需人判）· 🅰️² 全 FIXED **7** · 🅱️ 有声明解释 **14** · 🅲 无声明可比 **2**。

---

## `0054ib0nLmt27bC3QlGDl7`

- **分母**：269 个行栅格 / 1029 行 / 37 条分隔线
- **行分类器排除**（禁静默 cap，全部列出）：notStacked=2877 · notEqualWidth=1039 · tooTall=81 · modeShareLow=204 · outlier=25 · tooFew=4656
- **原始命中**：R1=13 · R2=4 · R3=0（共 17）
- **去重后的独立决策点**：**7**
- **声明证据分档**：A=2 · A2=1 · B=4 · C=0（档语义见脚本头注释；⛔ 分档是事实不是判定）

- **R2** `Frame 9`（VERTICAL itemSpacing=16）— 间隙 33 / 126 / 34　**×2 个实例**（同一模式，算一个决策点）
  - 不同值：33 / 34 / 126　行高：16
  - [看容器](https://www.figma.com/file/0054ib0nLmt27bC3QlGDl7?node-id=5478%3A6144) · 其余实例：[2](https://www.figma.com/file/0054ib0nLmt27bC3QlGDl7?node-id=5478%3A6337)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅰️ 文件内部矛盾（无需人判） — 容器自己声明 itemSpacing=16，实际 gap 33 / 126 / 34 与之矛盾，且无 ABSOLUTE 子可解释 ⇒ 文件内部不一致

- **R2** `Frame 9`（VERTICAL itemSpacing=16）— 间隙 33 / 126 / 34 / 34　**×2 个实例**（同一模式，算一个决策点）
  - 不同值：33 / 34 / 126　行高：16
  - [看容器](https://www.figma.com/file/0054ib0nLmt27bC3QlGDl7?node-id=5478%3A6510) · 其余实例：[2](https://www.figma.com/file/0054ib0nLmt27bC3QlGDl7?node-id=5478%3A6695)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅰️ 文件内部矛盾（无需人判） — 容器自己声明 itemSpacing=16，实际 gap 33 / 126 / 34 / 34 与之矛盾，且无 ABSOLUTE 子可解释 ⇒ 文件内部不一致

- **R1** `Frame 1994` — 众数 **44**，实测 44 / 48
  - 离群行：`48` "Frame 1992" · `48` "Frame 1993"
  - 差值：+4px
  - [看容器](https://www.figma.com/file/0054ib0nLmt27bC3QlGDl7?node-id=5389%3A10243)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅰️² 离群行全 FIXED（有人改过，⚠️ 仍需拍） — 离群行全 FIXED ⇒ 高度是逐行显式写死的，有人给这行单独设过（⚠️ 仍可能是有意，如 footer 行）

- **R1** `Frame 1995` — 众数 **35**，实测 35 / 36　**×9 个实例**（同一模式，算一个决策点）
  - 离群行：`36` "Frame 1994"
  - 差值：+1px
  - [看容器](https://www.figma.com/file/0054ib0nLmt27bC3QlGDl7?node-id=5314%3A9564) · 其余实例：[2](https://www.figma.com/file/0054ib0nLmt27bC3QlGDl7?node-id=7355%3A3539) [3](https://www.figma.com/file/0054ib0nLmt27bC3QlGDl7?node-id=1239%3A1232) [4](https://www.figma.com/file/0054ib0nLmt27bC3QlGDl7?node-id=6910%3A24364)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果

- **R1** `Item status` — 众数 **31**，实测 29 / 31
  - 离群行：`29` "Option"
  - 差值：-2px
  - [看容器](https://www.figma.com/file/0054ib0nLmt27bC3QlGDl7?node-id=1621%3A925)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果

- **R1** `Frame 1986` — 众数 **48**，实测 44 / 48
  - 离群行：`44` "Frame 1985"
  - 差值：-4px
  - [看容器](https://www.figma.com/file/0054ib0nLmt27bC3QlGDl7?node-id=1236%3A1028)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果

- **R1** `Frame 2015` — 众数 **44**，实测 41 / 44
  - 离群行：`41` "Frame 2"
  - 差值：-3px
  - [看容器](https://www.figma.com/file/0054ib0nLmt27bC3QlGDl7?node-id=1040%3A4669)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果

## `DtZcMkhNy6qh6jbQQnhreQ`

- **分母**：242 个行栅格 / 985 行 / 68 条分隔线
- **行分类器排除**（禁静默 cap，全部列出）：notStacked=2839 · notEqualWidth=415 · tooTall=208 · modeShareLow=1121 · outlier=124 · tooFew=6369
- **原始命中**：R1=15 · R2=22 · R3=1（共 38）
- **去重后的独立决策点**：**13**
- **声明证据分档**：A=3 · A2=3 · B=6 · C=1（档语义见脚本头注释；⛔ 分档是事实不是判定）

- **R2** `Frame 3071`（VERTICAL itemSpacing=16）— 间隙 16 / 16 / 16 / 16 / 16 / 16 / 16 / 34　**×19 个实例**（同一模式，算一个决策点）
  - 不同值：16 / 34　行高：32
  - [看容器](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=I4123%3A491%3B842%3A24361) · 其余实例：[2](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=I4139%3A1453%3B842%3A24361) [3](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=I4210%3A1803%3B842%3A24361) [4](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=I4528%3A2885%3B842%3A24361)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅰️ 文件内部矛盾（无需人判） — 容器自己声明 itemSpacing=16，实际 gap 34 与之矛盾，且无 ABSOLUTE 子可解释 ⇒ 文件内部不一致

- **R2** `Frame 3192`（VERTICAL itemSpacing=4）— 间隙 10 / 4　**×2 个实例**（同一模式，算一个决策点）
  - 不同值：4 / 10　行高：32 / 37
  - [看容器](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=6436%3A107) · 其余实例：[2](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=6454%3A107)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅰️ 文件内部矛盾（无需人判） — 容器自己声明 itemSpacing=4，实际 gap 10 与之矛盾，且无 ABSOLUTE 子可解释 ⇒ 文件内部不一致

- **R2** `Frame 3071`（VERTICAL itemSpacing=16）— 间隙 16 / 16 / 16 / 16 / 34 / 34 / 16 / 16 / 16
  - 不同值：16 / 34　行高：32
  - [看容器](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=150%3A7450)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅰️ 文件内部矛盾（无需人判） — 容器自己声明 itemSpacing=16，实际 gap 34 / 34 与之矛盾，且无 ABSOLUTE 子可解释 ⇒ 文件内部不一致

- **R1** `Frame 3088` — 众数 **32**，实测 32 / 40　**×3 个实例**（同一模式，算一个决策点）
  - 离群行：`40` "Frame 3087"
  - 差值：+8px
  - [看容器](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=192%3A11493) · 其余实例：[2](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=232%3A12535) [3](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=390%3A12615)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅰️² 离群行全 FIXED（有人改过，⚠️ 仍需拍） — 离群行全 FIXED ⇒ 高度是逐行显式写死的，有人给这行单独设过（⚠️ 仍可能是有意，如 footer 行）

- **R1** `Frame 3192` — 众数 **37**，实测 32 / 37　**×2 个实例**（同一模式，算一个决策点）
  - 离群行：`32` "menu-item · Assign Subscription Seats"
  - 差值：-5px
  - [看容器](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=6436%3A107) · 其余实例：[2](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=6454%3A107)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅰️² 离群行全 FIXED（有人改过，⚠️ 仍需拍） — 离群行全 FIXED ⇒ 高度是逐行显式写死的，有人给这行单独设过（⚠️ 仍可能是有意，如 footer 行）

- **R1** `Frame 2242` — 众数 **38**，实测 38 / 40
  - 离群行：`40` "Form/title"
  - 差值：+2px
  - [看容器](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=1631%3A19603)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅰️² 离群行全 FIXED（有人改过，⚠️ 仍需拍） — 离群行全 FIXED ⇒ 高度是逐行显式写死的，有人给这行单独设过（⚠️ 仍可能是有意，如 footer 行）

- **R3** `MicroApp PlanB AutoRefresh Widget` — 2 种分隔线（厚度跨度 0，色 2 种）
  - 1× `2|fill:#2fb54e`　"Rectangle"　[看](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=3698%3A5014)
  - 2× `2|fill:#7b7b7b`　"Rectangle"　[看](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=3698%3A5025)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅲 无声明可比（只能人判） — R3（分隔线厚度/色值）—— auto-layout 不表达这个，无声明可比

- **R1** `Frame 3105` — 众数 **32**，实测 24 / 32　**×3 个实例**（同一模式，算一个决策点）
  - 离群行：`24` "Frame 3104"
  - 差值：-8px
  - [看容器](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=842%3A17519) · 其余实例：[2](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=896%3A15821) [3](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=896%3A15869)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果

- **R1** `Frame 2233` — 众数 **41**，实测 41 / 57　**×2 个实例**（同一模式，算一个决策点）
  - 离群行：`57` "Frame 2066"
  - 差值：+16px
  - [看容器](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=6793%3A5072) · 其余实例：[2](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=6856%3A4834)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果

- **R1** `card-requirements` — 众数 **31**，实测 31 / 46
  - 离群行：`46` "bullet"
  - 差值：+15px
  - [看容器](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=5940%3A85)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果

- **R1** `card-baseline` — 众数 **40**，实测 40 / 60
  - 离群行：`60` "p"
  - 差值：+20px
  - [看容器](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=4095%3A168)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果

- **R1** `session-list` — 众数 **72**，实测 48 / 72
  - 离群行：`48` "row-add-session"
  - 差值：-24px
  - [看容器](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=4180%3A1280)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果

- **R1** `Capability Table` — 众数 **35**，实测 33 / 35
  - 离群行：`33` "Frame"
  - 差值：-2px
  - [看容器](https://www.figma.com/file/DtZcMkhNy6qh6jbQQnhreQ?node-id=6642%3A8835)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果

## `jnlIId30lS3xjRmZnZTWQy`

- **分母**：0 个行栅格 / 0 行 / 0 条分隔线
- **行分类器排除**（禁静默 cap，全部列出）：tooTall=1 · tooFew=7
- **原始命中**：R1=0 · R2=0 · R3=0（共 0）
- **去重后的独立决策点**：**0**

（无命中）
## `xu7H3ppLyQfa3fOmU8M7iO`

- **分母**：312 个行栅格 / 1087 行 / 2 条分隔线
- **行分类器排除**（禁静默 cap，全部列出）：notStacked=2236 · notEqualWidth=517 · tooTall=109 · modeShareLow=432 · outlier=68 · tooFew=13516
- **原始命中**：R1=15 · R2=1 · R3=0（共 16）
- **去重后的独立决策点**：**8**
- **声明证据分档**：A=0 · A2=3 · B=4 · C=1（档语义见脚本头注释；⛔ 分档是事实不是判定）

- **R1** `Frame 2012` — 众数 **28**，实测 28 / 32　**×4 个实例**（同一模式，算一个决策点）
  - 离群行：`32` "Frame 2009"
  - 差值：+4px
  - [看容器](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=806%3A3090) · 其余实例：[2](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=806%3A3261) [3](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=809%3A4806) [4](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=828%3A6102)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅰️² 离群行全 FIXED（有人改过，⚠️ 仍需拍） — 离群行全 FIXED ⇒ 高度是逐行显式写死的，有人给这行单独设过（⚠️ 仍可能是有意，如 footer 行）

- **R1** `Frame 2057` — 众数 **32**，实测 32 / 40
  - 离群行：`40` "Frame 2058"
  - 差值：+8px
  - [看容器](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=2919%3A34316)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅰️² 离群行全 FIXED（有人改过，⚠️ 仍需拍） — 离群行全 FIXED ⇒ 高度是逐行显式写死的，有人给这行单独设过（⚠️ 仍可能是有意，如 footer 行）

- **R1** `Frame 2019` — 众数 **28**，实测 28 / 32
  - 离群行：`32` "Frame 2009"
  - 差值：+4px
  - [看容器](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=840%3A3956)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅰️² 离群行全 FIXED（有人改过，⚠️ 仍需拍） — 离群行全 FIXED ⇒ 高度是逐行显式写死的，有人给这行单独设过（⚠️ 仍可能是有意，如 footer 行）

- **R2** `Menu/2`（绝对定位）— 间隙 12.3 / 12.4 / 18.4
  - 不同值：12.3 / 12.4 / 18.4　行高：40
  - [看容器](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=966%3A7629)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅲 无声明可比（只能人判） — 容器 layoutMode=(缺) · itemSpacing=(缺) ⇒ 非 auto-layout，无声明可比

- **R1** `Frame 2000` — 众数 **26**，实测 24 / 26　**×5 个实例**（同一模式，算一个决策点）
  - 离群行：`24` "Frame 1996"
  - 差值：-2px
  - [看容器](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=1562%3A14146) · 其余实例：[2](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=1545%3A14367) [3](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=1233%3A10858) [4](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=1234%3A11777)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果

- **R1** `Frame 2017` — 众数 **28**，实测 24 / 28　**×2 个实例**（同一模式，算一个决策点）
  - 离群行：`24` "Frame 2018"
  - 差值：-4px
  - [看容器](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=1401%3A11049) · 其余实例：[2](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=1428%3A11481)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果

- **R1** `Frame 2000` — 众数 **26**，实测 20 / 26
  - 离群行：`20` "Frame 1996"
  - 差值：-6px
  - [看容器](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=1524%3A13350)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果

- **R1** `Frame 8` — 众数 **48**，实测 48 / 50
  - 离群行：`50` "Theader"
  - 差值：+2px
  - [看容器](https://www.figma.com/file/xu7H3ppLyQfa3fOmU8M7iO?node-id=805%3A2688)
  - 判完落点：真缺陷 → 在 Figma 修；有意 → 进 `--config` 的 `allow` 表 + 写理由
  - **声明证据**：🅱️ 有显式声明解释（更可能有意） — 离群行 layoutSizingVertical=HUG ⇒ 含 HUG，行高由内容决定，不等高是该声明的预期结果
