Contracts

Accessibility

Accessibility baseline, evidence groups, contrast targets, and failure signals for generated interfaces.

Baseline
WCAG 2.2 AA

Default accessibility target.

Required
8

Core evidence groups.

Conditional
14

Added when matching UI patterns appear.

Usage

Accessibility is reviewed as behavior and evidence, not as a visual style claim. Components, patterns, tokens, typography, and icons can support accessibility, but none of them replaces accessibility checks.

Baseline

  • Normal text contrast target: 4.5:1.
  • Large text contrast target: 3:1.
  • Non-text contrast target: 3:1.
  • Text over rendered visual backgrounds must provide browser-rendered contrast/readability evidence, not screenshots alone

Evidence groups

Accessibility evidence groups
GroupRequirementsEvidence
readability_and_contrast
readability_and_contrast
normal text meets 4.5:1 and large text meets 3:1 contrast targets; meaningful non-text visual information meets 3:1 contrast against adjacent colors; text over rendered visual backgrounds uses browser-rendered or computed evidenceaccessibility_evidence.visual_background_contrast, accessibility_evidence.non_text_contrast, accessibility_evidence.forced_colors
keyboard_and_focus
keyboard_and_focus
all functionality has a keyboard path; focus order preserves meaning and operation; custom widgets honor expected WAI-ARIA APG keyboard behavioraccessibility_evidence.keyboard_navigation, accessibility_evidence.focus_order, accessibility_evidence.focus_visible, accessibility_evidence.focus_not_obscured, accessibility_evidence.no_keyboard_trap
semantics_and_structure
semantics_and_structure
content structure uses semantic HTML or equivalent accessible structure; interactive controls expose accessible names, roles, states, and valuesaccessibility_evidence.semantic_content, accessibility_evidence.landmarks_headings, accessibility_evidence.name_role_value, accessibility_evidence.semantic_fallbacks
forms_status_and_errors
forms_status_and_errors
inputs provide visible labels or instructions; detected input errors identify the field and describe the problem in text; status messages are programmatically determinable without requiring focusaccessibility_evidence.form_labels_instructions, accessibility_evidence.form_errors, accessibility_evidence.status_messages
motion_media_and_timing
motion_media_and_timing
non-essential interaction-triggered animation can be disabled or follows reduced-motion preferences; auto-starting motion, blinking, scrolling, or updating content can be paused, stopped, hidden, or controlled; media includes captions, transcripts, audio descriptions, or equivalent alternatives when applicableaccessibility_evidence.reduced_motion, accessibility_evidence.pause_stop_hide, accessibility_evidence.media_alternatives
responsive_and_input
responsive_and_input
content reflows without two-dimensional scrolling at narrow widths unless two-dimensional layout is essential; pointer targets meet minimum target size or valid spacing/equivalent-control exceptionsaccessibility_evidence.responsive_no_overflow, accessibility_evidence.reflow_zoom, accessibility_evidence.target_size

Failure signals

  • text over images, canvas, WebGL, video, gradients, or generated visuals is illegible
  • opacity-based reveal transitions pass through low-contrast states
  • browser-rendered contrast/readability evidence is skipped for text over visual backgrounds
  • automated accessibility scans are provided without browser-rendered or manual evidence for keyboard, focus, semantics, responsive behavior, or rendered backgrounds
  • forms or status messages rely on visual-only error or success cues
  • custom widgets expose roles without matching keyboard behavior, focus management, or state/value semantics

Examples

  • Color and status

    Use
    Pair visual state with text, semantics, and non-color cues.
    Watch for
    Do not treat a token color or icon as accessibility evidence by itself.
  • Keyboard and focus

    Use
    Check focus order, visible focus, no traps, and equivalent keyboard operation.
    Watch for
    Do not accept custom widgets with roles but no matching keyboard behavior.