# Audit: popover audit-version: 1 audited-at: 2026-06-26 scope: ['soma', 'sema'] (eidos recipe present though 'eidos' not in morfo scope — systemic SCOPE-DRIFT) files: - provider: src/uix/soma/components/popover/popover-provider.svelte.ts (present) - morfo: src/uix/morfo/components/popover.ts (present) - recipe: src/uix/eidos/components/popover/popover.css + lib/recipes/base.ts §popover (present) - demo: web/routes/uix/components/popover (present, not inspected this pass) - test: src/uix/soma/components/popover/popover-provider.svelte.test.ts (present, jsdom) - readme: present (not inspected this pass) ## Summary The cleanest of the three overlays audited so far. Popover gets the hard parts right: correct two-moments (`present`/`close` sequence 'pre', emit-before-state), modal-derived FocusScope/ScrollLock (A16), the hover-bounce guards (re-fire-while-open no-op; modal+hover loop guard) that match the recorded popover fixes, dismissal trigger-exclusion via `contains()` (no `querySelector` injection), timer cleanup (A6), a clean eidos→soma frontier, NO `role` double-write (it lets the morfo own role), and a Close that composes `