accessibility covenant· chapter 22 · 18 probes · ADR-021 · WCAG AAA
accessibility is the floor, not the polish
eighteen a11y probes. nine of them run statically on every PR via ci:a11y against every prerendered chapter (ADR-021); five run dynamically in the page via window.zero.a11y(); four remain self-attested for now. body contrast clears AAA; indicator contrast clears AA. reduced motion disables motion, sound, and haptics together. the keyboard is a first-class input.
as of
01 · probes18 · all greenevery surface passes every probe
| id | check | verification | status |
|---|---|---|---|
language | html lang attribute set on every surface | static (ci:a11y · ADR-021) | pass |
page-title | every chapter ships a non-empty <title> | static (ci:a11y · ADR-021) | pass |
unique-ids | every id attribute is unique within the page | static (ci:a11y · ADR-021) | pass |
aria-targets | every aria-labelledby / aria-describedby resolves | static (ci:a11y · ADR-021) | pass |
alt-text | every img has alt or role=presentation | static (ci:a11y · ADR-021) | pass |
control-label | every input/select/textarea has a label or aria | static (ci:a11y · ADR-021) | pass |
button-name | every button has an accessible name | static (ci:a11y · ADR-021) | pass |
link-name | every link has an accessible name | static (ci:a11y · ADR-021) | pass |
tab-order | tab order matches visual flow · no positive tabindex | static (ci:a11y · ADR-021) | pass |
keyboard | every interactive element reachable via tab | dynamic (window.zero.a11y) | pass |
focus-ring | visible focus indicator on every focusable | dynamic (window.zero.a11y) | pass |
skip-link | skip-to-content link as first focusable | dynamic (window.zero.a11y) | pass |
aria-live | live regions announce gate state changes | dynamic (window.zero.a11y) | pass |
reduced-motion | every animation honors prefers-reduced-motion | dynamic (window.zero.a11y) | pass |
reduced-sound | reduced-motion also disables sound + haptics | self-attested | pass |
colour-only | no information conveyed by colour alone | self-attested | pass |
figure-ground | figure-on-ground ≥ 7:1 (WCAG AAA body) | self-attested | pass |
signal-ground | signal-on-ground ≥ 4.5:1 (WCAG AA indicator) | self-attested | pass |
as of
02 · reduced motionrespected · alwaysprefers-reduced-motion disables three modalities together
| modality | default | reduced |
|---|---|---|
| motion | pulse · blink · breath · spin · rise · settle | static state · no animation |
| sound | opt-in cues · 5 wav | silent |
| haptics | opt-in patterns · 5 patterns | off · no vibration |
why three together
a user who has set prefers-reduced-motion is signalling sensitivity, not just visual preference. taking the cue across motion, sound, and haptics together respects intent.