# Phase 6.3.5 Canonical 反向 Audit 报告

跑时间：2026-04-28 17:27:37

## Summary

| 类别 | 说明 | 数量 |
|---|---|---|
| A: figma-exact | Figma 属性同名同值 | 305 |
| B: alias-registered | 已登记 prop-aliases | 34 |
| C: divergence-registered | 已登记 divergences | 16 |
| D: planned-runtime-addition | runtime-additions 已规划 | 0 |
| **E: UNREGISTERED** | **未登记，本轮目标** | **56** |

类别 E 子类分布：

| 子类 | 数量 |
|---|---|
| E1 likely-vue-idiom | 34 |
| E2 likely-figma-axis-rename | 21 |
| E3 likely-design-only | 0 |
| E4 likely-invented | 1 |
| E5 needs-human-judgment | 0 |

## E 类未登记项明细（重点）

### Component: BreadcrumbItem

- **prop `href`** 类型 `string`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `BreadcrumbItem.mergedVariantAxes` 无 prop `href`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `showSeparator`** 类型 `boolean`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `BreadcrumbItem.mergedVariantAxes` 无 prop `showSeparator`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。

### Component: FormItem

- **prop `required`** 类型 `boolean`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `FormItem.mergedVariantAxes` 无 prop `required`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `error`** 类型 `string`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `FormItem.mergedVariantAxes` 无 prop `error`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `hint`** 类型 `string`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `FormItem.mergedVariantAxes` 无 prop `hint`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。

### Component: InputNumber

- **prop `min`** 类型 `number`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `InputNumber.mergedVariantAxes` 无 prop `min`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `max`** 类型 `number`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `InputNumber.mergedVariantAxes` 无 prop `max`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `step`** 类型 `number`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `InputNumber.mergedVariantAxes` 无 prop `step`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。

### Component: Notification

- **prop `title`** 类型 `string`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：补登记为运行时内容/data prop，或改用 slot 决策登记。
  - 证据：Figma spec `Notification.mergedVariantAxes` 无 prop `title`；看起来是运行时内容输入而非 Figma variant axis；已查登记文件。
- **prop `description`** 类型 `string`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：补登记为运行时内容/data prop，或改用 slot 决策登记。
  - 证据：Figma spec `Notification.mergedVariantAxes` 无 prop `description`；看起来是运行时内容输入而非 Figma variant axis；已查登记文件。
- **prop `cancelText`** 类型 `string`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：补登记为运行时内容/data prop，或改用 slot 决策登记。
  - 证据：Figma spec `Notification.mergedVariantAxes` 无 prop `cancelText`；看起来是运行时内容输入而非 Figma variant axis；已查登记文件。
- **prop `confirmText`** 类型 `string`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：补登记为运行时内容/data prop，或改用 slot 决策登记。
  - 证据：Figma spec `Notification.mergedVariantAxes` 无 prop `confirmText`；看起来是运行时内容输入而非 Figma variant axis；已查登记文件。

### Component: Pagination

- **prop `total`** 类型 `number`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `Pagination.mergedVariantAxes` 无 prop `total`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `pageSize`** 类型 `number`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `Pagination.mergedVariantAxes` 无 prop `pageSize`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。

### Component: Progress

- **prop `value`** 类型 `number`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：补登记为运行时内容/data prop，或改用 slot 决策登记。
  - 证据：Figma spec `Progress.mergedVariantAxes` 无 prop `value`；看起来是运行时内容输入而非 Figma variant axis；已查登记文件。
- **prop `showLabel`** 类型 `boolean`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `Progress.mergedVariantAxes` 无 prop `showLabel`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。

### Component: SelectBoxBase

- **prop `options`** 类型 `Option[]`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `Select.mergedVariantAxes` 无 prop `options`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。

### Component: SelectBoxFilled

- **prop `options`** 类型 `{ label: string; value: string | number }[]`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `Select.mergedVariantAxes` 无 prop `options`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。

### Component: SelectBoxLine

- **prop `options`** 类型 `{ label: string; value: string | number }[]`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `Select.mergedVariantAxes` 无 prop `options`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。

### Component: Slider

- **prop `min`** 类型 `number`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `Slider.mergedVariantAxes` 无 prop `min`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `max`** 类型 `number`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `Slider.mergedVariantAxes` 无 prop `max`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `step`** 类型 `number`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `Slider.mergedVariantAxes` 无 prop `step`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `showValue`** 类型 `boolean`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `Slider.mergedVariantAxes` 无 prop `showValue`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。

### Component: StepItem

- **prop `description`** 类型 `string`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：补登记为运行时内容/data prop，或改用 slot 决策登记。
  - 证据：Figma spec `StepItem.mergedVariantAxes` 无 prop `description`；看起来是运行时内容输入而非 Figma variant axis；已查登记文件。
- **prop `index`** 类型 `number`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `StepItem.mergedVariantAxes` 无 prop `index`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `showLeadingConnector`** 类型 `boolean`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `StepItem.mergedVariantAxes` 无 prop `showLeadingConnector`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `showTrailingConnector`** 类型 `boolean`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `StepItem.mergedVariantAxes` 无 prop `showTrailingConnector`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `stepStyle`** 类型 `StepStyle`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 prop alias：`stepStyle` ↔ Figma `style`，枚举值同步登记大小写/命名关系。
  - 证据：查找 Figma spec `StepItem.mergedVariantAxes`，存在 `style=[icon,number]`，但代码使用 prop `stepStyle`；已查登记文件未命中。
- **prop value `number` of `stepStyle`** 类型 `StepStyle`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 prop alias：`stepStyle` ↔ Figma `style`，枚举值同步登记大小写/命名关系。
  - 证据：查找 Figma spec `StepItem.mergedVariantAxes`，存在 `style=[icon,number]`，但代码使用 prop `stepStyle`；已查登记文件未命中。
- **prop value `icon` of `stepStyle`** 类型 `StepStyle`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 prop alias：`stepStyle` ↔ Figma `style`，枚举值同步登记大小写/命名关系。
  - 证据：查找 Figma spec `StepItem.mergedVariantAxes`，存在 `style=[icon,number]`，但代码使用 prop `stepStyle`；已查登记文件未命中。
- **prop `title`** 类型 `string`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：补登记为运行时内容/data prop，或改用 slot 决策登记。
  - 证据：Figma spec `StepItem.mergedVariantAxes` 无 prop `title`；看起来是运行时内容输入而非 Figma variant axis；已查登记文件。

### Component: Tab

- **prop value `line` of `type`** 类型 `TabType`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 enum value alias（通常是大小写差异）。
  - 证据：查找 Figma spec `TabList.mergedVariantAxes.type.values`，未 exact 命中 `line`，但归一化后可对应已发布值；已查登记文件。
- **prop value `text` of `type`** 类型 `TabType`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 enum value alias（通常是大小写差异）。
  - 证据：查找 Figma spec `TabList.mergedVariantAxes.type.values`，未 exact 命中 `text`，但归一化后可对应已发布值；已查登记文件。
- **prop value `filled` of `type`** 类型 `TabType`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 enum value alias（通常是大小写差异）。
  - 证据：查找 Figma spec `TabList.mergedVariantAxes.type.values`，未 exact 命中 `filled`，但归一化后可对应已发布值；已查登记文件。
- **prop `property2`** 类型 `Property2`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：确认 `Tab` 是否应对照 TabItem 而非 TabList，并补登记 property2/component-level mapping。
  - 证据：Figma canonical spec 无独立 `Tab` codeComponent；`TabItem` 有 `property2=[Green,White]`，但本轮按 `TabList` 近似查找未命中。
- **prop value `White` of `property2`** 类型 `Property2`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：确认 `Tab` 是否应对照 TabItem 而非 TabList，并补登记 property2/component-level mapping。
  - 证据：Figma canonical spec 无独立 `Tab` codeComponent；`TabItem` 有 `property2=[Green,White]`，但本轮按 `TabList` 近似查找未命中。
- **prop value `Green` of `property2`** 类型 `Property2`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：确认 `Tab` 是否应对照 TabItem 而非 TabList，并补登记 property2/component-level mapping。
  - 证据：Figma canonical spec 无独立 `Tab` codeComponent；`TabItem` 有 `property2=[Green,White]`，但本轮按 `TabList` 近似查找未命中。
- **prop value `white` of `property2`** 类型 `Property2`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：确认 `Tab` 是否应对照 TabItem 而非 TabList，并补登记 property2/component-level mapping。
  - 证据：Figma canonical spec 无独立 `Tab` codeComponent；`TabItem` 有 `property2=[Green,White]`，但本轮按 `TabList` 近似查找未命中。
- **prop value `green` of `property2`** 类型 `Property2`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：确认 `Tab` 是否应对照 TabItem 而非 TabList，并补登记 property2/component-level mapping。
  - 证据：Figma canonical spec 无独立 `Tab` codeComponent；`TabItem` 有 `property2=[Green,White]`，但本轮按 `TabList` 近似查找未命中。

### Component: TabItem

- **prop value `normal` of `property1`** 类型 `Property1`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 enum value alias（通常是大小写差异）。
  - 证据：查找 Figma spec `TabItem.mergedVariantAxes.property1.values`，未 exact 命中 `normal`，但归一化后可对应已发布值；已查登记文件。
- **prop value `active` of `property1`** 类型 `Property1`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 enum value alias（通常是大小写差异）。
  - 证据：查找 Figma spec `TabItem.mergedVariantAxes.property1.values`，未 exact 命中 `active`，但归一化后可对应已发布值；已查登记文件。
- **prop value `white` of `property2`** 类型 `Property2`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 enum value alias（通常是大小写差异）。
  - 证据：查找 Figma spec `TabItem.mergedVariantAxes.property2.values`，未 exact 命中 `white`，但归一化后可对应已发布值；已查登记文件。
- **prop value `green` of `property2`** 类型 `Property2`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 enum value alias（通常是大小写差异）。
  - 证据：查找 Figma spec `TabItem.mergedVariantAxes.property2.values`，未 exact 命中 `green`，但归一化后可对应已发布值；已查登记文件。
- **prop value `line` of `type`** 类型 `TabType`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 enum value alias（通常是大小写差异）。
  - 证据：查找 Figma spec `TabItem.mergedVariantAxes.type.values`，未 exact 命中 `line`，但归一化后可对应已发布值；已查登记文件。
- **prop value `text` of `type`** 类型 `TabType`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 enum value alias（通常是大小写差异）。
  - 证据：查找 Figma spec `TabItem.mergedVariantAxes.type.values`，未 exact 命中 `text`，但归一化后可对应已发布值；已查登记文件。
- **prop value `filled` of `type`** 类型 `TabType`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 enum value alias（通常是大小写差异）。
  - 证据：查找 Figma spec `TabItem.mergedVariantAxes.type.values`，未 exact 命中 `filled`，但归一化后可对应已发布值；已查登记文件。
- **prop `value`** 类型 `string | number`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：补登记为运行时内容/data prop，或改用 slot 决策登记。
  - 证据：Figma spec `TabItem.mergedVariantAxes` 无 prop `value`；看起来是运行时内容输入而非 Figma variant axis；已查登记文件。

### Component: TabList

- **prop `items`** 类型 `{ label: string; value: string | number; disabled?: boolean }[]`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `TabList.mergedVariantAxes` 无 prop `items`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop value `line` of `type`** 类型 `TabListType`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 enum value alias（通常是大小写差异）。
  - 证据：查找 Figma spec `TabList.mergedVariantAxes.type.values`，未 exact 命中 `line`，但归一化后可对应已发布值；已查登记文件。
- **prop value `text` of `type`** 类型 `TabListType`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 enum value alias（通常是大小写差异）。
  - 证据：查找 Figma spec `TabList.mergedVariantAxes.type.values`，未 exact 命中 `text`，但归一化后可对应已发布值；已查登记文件。
- **prop value `filled` of `type`** 类型 `TabListType`
  - 子类：E2 likely-figma-axis-rename
  - 推荐处置：补登记 enum value alias（通常是大小写差异）。
  - 证据：查找 Figma spec `TabList.mergedVariantAxes.type.values`，未 exact 命中 `filled`，但归一化后可对应已发布值；已查登记文件。

### Component: Table

- **prop `columns`** 类型 `TableColumn[]`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `Table.mergedVariantAxes` 无 prop `columns`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `data`** 类型 `Record<string, unknown>[]`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `Table.mergedVariantAxes` 无 prop `data`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。
- **prop `striped`** 类型 `boolean`
  - 子类：E4 likely-invented
  - 推荐处置：复核是否为代码自创表格样式轴；若非 Figma 运行时能力，应按 6.3 同类清理或登记。
  - 证据：Figma spec `Table.mergedVariantAxes` 只有 align/type，未找到 `striped`；已查 prop-aliases.md / divergences.md / runtime-additions.md。

### Component: Tooltip

- **prop `open`** 类型 `boolean`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：如保留，补登记到 prop-aliases.md 的 Vue 生态增强或运行时数据输入段。
  - 证据：Figma spec `Tooltip.mergedVariantAxes` 无 prop `open`；该 prop 更像 Vue/runtime 数据契约；已查登记文件。

### Component: TopBar

- **prop `title`** 类型 `string`
  - 子类：E1 likely-vue-idiom
  - 推荐处置：补登记为运行时内容/data prop，或改用 slot 决策登记。
  - 证据：Figma spec `TopBar.mergedVariantAxes` 无 prop `title`；看起来是运行时内容输入而非 Figma variant axis；已查登记文件。

## A / B / C / D 类摘要

### A: figma-exact

数量：305

- `Badge.color` — Figma spec `Badge.mergedVariantAxes.color` exact prop match.
- `Badge.color=Black` — Figma spec `Badge.mergedVariantAxes.color.values` contains `Black`.
- `Badge.color=Blue` — Figma spec `Badge.mergedVariantAxes.color.values` contains `Blue`.
- `Badge.color=Green` — Figma spec `Badge.mergedVariantAxes.color.values` contains `Green`.
- `Badge.color=Orange` — Figma spec `Badge.mergedVariantAxes.color.values` contains `Orange`.

### B: alias-registered

数量：34

- `InputBoxBase.modelValue` — prop-aliases.md: Vue ecosystem modelValue
- `InputBoxBase.placeholder` — prop-aliases.md: Vue ecosystem placeholder
- `InputBoxBase.readonly` — prop-aliases.md: Vue ecosystem readonly
- `InputBoxFilled.modelValue` — prop-aliases.md: Vue ecosystem modelValue
- `InputBoxFilled.placeholder` — prop-aliases.md: Vue ecosystem placeholder

### C: divergence-registered

数量：16

- `DropDownListSelect.type` — divergences.md#Select ↔ select box/filled + select box/line
- `DropDownListSelect.type=Radio` — divergences.md#Select ↔ select box/filled + select box/line
- `DropDownListSelect.type=Multi` — divergences.md#Select ↔ select box/filled + select box/line
- `DropDownListSelect.type=Operation List` — divergences.md#Select ↔ select box/filled + select box/line
- `DropDownListSelect.type=Sort By` — divergences.md#Select ↔ select box/filled + select box/line

### D: planned-runtime-addition

数量：0


## 异常项（如有）

- Prompt 预期“剔除 ButtonBridge 后实际审 28 个 canonical 组件”，但当前 `src/canonical/*.vue` 为 30 个；剔除 `ButtonBridge.vue` 后实际审计 29 个。
- 本轮不进 `src/canonical/generated/`，也不审 `ButtonBridge.vue`，符合 prompt 范围。
- `Tab.vue` 在 Figma canonical spec 中没有独立 `Tab` codeComponent，本轮按 `TabList` 近似查找；未命中项保留为 E 类。
- 未发现无法解析的 `defineProps<{...}>`；emits 已进入 `canonical-component-api.json`，但本报告分类统计聚焦 props 与 prop enum values。

## 处置建议汇总

- E1 / E2 → 建议进 Phase 6.3.5b：补登记到 `prop-aliases.md`，尤其是运行时数据输入、Vue v-model、大小写/命名差。
- E3 → 建议进 Phase 6.3.5c：如后续发现设计态装饰开关，补登记到 `divergences.md` 的设计态段。
- E4 → 建议进 Phase 6.3.5d：参照 Phase 6.3 流程复核并清理疑似自创轴。
- E5 → 主 Session 拍板：判断是应补 alias/divergence/runtime-addition，还是拆到清理阶段。
