Canvas SSOT ships WCAG-AA-failing light tokens (good/bad/ink-soft) + has no a11y gate #2742

Open
opened 2026-06-13 09:57:38 +00:00 by core-devops · 0 comments
Member

Found via mobile-design-parity

The canvas @theme LIGHT tokens --color-good #0c8a52, --color-bad #c2403c, --color-ink-soft #6f6c62 fail WCAG AA 4.5:1 on their own tinted badge surfaces. Measured by molecule-app's axe e2e (the canonical SSOT consumer):

  • text-good #0c8a52 on bg-good/10 (#e7f3ee) = 3.86 (needs 4.5)
  • text-bad on bg-bad/10 (#f9ecec) = 4.45

The canvas has no color-contrast e2e, so it shipped these; molecule-app's stricter gate (issue #48) caught them when it adopted the canvas SSOT for design parity. molecule-app PR #85 had to keep its AA-hardened light values (good #2a6e44, bad #b0463f, ink-soft #656871) as documented exceptions — which means the SSOT is NOT fully converged.

Proper long-term fix

  1. Update the canvas @theme LIGHT good/bad/ink-soft to AA-compliant values (molecule-app's validated set is a known-good candidate). Dark mode already passes — leave it.
  2. Add a color-contrast axe e2e to the canvas (port molecule-app's a11y-contrast.spec.ts) so the SSOT can't regress to inaccessible tokens again — the SSOT repo should enforce its own a11y.
  3. Re-sync the mobile-web palette (palette.ts — currently inherits canvas #0c8a52 via #2740) + drop molecule-app's exception so all three surfaces reconverge byte-for-byte on the AA-compliant SSOT.

This touches the live desktop canvas brand (subtle, accessibility-improving darkening) → wants CTO review before rolling. Until then, molecule-app is AA-correct + brand-aligned (#85), mobile-web carries the canvas raw values (lower risk — not rendered on tinted text the same way).

## Found via mobile-design-parity The canvas `@theme` LIGHT tokens `--color-good #0c8a52`, `--color-bad #c2403c`, `--color-ink-soft #6f6c62` **fail WCAG AA 4.5:1** on their own tinted badge surfaces. Measured by molecule-app's axe e2e (the canonical SSOT consumer): - `text-good #0c8a52` on `bg-good/10` (#e7f3ee) = **3.86** (needs 4.5) - `text-bad` on `bg-bad/10` (#f9ecec) = **4.45** The canvas has **no color-contrast e2e**, so it shipped these; molecule-app's stricter gate (issue #48) caught them when it adopted the canvas SSOT for design parity. molecule-app PR #85 had to keep its AA-hardened light values (`good #2a6e44`, `bad #b0463f`, `ink-soft #656871`) as documented exceptions — which means the SSOT is NOT fully converged. ## Proper long-term fix 1. Update the canvas `@theme` LIGHT `good`/`bad`/`ink-soft` to AA-compliant values (molecule-app's validated set is a known-good candidate). Dark mode already passes — leave it. 2. Add a `color-contrast` axe e2e to the canvas (port molecule-app's `a11y-contrast.spec.ts`) so the SSOT can't regress to inaccessible tokens again — the SSOT repo should enforce its own a11y. 3. Re-sync the mobile-web palette (`palette.ts` — currently inherits canvas #0c8a52 via #2740) + drop molecule-app's exception so all three surfaces reconverge byte-for-byte on the AA-compliant SSOT. This touches the live desktop canvas brand (subtle, accessibility-improving darkening) → wants CTO review before rolling. Until then, molecule-app is AA-correct + brand-aligned (#85), mobile-web carries the canvas raw values (lower risk — not rendered on tinted text the same way).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#2742