v102.0.4lumaweave2026-06-02

WCAG contrast correct-by-construction — culori parsing, no silent-black, text-size-aware levels, verified

Safety-critical fix replacing the hand-rolled WCAG impl with culori. Three defects eliminated: parse-to-black, wrong alpha math, AA-large as a normal-text level. All 3 callers reconciled; 6-pair reference table verified.

v102.0.42026-06-02
  • ·wcagContrast.ts rewritten to wrap culori.wcagContrast — same dep already used for theme crossfade; no new packages
  • ·Reference table verified (6 theme pairs, ±0.005 max diff): solar-plasma 17.73 AAA, obsidian-aurora 16.02 AAA, midnight-loom 17.74 AAA, void-circuit 11.58 AAA, agartha-dream 15.46 AAA, agartha-dusk 11.67 AAA — all match
  • ·All 3 callers reconciled: badge (CategoryTheme), StatusPill (topbar, user-facing — all themes verified), colorSuggestionEngine (ratio-only, no level change needed)
  • ·3 permanent Playwright tests: 6-pair reference table, fail-not-AA-large (obsidian textMuted 4.2), oklch probe — all pass
  • ·types/culori.d.ts extended with wcagLuminance + wcagContrast per project policy