# Audit: accordion audit-version: 1 audited-at: 2026-06-26 scope: method: adversarially-verified workflow; HIGH lead-verified. B6 ground-truth: checkbox/toggle/switch commit-toggle = sequence post (lag-fixed); radio-group/tabs/accordion/stepper set state at call-site (pre OK); toggle-group + checkbox-group carry the A31 .includes pattern (SYS-7); slider has no gesture-layer A6 leak. provider: G:\dev\svelte\vicen\src\uix\soma\components\accordion\accordion-provider.svelte.ts sequence-audit: State set at call-site (line 104 in setValue) before events fire (lines 107-108). Morfo declares both 'open' and 'close' events as sequence='post'. State change precedes trigger emission; perceptual signal acknowledges resolved state, not delaying reveal. Compliant with intentional design documented ## Summary Counts (post-verification): CRITICAL 0 · HIGH 0 · MEDIUM 0 · LOW 0. ## Findings _No findings survived verification (clean component)._ ## No-findings dimensions A: Morfo Contract, B: Behavior & Sequence, B: Roving Tabindex (A14), B: RTL Directional Keys (A12), B: Gesture & Observer Disposal (A15, A6), B: Hidden Input Form Participation (A13), B: ID Registration (A30), B: O(N²) Detection (A31), B: State Reactivity (A33), B: Keyboard Navigation, C: DOM Selector Safety, D: Soma-Eidos Frontier, E: TSC Token Composition, E-bis: Theming & Magic Literals, F: Test Coverage, G: Redundancy ## Theming facts (E-bis) - magic z-index: none - magic literals: none - undeclared parts: none - roles clean: true · variants clean: true ## Tests (F) - exists: true · env: jsdom - covers: toggle state coordination; single/multiple mode; keyboard navigation (roving triggers); aria-disabled when single non-collapsible; header/content props wired to item state; item registration/unregistration - untested: ## Style observations (non-blocking) - Morfo uses 'as const satisfies Morfo' (strict typecheck enabled) - CSS variables follow --accordion-{slot} naming with role aliases for variants (outline|surface|ghost) - ResizeObserver$ wraps observer disposal in $effect lifecycle - Nested accordion support via closest() filter excludes siblings - Parts registration matches morfo declarations (5/5: provider, item, header, trigger, content) - Item id-registration direct (not $effect-wrapped) - Keyboard routing uses getDirectionalKeys(dir, orientation) for RTL/LTR/orientation awareness