# Audit: spinner audit-version: 1 audited-at: 2026-06-26 scope: eidos (eidos-only primitive) method: theming-coherence category sweep (visual-elements), adversarially verified; roles + `:Morfo` lead-verified CLEAN across all eidos (no success/warning/danger/info; only alert-dialog uses `:Morfo`). ## Summary Counts (post-verification): CRITICAL 0 · HIGH 0 · MEDIUM 0 · LOW 1. conformance: Contract solid (as const), 3 variants (ring/dots/bars), color cascade via 8-role palette, no recipe entry (foundation-only), no drift. as-const: true · roles clean: true · variants clean: true · has-recipe: false ## Findings ### LOW: Hard-coded animation delays in CSS — spinner-001 - dimension: animation - location: spinner.css:114-150 - evidence: Lines 115-120: `-0.32s`, `-0.16s`; lines 139-150: `-1s`, `-0.85s`, `-0.7s`, `-0.55s`. These are LOCAL keyframe delay sequencing, not component-level magic; acceptable per LOCAL z principle. - impact: Animation timing is local to component stagger effects, not theme-dependent. No re-use across components. - proposed-fix: No fix needed. Local animation stagger is acceptable LOW. - verify: [confirmed] spinner.css:114-150 — `animation-delay: -0.32s/-0.16s` (dots nth-child 1-2) and `-1s/-0.85s/-0.7s/-0.55s` (bars nth-child 1-4) are local stagger offsets for the spinner's own shared infinite animations (spinner-bounce/spinner-stretch). Standard negative-delay phasing technique, scoped to the component's variants, not a reusable theme literal. Correctly LOW; not drift. - fix-status: open ## Theming facts (E-bis) - magic literals: 0.75rem @ spinner.css:27 -> --_spinner-size (em/rem allowed, local sizing) | 1.5px @ spinner.css:28 -> --_spinner-thickness (local, acceptable) | 0.9s @ spinner.css:15 -> --_spinner-duration (LOCAL, not theme-level) | 360deg @ spinner.css:163 -> rotation constant (physical, LOW) | 0.5 @ spinner.css:171-176 -> scale/opacity values in @keyframes (physical, LOW) | 0.4 @ spinner.css:184-187 -> scaleY values in @keyframes (physical, LOW) - magic z-index: none - non-canonical names: none - roles clean: true · variants clean: true