Accessibility Conformance Report
Based on VPAT® Version 2.5 · Report date: 2026-08-26 · Product: brain-server web console + desktop client Evaluation method: automated axe-core scans on the served console build + keyboard-only manual walkthroughs of every panel. Posture per house rule: documented conformance claim backed by evidence, not a certification.
Standards applied
| Standard | Scope of this report |
|---|---|
| WCAG 2.2 AA (W3C Recommendation) | web console |
| EN 301 549 V4.1.1 (clauses 9 + 10 + 11) | clause 11 (non-web software) for the desktop client; clauses 9–10 inherit the WCAG result |
| Section 508 (refreshed) | inherits EN 301 549 mapping |
Conformance level claimed
Partially supports WCAG 2.2 AA — every Success Criterion is either met (evidence below) or listed under Known Ceilings with its remediation owner. No criterion is “does not support” without an entry there.
WCAG 2.2 criteria — evidence summary
The machine-checkable list lives in
wcag22-aa-checklist.md; the release gate
(wcag_22_aa_gate_blocks_release) fails when any criterion loses its pass or
its documented ceiling. Highlights:
- Perceivable: text alternatives on icon-only buttons (
aria-labelfrom the locale bundle — the samet()surface, so translations carry accessibility labels too); contrast verified against both shipped themes (dark/light) at AA ratios; no information conveyed by color alone in verdict/status chips (text label always present). - Operable: full keyboard operation (the review flow is keyboard-first: A/S/R/E/J/K shortcuts with visible focus); 2.4.7 focus-visible styling ships in both themes; 2.4.11 focus never obscured — every focused node carries a scroll margin clearing the sticky header and bottom bar (
focus_never_obscured_by_docks); 2.5.8 target size ≥ 24×24 CSS px enforced at the component-class level (target_size_floor_24px_enforced_by_classes); 2.5.7 dragging — no drag interaction ships; a marked click alternative is required for any future one (drag_alternatives_exist_for_every_drag); reflow to 320 px / 400% zoom. - Understandable: page language follows the active locale (
arsetsdir="rtl", mirrored layout pinned byrtl_mirroring_smoke_all_panels; pseudolocale elongation budgeted bypseudolocale_elongation_renders_without_truncation); ONE consistent help entry on every panel (3.2.6,help_entry_consistent_across_panels); no redundant entry in decision flows (3.3.7,no_redundant_entry_in_approval_flow); auth is token paste/keyring with no cognitive test (3.3.8); error messages are text, tied to their input. - Robust: semantic HTML controls (native button/input), labels bound via
for/aria-label; status changes announced through live regions on the review queue.
EN 301 549 clause 11 (desktop client, non-web software)
| Clause area | Posture |
|---|---|
| 11.1 general / 11.2 legacy | n/a — current platform APIs only |
| 11.3 keyboard + focus (11.1.1.2 style equivalents of WCAG operability) | supported: the desktop shell renders the same semantic controls; full keyboard traversal, visible focus ring |
| 11.5 visual contrast / font scaling | supported: OS font-scale respected up to 200%; theme contrast shared with web |
| 11.8 speech / 11.9 automation | partial — see Known Ceilings |
Known ceilings (honest)
- Locale negotiation is exact-match only. The switcher sanitizes to the
supported set without region/script subtag matching (
fr-CAfalls to defaulten, notfr); the requested→available→default scheme is documented inclient/src/i18n.rsand full BCP-47 matching remains future work with the fluent-langneg upgrade. - axe browser gate covers the web console only. The axe scan runs against the served console build; the desktop shell is covered by the manual keyboard walkthrough + clause-11 self-assessment above, not by axe.
- Focus restoration after modal close is not yet guaranteed everywhere. Drawers restore focus to their invoker; the command palette and the confirm dialog do not yet — tracked as an open a11y defect, remediation planned before the next ACR revision.
- RTL mirroring is attribute-level (
dir="rtl"); deep bidirectional text in mixed-content transcripts relies on browser bidi algorithms — no dedicated Unicode bidi audit has been run. - The report reflects the build dated above; each release re-runs the gate, but manual walkthrough evidence refreshes only when UI panels change.