{
  "schemaVersion": "1.0.0",
  "generatedAt": "2026-06-04T00:00:00.000Z",
  "components": [
    {
      "primitive": "combobox",
      "displayName": "Combobox",
      "releaseStatus": "canonical",
      "implementationLayer": "core",
      "visibleInSite": true,
      "supportedAdapters": [
        "react",
        "vanilla",
        "solid",
        "vue",
        "svelte"
      ],
      "agentNarrative": {
        "release": "Combobox is tracked as a canonical v1 primitive. Implementation ownership is core-backed. The primitive is listed in the public site catalog.",
        "closure": "Combobox currently satisfies 19/19 required closure signals."
      },
      "purpose": "Combine text input and option list for filter + commit interactions.",
      "localized": {
        "zh-cn": {
          "purpose": "组合文本输入与选项列表，用于过滤、提交选项和自定义值交互。",
          "nonGoals": [
            "高级模糊排序策略",
            "Core 中的异步建议获取策略"
          ],
          "anatomy": [
            "`root`",
            "`anchor`（可选，推荐）",
            "`input`",
            "`trigger`（可选）",
            "`positioner`（可选）",
            "`content`（可选）",
            "`empty`（可选）",
            "`listbox`",
            "`option`（可重复）",
            "`chips`（可选，多选模式）",
            "`chip`（可选、可重复，位于 `chips` 内）"
          ],
          "stateModel": [
            "input value 支持受控/非受控",
            "open 支持受控/非受控",
            "highlighted option id",
            "selected/committed value",
            "committed value 在关闭、outside dismiss 与重新打开后保持",
            "重新打开且没有显式 highlight 时，恢复 selected option 的 highlight"
          ],
          "eventModel": [
            "`input` 更新 query，重新计算可见 options，并打开 listbox",
            "input 上的 `mousedown` 打开 listbox，但不改变 query",
            "outside `pointerdown` 关闭 listbox，且不清空 committed selection",
            "option 上的 `mouseenter` 更新 highlighted option",
            "option 上的 `mousedown` 提交 option value",
            "`Enter` 提交 highlighted option；没有 highlight 且 `allowCustomValue=true` 时提交当前 input value",
            "`Escape` 关闭 listbox 且不提交",
            "`ArrowUp` / `ArrowDown` / `Home` / `End` 在 enabled options 中移动 highlight",
            "`multiple` 模式下，`Enter` 切换 highlighted value，并保持 listbox 打开以继续选择",
            "`multiple` 模式下，只有 input 为空且 IME composition 未激活时，`Backspace` 才移除最后一个 selected chip"
          ],
          "keyboardFocus": [
            "打开、导航与提交流程中，focus 保持在 input 上",
            "Listbox 打开时，`aria-activedescendant` 指向 highlighted option",
            "默认 open state 不带 highlighted option",
            "重新打开时如果已有 selected value，则 selected option 反射为 highlighted",
            "`autoHighlight=true` 且 query 非空时，第一个可见 enabled option 会被 highlighted",
            "`ArrowUp` / `ArrowDown` / `Home` / `End` 移动 highlight，不把 DOM focus 移出 input",
            "`Enter` 提交 highlighted option（或允许时提交 custom value）；`Escape` 关闭 listbox",
            "`multiple` 模式下，空 input 上的 `Backspace` 移除最近 selected chip"
          ],
          "aria": [
            "input: `role=combobox`、`aria-controls`、`aria-expanded`、`aria-autocomplete=list`",
            "input: 仅在当前有 highlighted option 时包含 `aria-activedescendant`",
            "listbox: `role=listbox`；`multiple` 模式包含 `aria-multiselectable=true`",
            "option: `role=option`、`aria-selected`，disabled 时包含 `aria-disabled`",
            "trigger（如渲染）: `aria-haspopup=listbox`、`aria-expanded`、`aria-controls`",
            "invalid state 应通过 input 上的 `aria-invalid` 反射",
            "combobox input 必须有 accessible name（`<label for>`、`aria-label` 或 `aria-labelledby`）"
          ]
        }
      },
      "nonGoals": [
        "Advanced fuzzy ranking policy",
        "Async suggestion fetching policy in core"
      ],
      "anatomy": [
        "`root`",
        "`anchor` (optional, recommended)",
        "`input`",
        "`trigger` (optional)",
        "`positioner` (optional)",
        "`content` (optional)",
        "`empty` (optional)",
        "`listbox`",
        "`option` (repeatable)",
        "`chips` (optional, multiple mode)",
        "`chip` (optional, repeatable, inside `chips`)"
      ],
      "publicDataAttrs": [
        "data-ui",
        "data-slot",
        "data-state",
        "data-disabled",
        "data-selected",
        "data-highlighted",
        "data-orientation",
        "data-expanded",
        "data-invalid"
      ],
      "stateModel": [
        "input value controlled/uncontrolled",
        "open controlled/uncontrolled",
        "highlighted option id",
        "selected/committed value",
        "committed value is preserved across close, outside dismiss, and reopen",
        "reopen restores selected option highlight when no explicit highlight is active"
      ],
      "keyboardFocus": [
        "focus remains on input during open, navigation, and commit flows",
        "`aria-activedescendant` points to the highlighted option while listbox is open",
        "default open state starts with no highlighted option",
        "if a value is already selected when reopening, the selected option is reflected as highlighted",
        "with `autoHighlight=true` and non-empty query, first visible enabled option becomes highlighted",
        "`ArrowUp` / `ArrowDown` / `Home` / `End` move highlight without moving DOM focus away from input",
        "`Enter` commits highlighted option (or custom value when allowed); `Escape` closes listbox",
        "in `multiple` mode, `Backspace` from an empty input removes the latest selected chip"
      ],
      "aria": [
        "input: `role=combobox`, `aria-controls`, `aria-expanded`, `aria-autocomplete=list`",
        "input: include `aria-activedescendant` only when an option is currently highlighted",
        "listbox: `role=listbox`; include `aria-multiselectable=true` in `multiple` mode",
        "option: `role=option`, `aria-selected`, `aria-disabled` (when disabled)",
        "trigger (if rendered): `aria-haspopup=listbox`, `aria-expanded`, `aria-controls`",
        "invalid state should be reflected on input via `aria-invalid`",
        "combobox input must have an accessible name (`<label for>`, `aria-label`, or `aria-labelledby`)"
      ],
      "validatorRules": [
        "structure.missing-required-slot",
        "structure.invalid-slot-placement",
        "aria.missing-label",
        "aria.broken-controls-linkage",
        "aria.invalid-activedescendant-target",
        "state.controlled-uncontrolled-conflict",
        "state.invalid-default-value",
        "keyboard.missing-required-keymap",
        "keyboard.unhandled-escape",
        "keyboard.unhandled-typeahead",
        "dom.missing-public-data-attr"
      ],
      "adapterNotes": {
        "react": [
          "Primary mapper: mapComboboxPropsToControllerOptions.",
          "Supports controlled/uncontrolled parity and hydration-safe IDs."
        ],
        "vanilla": [
          "Primary binder: bindCombobox.",
          "Binds explicit DOM nodes and should be cleaned up on unmount."
        ],
        "vue": [
          "Primary composable: useCombobox.",
          "Composition API wrappers keep DOM contract reflection via ARIA + public data-*."
        ],
        "solid": [
          "Primary component surface: Combobox.Root and related compound slots.",
          "Signal-friendly wrappers preserve the same public DOM contract and hydration-safe IDs."
        ],
        "svelte": [
          "Primary component surface: Combobox.Root and related compound slots.",
          "Compound Svelte primitives preserve the same public DOM contract and shared primitive semantics."
        ]
      },
      "examples": [
        "combobox-manual"
      ],
      "closure": {
        "requiredChecks": [
          "schemaRegistered",
          "specDocumented",
          "reactMapper",
          "siteExampleCoverage",
          "siteA11yCoverage",
          "siteVisible",
          "schemaValidatorCoverage",
          "schemaAriaCoverage",
          "specValidatorRulesSection",
          "specTestChecklistSection",
          "specSsrHydrationSection",
          "reactSsrHydrationCoverage",
          "reactRenderLevelSsrCoverage",
          "solidSsrCoverage",
          "coreImplemented",
          "primitiveUnitTest",
          "domContractSnapshot",
          "vanillaBinding",
          "adapterParitySnapshot"
        ],
        "checks": {
          "schemaRegistered": true,
          "specDocumented": true,
          "coreImplemented": true,
          "primitiveUnitTest": true,
          "domContractSnapshot": true,
          "reactMapper": true,
          "vanillaBinding": true,
          "adapterParitySnapshot": true,
          "siteExampleCoverage": true,
          "siteA11yCoverage": true,
          "siteVisible": true,
          "schemaValidatorCoverage": true,
          "schemaAriaCoverage": true,
          "specValidatorRulesSection": true,
          "specTestChecklistSection": true,
          "specSsrHydrationSection": true,
          "reactSsrHydrationCoverage": true,
          "reactRenderLevelSsrCoverage": true,
          "solidSsrCoverage": true
        },
        "summary": {
          "completed": 19,
          "required": 19,
          "score": 100
        },
        "missingRequirements": []
      }
    },
    {
      "primitive": "dialog",
      "displayName": "Dialog",
      "releaseStatus": "canonical",
      "implementationLayer": "core",
      "visibleInSite": true,
      "supportedAdapters": [
        "react",
        "vanilla",
        "solid",
        "vue",
        "svelte"
      ],
      "agentNarrative": {
        "release": "Dialog is tracked as a canonical v1 primitive. Implementation ownership is core-backed. The primitive is listed in the public site catalog.",
        "closure": "Dialog currently satisfies 19/19 required closure signals."
      },
      "purpose": "Provide modal or non-modal surface with lifecycle, dismiss, focus, and layered interaction behavior.",
      "localized": {
        "zh-cn": {
          "purpose": "提供 modal 或 non-modal surface，包含生命周期、dismiss、焦点与分层交互行为。",
          "nonGoals": [
            "视觉 overlay 样式",
            "动画时间线管理",
            "布局系统归属"
          ],
          "anatomy": [
            "`trigger`",
            "`overlay`",
            "`content`",
            "`title`",
            "`description`（可选）",
            "`close`"
          ],
          "stateModel": [
            "open state 在 trigger/overlay/content 上反射为 `data-state=\"open|closed\"`",
            "expanded state 在 content 上反射为 `data-expanded=\"true|false\"`",
            "受控模式：`open` + `onOpenChange`",
            "非受控模式：`defaultOpen`",
            "modal flag：`modal=true|false` 控制 focus trap 与 `aria-modal`",
            "嵌套 dialogs 按每个 layer 保持独立 open state 与 lifecycle ownership"
          ],
          "eventModel": [
            "trigger click 切换 open/closed",
            "close slot click 关闭",
            "overlay click 关闭",
            "outside `pointerdown` 与 outside `focusin` dismiss active dialog layer",
            "`Escape` 只 dismiss 最顶层 active layer",
            "嵌套行为：打开 child dialog 不应 dismiss parent；outside/Escape 先关闭 child，再在下一次交互关闭 parent"
          ],
          "keyboardFocus": [
            "modal mode 将 focus 限制在 active content 内",
            "Stack-aware layering 会在 child layer active 时暂停 parent trap",
            "关闭 layer 后 focus 恢复到该 layer trigger",
            "嵌套关闭流程为 LIFO（child first, parent second）"
          ],
          "aria": [
            "content: `role=dialog`",
            "content: `aria-modal`（modal mode 为 `true`，non-modal mode 为 `false`）",
            "content: `aria-labelledby`、`aria-describedby`",
            "trigger: `aria-haspopup=dialog`、`aria-expanded`、`aria-controls`"
          ]
        }
      },
      "nonGoals": [
        "Visual overlay styling",
        "Animation timeline management",
        "Layout system ownership"
      ],
      "anatomy": [
        "`trigger`",
        "`overlay`",
        "`content`",
        "`title`",
        "`description` (optional)",
        "`close`"
      ],
      "publicDataAttrs": [
        "data-ui",
        "data-slot",
        "data-state",
        "data-disabled",
        "data-selected",
        "data-highlighted",
        "data-orientation",
        "data-expanded",
        "data-invalid"
      ],
      "stateModel": [
        "open state reflected as `data-state=\"open|closed\"` on trigger/overlay/content",
        "expanded state reflected as `data-expanded=\"true|false\"` on content",
        "controlled mode: `open` + `onOpenChange`",
        "uncontrolled mode: `defaultOpen`",
        "modal flag: `modal=true|false` controls focus trap and `aria-modal`",
        "nested dialogs keep independent open state and lifecycle ownership per layer"
      ],
      "keyboardFocus": [
        "modal mode traps focus in active content",
        "stack-aware layering pauses parent trap while child layer is active",
        "closing a layer restores focus to the layer trigger",
        "nested close flow is LIFO (child first, parent second)"
      ],
      "aria": [
        "content: `role=dialog`",
        "content: `aria-modal` (`true` in modal mode, `false` in non-modal mode)",
        "content: `aria-labelledby`, `aria-describedby`",
        "trigger: `aria-haspopup=dialog`, `aria-expanded`, `aria-controls`"
      ],
      "validatorRules": [
        "structure.missing-required-slot",
        "aria.broken-controls-linkage",
        "focus.trap-missing",
        "focus.unrestored-on-close",
        "keyboard.unhandled-escape",
        "state.invalid-open-state",
        "dom.missing-public-data-attr"
      ],
      "adapterNotes": {
        "react": [
          "Primary mapper: mapDialogPropsToControllerOptions.",
          "Supports controlled/uncontrolled parity and hydration-safe IDs."
        ],
        "vanilla": [
          "Primary binder: bindDialog.",
          "Binds explicit DOM nodes and should be cleaned up on unmount."
        ],
        "vue": [
          "Primary composable: useDialog.",
          "Composition API wrappers keep DOM contract reflection via ARIA + public data-*."
        ],
        "solid": [
          "Primary component surface: Dialog.Root and related compound slots.",
          "Signal-friendly wrappers preserve the same public DOM contract and hydration-safe IDs."
        ],
        "svelte": [
          "Primary component surface: Dialog.Root and related compound slots.",
          "Compound Svelte primitives preserve the same public DOM contract and shared primitive semantics."
        ]
      },
      "examples": [
        "dialog-manual"
      ],
      "closure": {
        "requiredChecks": [
          "schemaRegistered",
          "specDocumented",
          "reactMapper",
          "siteExampleCoverage",
          "siteA11yCoverage",
          "siteVisible",
          "schemaValidatorCoverage",
          "schemaAriaCoverage",
          "specValidatorRulesSection",
          "specTestChecklistSection",
          "specSsrHydrationSection",
          "reactSsrHydrationCoverage",
          "reactRenderLevelSsrCoverage",
          "solidSsrCoverage",
          "coreImplemented",
          "primitiveUnitTest",
          "domContractSnapshot",
          "vanillaBinding",
          "adapterParitySnapshot"
        ],
        "checks": {
          "schemaRegistered": true,
          "specDocumented": true,
          "coreImplemented": true,
          "primitiveUnitTest": true,
          "domContractSnapshot": true,
          "reactMapper": true,
          "vanillaBinding": true,
          "adapterParitySnapshot": true,
          "siteExampleCoverage": true,
          "siteA11yCoverage": true,
          "siteVisible": true,
          "schemaValidatorCoverage": true,
          "schemaAriaCoverage": true,
          "specValidatorRulesSection": true,
          "specTestChecklistSection": true,
          "specSsrHydrationSection": true,
          "reactSsrHydrationCoverage": true,
          "reactRenderLevelSsrCoverage": true,
          "solidSsrCoverage": true
        },
        "summary": {
          "completed": 19,
          "required": 19,
          "score": 100
        },
        "missingRequirements": []
      }
    },
    {
      "primitive": "disclosure",
      "displayName": "Disclosure",
      "releaseStatus": "canonical",
      "implementationLayer": "core",
      "visibleInSite": true,
      "supportedAdapters": [
        "react",
        "vanilla",
        "solid",
        "vue",
        "svelte"
      ],
      "agentNarrative": {
        "release": "Disclosure is tracked as a canonical v1 primitive. Implementation ownership is core-backed. The primitive is listed in the public site catalog.",
        "closure": "Disclosure currently satisfies 19/19 required closure signals."
      },
      "purpose": "Toggle visibility of associated content from a trigger.",
      "localized": {
        "zh-cn": {
          "purpose": "通过 trigger 切换关联内容的可见性。",
          "nonGoals": [
            "视觉 accordion 样式",
            "动画归属"
          ],
          "anatomy": [
            "`root`",
            "`trigger`",
            "`content`"
          ],
          "stateModel": [
            "`open` / `closed`",
            "受控：`open` + `onOpenChange`",
            "非受控：`defaultOpen`"
          ],
          "eventModel": [
            "trigger click 切换状态",
            "trigger 上的 Enter/Space 切换状态"
          ],
          "keyboardFocus": [
            "Enter/Space 激活 trigger",
            "除非宿主应用移动焦点，否则 focus 保持在 trigger 上"
          ],
          "aria": [
            "trigger: `aria-expanded`、`aria-controls`",
            "content: 推荐使用 `aria-labelledby`"
          ]
        }
      },
      "nonGoals": [
        "Visual accordion styling",
        "Animation ownership"
      ],
      "anatomy": [
        "`root`",
        "`trigger`",
        "`content`"
      ],
      "publicDataAttrs": [
        "data-ui",
        "data-slot",
        "data-state",
        "data-disabled",
        "data-selected",
        "data-highlighted",
        "data-orientation",
        "data-expanded",
        "data-invalid"
      ],
      "stateModel": [
        "`open` / `closed`",
        "controlled: `open` + `onOpenChange`",
        "uncontrolled: `defaultOpen`"
      ],
      "keyboardFocus": [
        "Enter/Space activates trigger",
        "focus stays on trigger unless host app moves focus"
      ],
      "aria": [
        "trigger: `aria-expanded`, `aria-controls`",
        "content: `aria-labelledby` (recommended)"
      ],
      "validatorRules": [
        "structure.missing-required-slot",
        "aria.broken-controls-linkage",
        "dom.invalid-data-state-value"
      ],
      "adapterNotes": {
        "react": [
          "Primary mapper: mapDisclosurePropsToControllerOptions.",
          "Supports controlled/uncontrolled parity and hydration-safe IDs."
        ],
        "vanilla": [
          "Primary binder: bindDisclosure.",
          "Binds explicit DOM nodes and should be cleaned up on unmount."
        ],
        "vue": [
          "Primary composable: useDisclosure.",
          "Composition API wrappers keep DOM contract reflection via ARIA + public data-*."
        ],
        "solid": [
          "Primary component surface: Disclosure.Root and related compound slots.",
          "Signal-friendly wrappers preserve the same public DOM contract and hydration-safe IDs."
        ],
        "svelte": [
          "Primary component surface: Disclosure.Root and related compound slots.",
          "Compound Svelte primitives preserve the same public DOM contract and shared primitive semantics."
        ]
      },
      "examples": [],
      "closure": {
        "requiredChecks": [
          "schemaRegistered",
          "specDocumented",
          "reactMapper",
          "siteExampleCoverage",
          "siteA11yCoverage",
          "siteVisible",
          "schemaValidatorCoverage",
          "schemaAriaCoverage",
          "specValidatorRulesSection",
          "specTestChecklistSection",
          "specSsrHydrationSection",
          "reactSsrHydrationCoverage",
          "reactRenderLevelSsrCoverage",
          "solidSsrCoverage",
          "coreImplemented",
          "primitiveUnitTest",
          "domContractSnapshot",
          "vanillaBinding",
          "adapterParitySnapshot"
        ],
        "checks": {
          "schemaRegistered": true,
          "specDocumented": true,
          "coreImplemented": true,
          "primitiveUnitTest": true,
          "domContractSnapshot": true,
          "reactMapper": true,
          "vanillaBinding": true,
          "adapterParitySnapshot": true,
          "siteExampleCoverage": true,
          "siteA11yCoverage": true,
          "siteVisible": true,
          "schemaValidatorCoverage": true,
          "schemaAriaCoverage": true,
          "specValidatorRulesSection": true,
          "specTestChecklistSection": true,
          "specSsrHydrationSection": true,
          "reactSsrHydrationCoverage": true,
          "reactRenderLevelSsrCoverage": true,
          "solidSsrCoverage": true
        },
        "summary": {
          "completed": 19,
          "required": 19,
          "score": 100
        },
        "missingRequirements": []
      }
    },
    {
      "primitive": "listbox",
      "displayName": "Listbox",
      "releaseStatus": "canonical",
      "implementationLayer": "core",
      "visibleInSite": true,
      "supportedAdapters": [
        "react",
        "vanilla",
        "solid",
        "vue",
        "svelte"
      ],
      "agentNarrative": {
        "release": "Listbox is tracked as a canonical v1 primitive. Implementation ownership is core-backed. The primitive is listed in the public site catalog.",
        "closure": "Listbox currently satisfies 19/19 required closure signals."
      },
      "purpose": "Single-selection option list with stable keyboard/a11y semantics.",
      "localized": {
        "zh-cn": {
          "purpose": "提供单选或多选选项列表，并保持稳定键盘与可访问性语义。",
          "nonGoals": [
            "样式/主题职责",
            "Core 中的 virtualization 策略"
          ],
          "anatomy": [
            "`root`",
            "`label`（可选）",
            "`description`（可选）",
            "`content`（可选）",
            "`group`（可选、可重复）",
            "`group-label`（可选，位于 `group` 内）",
            "`option`（可重复）",
            "`option-indicator`（可选，位于 `option` 内）",
            "`option-media`（可选，位于 `option` 内）",
            "`option-body`（可选，位于 `option` 内）",
            "`option-text`（可选，位于 `option` 内）",
            "`option-description`（可选，位于 `option` 内）",
            "`option-meta`（可选，位于 `option` 内）",
            "`separator`（可选、可重复）",
            "`empty`（可选）",
            "`loading`（可选）"
          ],
          "stateModel": [
            "selected option id",
            "value 支持受控/非受控",
            "highlight 支持可选 selection-follows-focus"
          ],
          "eventModel": [
            "Arrow/Home/End 导航",
            "Enter/Space 提交 selection"
          ],
          "keyboardFocus": [
            "roving focus 或 active-descendant 策略必须保持一致"
          ],
          "aria": [
            "`role=listbox/option`",
            "`aria-selected`、`aria-activedescendant`"
          ]
        }
      },
      "nonGoals": [
        "Styling/theme responsibilities",
        "Virtualization policy in core"
      ],
      "anatomy": [
        "`root`",
        "`label` (optional)",
        "`description` (optional)",
        "`content` (optional)",
        "`group` (optional, repeatable)",
        "`group-label` (optional, inside `group`)",
        "`option` (repeatable)",
        "`option-indicator` (optional, inside `option`)",
        "`option-media` (optional, inside `option`)",
        "`option-body` (optional, inside `option`)",
        "`option-text` (optional, inside `option`)",
        "`option-description` (optional, inside `option`)",
        "`option-meta` (optional, inside `option`)",
        "`separator` (optional, repeatable)",
        "`empty` (optional)",
        "`loading` (optional)"
      ],
      "publicDataAttrs": [
        "data-ui",
        "data-slot",
        "data-state",
        "data-disabled",
        "data-selected",
        "data-highlighted",
        "data-orientation",
        "data-expanded",
        "data-invalid"
      ],
      "stateModel": [
        "selected option id",
        "controlled/uncontrolled value",
        "highlight with optional selection-follows-focus"
      ],
      "keyboardFocus": [
        "roving focus or active-descendant strategy must stay consistent"
      ],
      "aria": [
        "`role=listbox/option`",
        "`aria-selected`, `aria-activedescendant`"
      ],
      "validatorRules": [
        "aria.invalid-activedescendant-target",
        "state.multiple-active-roving-item"
      ],
      "adapterNotes": {
        "react": [
          "Primary mapper: mapListboxPropsToControllerOptions.",
          "Supports controlled/uncontrolled parity and hydration-safe IDs."
        ],
        "vanilla": [
          "Primary binder: bindListbox.",
          "Binds explicit DOM nodes and should be cleaned up on unmount."
        ],
        "vue": [
          "Primary composable: useListbox.",
          "Composition API wrappers keep DOM contract reflection via ARIA + public data-*."
        ],
        "solid": [
          "Primary component surface: Listbox.Root and related compound slots.",
          "Signal-friendly wrappers preserve the same public DOM contract and hydration-safe IDs."
        ],
        "svelte": [
          "Primary component surface: Listbox.Root and related compound slots.",
          "Compound Svelte primitives preserve the same public DOM contract and shared primitive semantics."
        ]
      },
      "examples": [],
      "closure": {
        "requiredChecks": [
          "schemaRegistered",
          "specDocumented",
          "reactMapper",
          "siteExampleCoverage",
          "siteA11yCoverage",
          "siteVisible",
          "schemaValidatorCoverage",
          "schemaAriaCoverage",
          "specValidatorRulesSection",
          "specTestChecklistSection",
          "specSsrHydrationSection",
          "reactSsrHydrationCoverage",
          "reactRenderLevelSsrCoverage",
          "solidSsrCoverage",
          "coreImplemented",
          "primitiveUnitTest",
          "domContractSnapshot",
          "vanillaBinding",
          "adapterParitySnapshot"
        ],
        "checks": {
          "schemaRegistered": true,
          "specDocumented": true,
          "coreImplemented": true,
          "primitiveUnitTest": true,
          "domContractSnapshot": true,
          "reactMapper": true,
          "vanillaBinding": true,
          "adapterParitySnapshot": true,
          "siteExampleCoverage": true,
          "siteA11yCoverage": true,
          "siteVisible": true,
          "schemaValidatorCoverage": true,
          "schemaAriaCoverage": true,
          "specValidatorRulesSection": true,
          "specTestChecklistSection": true,
          "specSsrHydrationSection": true,
          "reactSsrHydrationCoverage": true,
          "reactRenderLevelSsrCoverage": true,
          "solidSsrCoverage": true
        },
        "summary": {
          "completed": 19,
          "required": 19,
          "score": 100
        },
        "missingRequirements": []
      }
    },
    {
      "primitive": "menu",
      "displayName": "Menu",
      "releaseStatus": "canonical",
      "implementationLayer": "core",
      "visibleInSite": true,
      "supportedAdapters": [
        "react",
        "vanilla",
        "solid",
        "vue",
        "svelte"
      ],
      "agentNarrative": {
        "release": "Menu is tracked as a canonical v1 primitive. Implementation ownership is core-backed. The primitive is listed in the public site catalog.",
        "closure": "Menu currently satisfies 19/19 required closure signals."
      },
      "purpose": "Provide command menu interactions with roving focus, typeahead, and stable floating positioning for root and nested menus.",
      "localized": {
        "zh-cn": {
          "purpose": "提供 command menu 交互，包含 roving focus、typeahead，以及 root 和嵌套菜单的稳定浮层定位。",
          "nonGoals": [
            "富视觉 menu 呈现",
            "Core 中的 submenu 视觉动画系统"
          ],
          "anatomy": [
            "`root`（Vanilla 中可选结构 wrapper；React composition 中始终存在）",
            "`anchor`（可选定位锚点）",
            "`trigger`",
            "`positioner`（可选 floating layer wrapper）",
            "`content`",
            "`item`（可重复）",
            "`separator`（可选）",
            "嵌套组合：submenu `root` + `trigger` + `positioner` + `content`"
          ],
          "stateModel": [
            "open state：受控（`open` + `onOpenChange`）与非受控（`defaultOpen`）",
            "highlighted item id 由 roving focus + typeahead 驱动",
            "可选 selection callback（`onSelect` / `onItemSelect`）",
            "选择 item 会关闭 active menu tree，包括所有 open submenu ancestors",
            "hover mode state 包含 close-delay cancellation guards 与 transition boundary checks",
            "渲染 floating layer 时，positioner 通过 `data-placement` 与 `data-side` 反射状态",
            "Vanilla 首次打开测量通过 deferred post-open sync pass 稳定"
          ],
          "eventModel": [
            "trigger `click` 切换 open state",
            "`ArrowUp` / `ArrowDown` / `Home` / `End` 移动 highlight",
            "按 `textValue` 进行 typeahead search",
            "`Enter` / `Space` 选择 highlighted item 并关闭当前 menu tree",
            "item click 选择 item 并关闭当前 menu tree",
            "item `mouseenter` / `focus` 更新 highlighted id",
            "open layers 使用 outside `pointerdown` dismiss，同时保留 in-tree menu boundaries",
            "hover mode 支持 enter 打开与 leave 延迟关闭，并带 related-target guards",
            "嵌套 hover transition 在 pointer 穿过 trigger/content corridor 时保持 submenu 打开",
            "嵌套 submenu selection 会关闭同一 tree 中所有 open ancestor menus",
            "viewport 变化时重新计算 floating position；Vanilla 首次打开后增加一次 deferred recalculation"
          ],
          "keyboardFocus": [
            "Enabled items 使用 roving `tabIndex`",
            "`Escape` 关闭",
            "Tab 关闭并保留原生焦点遍历",
            "React composition 在 Escape close 后恢复 trigger focus；Vanilla 保持原生焦点行为，除非宿主覆盖"
          ],
          "aria": [
            "content: `role=\"menu\"`",
            "item: `role=\"menuitem\"`，disabled 时包含 `aria-disabled`",
            "trigger: `aria-haspopup=\"menu\"`、`aria-expanded`、`aria-controls`",
            "content open/closed 通过 `hidden` + `data-state` 反射"
          ]
        }
      },
      "nonGoals": [
        "Rich styled menu presentation",
        "Submenu visual animation system in core"
      ],
      "anatomy": [
        "`root` (optional structural wrapper in vanilla; always present in React composition)",
        "`anchor` (optional positioning anchor)",
        "`trigger`",
        "`positioner` (optional floating layer wrapper)",
        "`content`",
        "`item` (repeatable)",
        "`separator` (optional)",
        "nested composition: submenu `root` + `trigger` + `positioner` + `content`"
      ],
      "publicDataAttrs": [
        "data-ui",
        "data-slot",
        "data-state",
        "data-disabled",
        "data-selected",
        "data-highlighted",
        "data-orientation",
        "data-expanded",
        "data-invalid"
      ],
      "stateModel": [
        "open state: controlled (`open` + `onOpenChange`) and uncontrolled (`defaultOpen`)",
        "highlighted item id driven by roving focus + typeahead",
        "optional selection callback (`onSelect` / `onItemSelect`)",
        "selecting an item closes the active menu tree, including all open submenu ancestors",
        "hover mode state includes close-delay cancellation guards and transition boundary checks",
        "positioner state reflection via `data-placement` and `data-side` when floating layer is rendered",
        "first-open measurement settling in vanilla via deferred post-open sync pass"
      ],
      "keyboardFocus": [
        "roving `tabIndex` on enabled items",
        "`Escape` closes",
        "Tab closes and keeps native focus traversal",
        "React composition restores trigger focus on Escape close; vanilla keeps native focus behavior unless host code overrides it"
      ],
      "aria": [
        "content: `role=\"menu\"`",
        "item: `role=\"menuitem\"` and `aria-disabled` when disabled",
        "trigger: `aria-haspopup=\"menu\"`, `aria-expanded`, `aria-controls`",
        "content open/closed reflection via `hidden` + `data-state`"
      ],
      "validatorRules": [
        "structure.invalid-slot-placement",
        "structure.missing-required-slot",
        "keyboard.missing-required-keymap",
        "keyboard.unhandled-typeahead",
        "keyboard.unhandled-escape",
        "focus.invalid-tabindex-roving"
      ],
      "adapterNotes": {
        "react": [
          "Primary mapper: mapMenuPropsToControllerOptions.",
          "Supports controlled/uncontrolled parity and hydration-safe IDs."
        ],
        "vanilla": [
          "Primary binder: bindMenu.",
          "Binds explicit DOM nodes and should be cleaned up on unmount."
        ],
        "vue": [
          "Primary composable: useMenu.",
          "Composition API wrappers keep DOM contract reflection via ARIA + public data-*."
        ],
        "solid": [
          "Primary component surface: Menu.Root and related compound slots.",
          "Signal-friendly wrappers preserve the same public DOM contract and hydration-safe IDs."
        ],
        "svelte": [
          "Primary component surface: Menu.Root and related compound slots.",
          "Compound Svelte primitives preserve the same public DOM contract and shared primitive semantics."
        ]
      },
      "examples": [],
      "closure": {
        "requiredChecks": [
          "schemaRegistered",
          "specDocumented",
          "reactMapper",
          "siteExampleCoverage",
          "siteA11yCoverage",
          "siteVisible",
          "schemaValidatorCoverage",
          "schemaAriaCoverage",
          "specValidatorRulesSection",
          "specTestChecklistSection",
          "specSsrHydrationSection",
          "reactSsrHydrationCoverage",
          "reactRenderLevelSsrCoverage",
          "solidSsrCoverage",
          "coreImplemented",
          "primitiveUnitTest",
          "domContractSnapshot",
          "vanillaBinding",
          "adapterParitySnapshot"
        ],
        "checks": {
          "schemaRegistered": true,
          "specDocumented": true,
          "coreImplemented": true,
          "primitiveUnitTest": true,
          "domContractSnapshot": true,
          "reactMapper": true,
          "vanillaBinding": true,
          "adapterParitySnapshot": true,
          "siteExampleCoverage": true,
          "siteA11yCoverage": true,
          "siteVisible": true,
          "schemaValidatorCoverage": true,
          "schemaAriaCoverage": true,
          "specValidatorRulesSection": true,
          "specTestChecklistSection": true,
          "specSsrHydrationSection": true,
          "reactSsrHydrationCoverage": true,
          "reactRenderLevelSsrCoverage": true,
          "solidSsrCoverage": true
        },
        "summary": {
          "completed": 19,
          "required": 19,
          "score": 100
        },
        "missingRequirements": []
      }
    },
    {
      "primitive": "popover",
      "displayName": "Popover",
      "releaseStatus": "canonical",
      "implementationLayer": "core",
      "visibleInSite": true,
      "supportedAdapters": [
        "react",
        "vanilla",
        "solid",
        "vue",
        "svelte"
      ],
      "agentNarrative": {
        "release": "Popover is tracked as a canonical v1 primitive. Implementation ownership is core-backed. The primitive is listed in the public site catalog.",
        "closure": "Popover currently satisfies 19/19 required closure signals."
      },
      "purpose": "Provide lightweight anchored floating content with deterministic non-modal dismissal semantics.",
      "localized": {
        "zh-cn": {
          "purpose": "提供轻量锚定浮层内容，并具备可确定的非模态 dismissal 语义。",
          "nonGoals": [
            "默认提供 modal focus trap 与 focus restoration policy",
            "Floating transition orchestration 与视觉动画归属",
            "Auto-placement animations、arrows 与 popover theming"
          ],
          "anatomy": [
            "`root`（Vue 中可选结构 wrapper）",
            "`anchor`（可选定位锚点）",
            "`trigger`",
            "`positioner`（可选 floating wrapper）",
            "`content`",
            "`title`（可选）",
            "`description`（可选）"
          ],
          "stateModel": [
            "`open` 与 `defaultOpen`",
            "通过 `open` + `onOpenChange` 受控",
            "省略 `open` 时使用非受控内部状态",
            "Hook/compound usage 可用 `close` / `openPopover` / `toggle` request helpers",
            "`anchor` 与 `content` node linkage 用于 layer dismissal behavior",
            "title/description IDs 绑定到 `aria-labelledby` / `aria-describedby`"
          ],
          "eventModel": [
            "trigger `click` 切换 open/close",
            "受控/非受控 flows 保留 request semantics",
            "outside pointer/focus dismiss 通过 dismissable layer 路由",
            "`Escape` dismiss active popover layer"
          ],
          "keyboardFocus": [
            "组件边界之外保留原生宿主键盘语义",
            "`Escape` 关闭 layer，并把控制权交回原生 focus path",
            "此 primitive 不强制 focus trapping"
          ],
          "aria": [
            "trigger: `aria-haspopup=\"dialog\"`、`aria-expanded`、`aria-controls`",
            "content: `role=\"dialog\"`、`aria-labelledby`、`aria-describedby`、`hidden`"
          ]
        }
      },
      "nonGoals": [
        "Modal focus trap and focus restoration policy by default",
        "Floating transition orchestration and visual animation ownership",
        "Auto-placement animations, arrows, and popover theming"
      ],
      "anatomy": [
        "`root` (optional structural wrapper in Vue)",
        "`anchor` (optional positioning anchor)",
        "`trigger`",
        "`positioner` (optional floating wrapper)",
        "`content`",
        "`title` (optional)",
        "`description` (optional)"
      ],
      "publicDataAttrs": [
        "data-ui",
        "data-slot",
        "data-state",
        "data-disabled",
        "data-selected",
        "data-highlighted",
        "data-orientation",
        "data-expanded",
        "data-invalid"
      ],
      "stateModel": [
        "`open` and `defaultOpen`",
        "controlled via `open` + `onOpenChange`",
        "uncontrolled internal state when `open` is omitted",
        "`close` / `openPopover` / `toggle` request helpers for hook/compound usage",
        "`anchor` and `content` node linkage for layer dismissal behavior",
        "title/description IDs bound to `aria-labelledby` / `aria-describedby`"
      ],
      "keyboardFocus": [
        "native host semantics for keyboard are retained outside component boundaries",
        "`Escape` closes the layer and returns control to native focus path",
        "no mandatory focus trapping in this primitive"
      ],
      "aria": [
        "trigger: `aria-haspopup=\"dialog\"`, `aria-expanded`, `aria-controls`",
        "content: `role=\"dialog\"`, `aria-labelledby`, `aria-describedby`, `hidden`"
      ],
      "validatorRules": [
        "structure.invalid-slot-placement",
        "structure.missing-required-slot",
        "aria.broken-controls-linkage",
        "aria.missing-label",
        "keyboard.unhandled-escape",
        "state.invalid-open-state"
      ],
      "adapterNotes": {
        "react": [
          "Primary mapper: mapPopoverPropsToControllerOptions.",
          "Supports controlled/uncontrolled parity and hydration-safe IDs."
        ],
        "vanilla": [
          "Primary binder: bindPopover.",
          "Binds explicit DOM nodes and should be cleaned up on unmount."
        ],
        "vue": [
          "Primary composable: usePopover.",
          "Composition API wrappers keep DOM contract reflection via ARIA + public data-*."
        ],
        "solid": [
          "Primary component surface: Popover.Root and related compound slots.",
          "Signal-friendly wrappers preserve the same public DOM contract and hydration-safe IDs."
        ],
        "svelte": [
          "Primary component surface: Popover.Root and related compound slots.",
          "Compound Svelte primitives preserve the same public DOM contract and shared primitive semantics."
        ]
      },
      "examples": [
        "popover-manual"
      ],
      "closure": {
        "requiredChecks": [
          "schemaRegistered",
          "specDocumented",
          "reactMapper",
          "siteExampleCoverage",
          "siteA11yCoverage",
          "siteVisible",
          "schemaValidatorCoverage",
          "schemaAriaCoverage",
          "specValidatorRulesSection",
          "specTestChecklistSection",
          "specSsrHydrationSection",
          "reactSsrHydrationCoverage",
          "reactRenderLevelSsrCoverage",
          "solidSsrCoverage",
          "coreImplemented",
          "primitiveUnitTest",
          "domContractSnapshot",
          "vanillaBinding",
          "adapterParitySnapshot"
        ],
        "checks": {
          "schemaRegistered": true,
          "specDocumented": true,
          "coreImplemented": true,
          "primitiveUnitTest": true,
          "domContractSnapshot": true,
          "reactMapper": true,
          "vanillaBinding": true,
          "adapterParitySnapshot": true,
          "siteExampleCoverage": true,
          "siteA11yCoverage": true,
          "siteVisible": true,
          "schemaValidatorCoverage": true,
          "schemaAriaCoverage": true,
          "specValidatorRulesSection": true,
          "specTestChecklistSection": true,
          "specSsrHydrationSection": true,
          "reactSsrHydrationCoverage": true,
          "reactRenderLevelSsrCoverage": true,
          "solidSsrCoverage": true
        },
        "summary": {
          "completed": 19,
          "required": 19,
          "score": 100
        },
        "missingRequirements": []
      }
    },
    {
      "primitive": "select",
      "displayName": "Select",
      "releaseStatus": "canonical",
      "implementationLayer": "core",
      "visibleInSite": true,
      "supportedAdapters": [
        "react",
        "vanilla",
        "solid",
        "vue",
        "svelte"
      ],
      "agentNarrative": {
        "release": "Select is tracked as a canonical v1 primitive. Implementation ownership is core-backed. The primitive is listed in the public site catalog.",
        "closure": "Select currently satisfies 19/19 required closure signals."
      },
      "purpose": "Compose trigger + listbox with form-compatible hidden input semantics.",
      "localized": {
        "zh-cn": {
          "purpose": "组合 trigger 与 listbox，并提供兼容表单的 hidden input 语义。",
          "nonGoals": [
            "模拟原生 `<select>` 视觉",
            "负责 trigger/content 的样式"
          ],
          "anatomy": [
            "`trigger`",
            "`value`（可选，位于 `trigger` 内）",
            "`content`",
            "`group`（可选、可重复）",
            "`label`（可选，位于 `group` 内）",
            "`separator`（可选、可重复）",
            "`option`（可重复）",
            "`hidden-input`（可选）"
          ],
          "stateModel": [
            "value 支持受控/非受控",
            "open 支持受控/非受控"
          ],
          "eventModel": [
            "trigger 切换 popover/listbox",
            "option click 或 Enter 提交",
            "Escape 关闭",
            "Grouped options 与 flat options 保持相同 commit semantics"
          ],
          "keyboardFocus": [
            "trigger 通过 Enter/Space/Arrow 打开",
            "listbox navigation 处理 option focus"
          ],
          "aria": [
            "trigger: `aria-haspopup=listbox`、`aria-expanded`、`aria-controls`",
            "options: `aria-selected`",
            "content: `role=listbox`",
            "group: `role=group`，separator: `role=separator`",
            "invalid state 应通过 trigger 上的 `aria-invalid` 反射"
          ]
        }
      },
      "nonGoals": [
        "Native `<select>` visual emulation",
        "Styling responsibility for trigger/content"
      ],
      "anatomy": [
        "`trigger`",
        "`value` (optional, inside `trigger`)",
        "`content`",
        "`group` (optional, repeatable)",
        "`label` (optional, inside `group`)",
        "`separator` (optional, repeatable)",
        "`option` (repeatable)",
        "`hidden-input` (optional)"
      ],
      "publicDataAttrs": [
        "data-ui",
        "data-slot",
        "data-state",
        "data-disabled",
        "data-selected",
        "data-highlighted",
        "data-orientation",
        "data-expanded",
        "data-invalid"
      ],
      "stateModel": [
        "value controlled/uncontrolled",
        "open controlled/uncontrolled"
      ],
      "keyboardFocus": [
        "trigger opens via Enter/Space/Arrow",
        "listbox navigation handles option focus"
      ],
      "aria": [
        "trigger: `aria-haspopup=listbox`, `aria-expanded`, `aria-controls`",
        "options: `aria-selected`",
        "content: `role=listbox`",
        "group: `role=group`, separator: `role=separator`",
        "invalid state should be reflected on trigger via `aria-invalid`"
      ],
      "validatorRules": [
        "state.invalid-default-value",
        "aria.broken-controls-linkage",
        "structure.invalid-slot-placement",
        "structure.unexpected-child-slot"
      ],
      "adapterNotes": {
        "react": [
          "Primary mapper: mapSelectPropsToControllerOptions.",
          "Supports controlled/uncontrolled parity and hydration-safe IDs."
        ],
        "vanilla": [
          "Primary binder: bindSelect.",
          "Binds explicit DOM nodes and should be cleaned up on unmount."
        ],
        "vue": [
          "Primary composable: useSelect.",
          "Composition API wrappers keep DOM contract reflection via ARIA + public data-*."
        ],
        "solid": [
          "Primary component surface: Select.Root and related compound slots.",
          "Signal-friendly wrappers preserve the same public DOM contract and hydration-safe IDs."
        ],
        "svelte": [
          "Primary component surface: Select.Root and related compound slots.",
          "Compound Svelte primitives preserve the same public DOM contract and shared primitive semantics."
        ]
      },
      "examples": [
        "select-label-composition",
        "select-scrollable"
      ],
      "closure": {
        "requiredChecks": [
          "schemaRegistered",
          "specDocumented",
          "reactMapper",
          "siteExampleCoverage",
          "siteA11yCoverage",
          "siteVisible",
          "schemaValidatorCoverage",
          "schemaAriaCoverage",
          "specValidatorRulesSection",
          "specTestChecklistSection",
          "specSsrHydrationSection",
          "reactSsrHydrationCoverage",
          "reactRenderLevelSsrCoverage",
          "solidSsrCoverage",
          "coreImplemented",
          "primitiveUnitTest",
          "domContractSnapshot",
          "vanillaBinding",
          "adapterParitySnapshot"
        ],
        "checks": {
          "schemaRegistered": true,
          "specDocumented": true,
          "coreImplemented": true,
          "primitiveUnitTest": true,
          "domContractSnapshot": true,
          "reactMapper": true,
          "vanillaBinding": true,
          "adapterParitySnapshot": true,
          "siteExampleCoverage": true,
          "siteA11yCoverage": true,
          "siteVisible": true,
          "schemaValidatorCoverage": true,
          "schemaAriaCoverage": true,
          "specValidatorRulesSection": true,
          "specTestChecklistSection": true,
          "specSsrHydrationSection": true,
          "reactSsrHydrationCoverage": true,
          "reactRenderLevelSsrCoverage": true,
          "solidSsrCoverage": true
        },
        "summary": {
          "completed": 19,
          "required": 19,
          "score": 100
        },
        "missingRequirements": []
      }
    },
    {
      "primitive": "tabs",
      "displayName": "Tabs",
      "releaseStatus": "canonical",
      "implementationLayer": "core",
      "visibleInSite": true,
      "supportedAdapters": [
        "react",
        "vanilla",
        "solid",
        "vue",
        "svelte"
      ],
      "agentNarrative": {
        "release": "Tabs is tracked as a canonical v1 primitive. Implementation ownership is core-backed. The primitive is listed in the public site catalog.",
        "closure": "Tabs currently satisfies 19/19 required closure signals."
      },
      "purpose": "Switch active panel via tab selection while preserving keyboard navigation semantics.",
      "localized": {
        "zh-cn": {
          "purpose": "通过 tab selection 切换 active panel，同时保留键盘导航语义。",
          "nonGoals": [
            "Panel 布局/样式",
            "异步数据加载策略"
          ],
          "anatomy": [
            "`list`",
            "`tab`（可重复）",
            "`panel`（可重复）"
          ],
          "stateModel": [
            "selected tab id",
            "受控：`value` + `onValueChange`",
            "非受控：`defaultValue`",
            "activation mode：`manual` / `automatic`"
          ],
          "eventModel": [
            "arrow/home/end 移动 roving focus",
            "manual mode 下 Enter/Space 激活"
          ],
          "keyboardFocus": [
            "必须使用 roving tabindex",
            "任意时刻恰好一个 tab 为 `tabIndex=0`"
          ],
          "aria": [
            "`role=tablist/tab/tabpanel`",
            "`aria-selected`、`aria-controls`、`aria-labelledby`"
          ]
        }
      },
      "nonGoals": [
        "Panel layout/styling",
        "Async data loading strategy"
      ],
      "anatomy": [
        "`list`",
        "`tab` (repeatable)",
        "`panel` (repeatable)"
      ],
      "publicDataAttrs": [
        "data-ui",
        "data-slot",
        "data-state",
        "data-disabled",
        "data-selected",
        "data-highlighted",
        "data-orientation",
        "data-expanded",
        "data-invalid"
      ],
      "stateModel": [
        "selected tab id",
        "controlled: `value` + `onValueChange`",
        "uncontrolled: `defaultValue`",
        "activation mode: `manual` / `automatic`"
      ],
      "keyboardFocus": [
        "roving tabindex required",
        "exactly one `tabIndex=0` tab at a time"
      ],
      "aria": [
        "`role=tablist/tab/tabpanel`",
        "`aria-selected`, `aria-controls`, `aria-labelledby`"
      ],
      "validatorRules": [
        "state.multiple-active-roving-item",
        "focus.invalid-tabindex-roving",
        "aria.role-mismatch"
      ],
      "adapterNotes": {
        "react": [
          "Primary mapper: mapTabsPropsToControllerOptions.",
          "Supports controlled/uncontrolled parity and hydration-safe IDs."
        ],
        "vanilla": [
          "Primary binder: bindTabs.",
          "Binds explicit DOM nodes and should be cleaned up on unmount."
        ],
        "vue": [
          "Primary composable: useTabs.",
          "Composition API wrappers keep DOM contract reflection via ARIA + public data-*."
        ],
        "solid": [
          "Primary component surface: Tabs.Root and related compound slots.",
          "Signal-friendly wrappers preserve the same public DOM contract and hydration-safe IDs."
        ],
        "svelte": [
          "Primary component surface: Tabs.Root and related compound slots.",
          "Compound Svelte primitives preserve the same public DOM contract and shared primitive semantics."
        ]
      },
      "examples": [
        "tabs-manual"
      ],
      "closure": {
        "requiredChecks": [
          "schemaRegistered",
          "specDocumented",
          "reactMapper",
          "siteExampleCoverage",
          "siteA11yCoverage",
          "siteVisible",
          "schemaValidatorCoverage",
          "schemaAriaCoverage",
          "specValidatorRulesSection",
          "specTestChecklistSection",
          "specSsrHydrationSection",
          "reactSsrHydrationCoverage",
          "reactRenderLevelSsrCoverage",
          "solidSsrCoverage",
          "coreImplemented",
          "primitiveUnitTest",
          "domContractSnapshot",
          "vanillaBinding",
          "adapterParitySnapshot"
        ],
        "checks": {
          "schemaRegistered": true,
          "specDocumented": true,
          "coreImplemented": true,
          "primitiveUnitTest": true,
          "domContractSnapshot": true,
          "reactMapper": true,
          "vanillaBinding": true,
          "adapterParitySnapshot": true,
          "siteExampleCoverage": true,
          "siteA11yCoverage": true,
          "siteVisible": true,
          "schemaValidatorCoverage": true,
          "schemaAriaCoverage": true,
          "specValidatorRulesSection": true,
          "specTestChecklistSection": true,
          "specSsrHydrationSection": true,
          "reactSsrHydrationCoverage": true,
          "reactRenderLevelSsrCoverage": true,
          "solidSsrCoverage": true
        },
        "summary": {
          "completed": 19,
          "required": 19,
          "score": 100
        },
        "missingRequirements": []
      }
    },
    {
      "primitive": "tooltip",
      "displayName": "Tooltip",
      "releaseStatus": "canonical",
      "implementationLayer": "core",
      "visibleInSite": true,
      "supportedAdapters": [
        "react",
        "vanilla",
        "solid",
        "vue",
        "svelte"
      ],
      "agentNarrative": {
        "release": "Tooltip is tracked as a canonical v1 primitive. Implementation ownership is core-backed. The primitive is listed in the public site catalog.",
        "closure": "Tooltip currently satisfies 19/19 required closure signals."
      },
      "purpose": "Expose contextual helper content linked to a trigger through semantic ARIA relationships and",
      "localized": {
        "zh-cn": {
          "purpose": "把上下文辅助内容通过语义 ARIA 关系连接到 trigger。",
          "nonGoals": [
            "复杂 popover 交互模型",
            "视觉动画与样式归属"
          ],
          "anatomy": [
            "`root`",
            "`trigger`",
            "`positioner`",
            "`content`",
            "`arrow`（可选）"
          ],
          "stateModel": [
            "open values：`open` / `closed`",
            "受控：`open` + `onOpenChange`",
            "非受控：`defaultOpen`",
            "React 与 Solid timing controls：`openDelay`、`closeDelay`、可选 `forceMount`",
            "Vanilla interaction toggles：`openOnHover`、`openOnFocus`",
            "Placement controls：`placement`、`offset`、`viewportPadding`"
          ],
          "eventModel": [
            "pointer enter/focus 打开 tooltip",
            "pointer leave/blur 关闭 tooltip",
            "outside pointer down 关闭 tooltip",
            "Escape 可从 trigger 或 content path 关闭 tooltip"
          ],
          "keyboardFocus": [
            "tooltip 可见期间 trigger 保持 focus",
            "tooltip content 默认不在 tab order 中",
            "floating layer 通过 `data-side` 与 `data-placement` 反射解析后的方向"
          ],
          "aria": [
            "content 使用 `role=tooltip`",
            "trigger 的 `aria-describedby` 指向 content id",
            "trigger 应保留独立于 tooltip text 的 accessible name"
          ]
        }
      },
      "nonGoals": [
        "Rich popover interaction model",
        "Visual animation and styling ownership"
      ],
      "anatomy": [
        "`root`",
        "`trigger`",
        "`positioner`",
        "`content`",
        "`arrow` (optional)"
      ],
      "publicDataAttrs": [
        "data-ui",
        "data-slot",
        "data-state",
        "data-disabled",
        "data-selected",
        "data-highlighted",
        "data-orientation",
        "data-expanded",
        "data-invalid"
      ],
      "stateModel": [
        "open values: `open` / `closed`",
        "controlled: `open` + `onOpenChange`",
        "uncontrolled: `defaultOpen`",
        "react and Solid timing controls: `openDelay`, `closeDelay`, optional `forceMount`",
        "vanilla interaction toggles: `openOnHover`, `openOnFocus`",
        "placement controls: `placement`, `offset`, `viewportPadding`"
      ],
      "keyboardFocus": [
        "trigger retains focus throughout tooltip visibility",
        "tooltip content is not part of tab order by default",
        "floating layer reflects resolved side with `data-side` and placement with `data-placement`"
      ],
      "aria": [
        "content uses `role=tooltip`",
        "trigger `aria-describedby` points to content id",
        "trigger should keep accessible name independent from tooltip text"
      ],
      "validatorRules": [
        "structure.missing-required-slot",
        "aria.broken-controls-linkage",
        "dom.missing-public-data-attr",
        "keyboard.unhandled-escape",
        "state.invalid-open-state"
      ],
      "adapterNotes": {
        "react": [
          "Primary mapper: mapTooltipPropsToControllerOptions.",
          "Supports controlled/uncontrolled parity and hydration-safe IDs."
        ],
        "vanilla": [
          "Primary binder: bindTooltip.",
          "Binds explicit DOM nodes and should be cleaned up on unmount."
        ],
        "vue": [
          "Primary composable: useTooltip.",
          "Composition API wrappers keep DOM contract reflection via ARIA + public data-*."
        ],
        "solid": [
          "Primary component surface: Tooltip.Root and related compound slots.",
          "Signal-friendly wrappers preserve the same public DOM contract and hydration-safe IDs."
        ],
        "svelte": [
          "Primary component surface: Tooltip.Root and related compound slots.",
          "Compound Svelte primitives preserve the same public DOM contract and shared primitive semantics."
        ]
      },
      "examples": [],
      "closure": {
        "requiredChecks": [
          "schemaRegistered",
          "specDocumented",
          "reactMapper",
          "siteExampleCoverage",
          "siteA11yCoverage",
          "siteVisible",
          "schemaValidatorCoverage",
          "schemaAriaCoverage",
          "specValidatorRulesSection",
          "specTestChecklistSection",
          "specSsrHydrationSection",
          "reactSsrHydrationCoverage",
          "reactRenderLevelSsrCoverage",
          "solidSsrCoverage",
          "coreImplemented",
          "primitiveUnitTest",
          "domContractSnapshot",
          "vanillaBinding",
          "adapterParitySnapshot"
        ],
        "checks": {
          "schemaRegistered": true,
          "specDocumented": true,
          "coreImplemented": true,
          "primitiveUnitTest": true,
          "domContractSnapshot": true,
          "reactMapper": true,
          "vanillaBinding": true,
          "adapterParitySnapshot": true,
          "siteExampleCoverage": true,
          "siteA11yCoverage": true,
          "siteVisible": true,
          "schemaValidatorCoverage": true,
          "schemaAriaCoverage": true,
          "specValidatorRulesSection": true,
          "specTestChecklistSection": true,
          "specSsrHydrationSection": true,
          "reactSsrHydrationCoverage": true,
          "reactRenderLevelSsrCoverage": true,
          "solidSsrCoverage": true
        },
        "summary": {
          "completed": 19,
          "required": 19,
          "score": 100
        },
        "missingRequirements": []
      }
    }
  ]
}
