# Audit: dialog 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/dialog/dialog-provider.svelte.ts (present) - morfo: src/uix/morfo/components/dialog.ts (present) - recipe: src/uix/eidos/components/dialog/dialog.css + lib/recipes/base.ts §dialog (present) - demo: web/routes/uix/components/dialog (present, not inspected this pass) - test: src/uix/soma/components/dialog/dialog-provider.svelte.test.ts (present, jsdom) - readme: present (not inspected this pass) ## Summary Dialog is the reference for polymorphic close (book §5.3) and gets most of the hard stuff right: nesting via `watch`+`untrack` (loop-safe), FocusScope/ScrollLock derived from `modal` (A16), correct two-moments ordering (emit-before-state on `close` with sequence 'pre'), a thoughtfully tight `data-color` subset (neutral/risk/ threat), and a clean eidos→soma frontier. Two real defects stand out: the Content provider **double-writes `role`/`aria-roledescription`** against the syncAttrs path (an a11y race for the `alertdialog` variant), and the **`[data-dialog-trigger]` CSS envelope is stale dead/conflicting chrome** left behind after the trigger migrated to a composed `