# Search Interface Pattern Migration This is the bounded interface-pattern evidence for GovOPlaN Search. Search owns presentation and aggregation; source modules continue to own result data and authorization, and optional external engines remain provider capabilities. | Surface | Task and archetype | Consequence and state contract | | --- | --- | --- | | Title-bar Search command and overlay | Global or context-sensitive focused lookup | The left-most titlebar command, F3, and Ctrl/Cmd+K open the same focus-contained Core dialog with a full-width query field. Arrow keys move through the listbox, Enter opens the selected result, Escape closes it and restores focus. | | Overlay filters | Progressive-disclosure filter popover | Module and resource filters only narrow authorized results. Active filters stay visible and removable by keyboard. | | `/search` | Full-page search/results fallback | Query and filters are URL-stable. Loading, empty, provider-partial, failed, and paged states remain inside the result region. | | Result entries | Permission-filtered list-detail destinations | A source module supplies the title, safe summary, breadcrumbs, and destination. Search does not infer or bypass source authorization. | | Administration > Search index | Operator table and bounded recovery actions | Operators inspect source coverage and queue health, process pending changes, reconcile module activation, and advance one bounded rebuild page at a time. Quarantined work remains visible. | All surfaces use Core buttons, icon buttons, dialog, alerts, loading, scrolling, and documentation-help primitives. Provider diagnostics are partial-state evidence: safe results remain usable and a failing provider is identified without exposing source data. Search has no destructive action. The responsive layout collapses filters and results at narrow widths, and result activation is available without pointer interaction. Verification: - `npm run test:search-overlay` - `npm run test:interface-pattern` - the Core TypeScript graph, structural localization audit, theme check, module permutations, and full-product bundle budget - Search backend and manifest tests