DL-232
The Cmd/Ctrl+K command palette host anatomy is a bare fixed wrapper: a permanently-open Kobalte Search primitive (open pinned true; Control + Input + Listbox, with Search.Portal/Search.Content replaced by a plain div per Kobalte’s published command-menu recipe, https://kobalte.dev/docs/core/components/search/, @kobalte/core v0.13.13) inside a hand-positioned position:fixed div that IS .cx-palette, with its OWN .cx-palette-backdrop, Escape/outside-click dismiss, hand-wired focus grant (ref + input.focus() on mount) and focus-restore on close, plus per-row onMouseDown-preventDefault so a result click never blurs the pinned-open input — NO Portal/Content, floating-ui out of the test path. Search over Combobox because Search is built for caller-managed filtering (the palette’s own fuzzy match) and publishes this pinned-open/no-portal recipe verbatim, where the same shape on bare Combobox was an unsupported extrapolation. The decider: a DOM-only test path with Kobalte reserved for the Search primitive’s ARIA + keyboard traversal (DL-150’s a11y-hard carve-out). A Search/Combobox hosted inside a Kobalte Dialog (scrim/trap/restore free) was rejected for nested-primitive + Portal/z-layer reconciliation cost against the shipped .cx-palette CSS and the window-level Mod+K toggle.
Status: Active (Matt, 2026-08-23)
Record: ../../ui/compass-command-palette/design.md#decisions