critical priority medium complexity documentation pending documentor Tier 4

Acceptance Criteria

A compliance documentation package is produced as a single versioned document (PDF and/or Markdown) titled 'WCAG 2.2 AA Compliance Evidence — Likepersonsapp — [version] — [date]'
Section 1: CI evidence — includes the full wcag-report.json artifact from the latest green CI run and a human-readable summary showing 0 critical violations and the count of warnings with their remediation status
Section 2: Manual screen reader test results — contains a test result table for each of the five epic components (ActivityWizardStepSemantics, AccessibleBottomNavigation, AccessibleModalSheet, SensitiveFieldPrivacyGuard, WCAGComplianceChecker UI) tested on both VoiceOver (iOS) and TalkBack (Android), with pass/fail/not-applicable per test scenario
Section 3: WCAG 2.2 AA criterion mapping — a table listing all 50 WCAG 2.2 AA success criteria (Level A + AA), each marked as Supported / Not Applicable / Partially Supported / Not Supported, with the implementing component or reason for each status
Section 4: Known limitations and deferred items — each item has a description, WCAG criterion reference, severity, mitigation plan, and target resolution version
Section 5: Testing methodology — describes the test environment (iOS version, Android version, VoiceOver version, TalkBack version, device models used) and the test scripts/procedures followed
The document is reviewed and signed off by the internal accessibility lead before submission to Blindeforbundet
Blindeforbundet's designated contact confirms receipt and acceptance of the package

Technical Requirements

frameworks
flutter_test
Flutter
apis
WCAGComplianceChecker (internal) for CI report extraction
GitHub Actions artifact download for CI evidence
data models
WCAGReport (JSON)
WCAGCriterionMapping
ManualTestResult
performance requirements
Document must be producible (all evidence gathered and compiled) within one working day after all dependency tasks are complete
security requirements
Manual test results must not include real user data — use test accounts only
The compliance document must not include internal CI secrets, API keys, or infrastructure details beyond what is necessary for the evidence
The document version must be immutable once submitted to Blindeforbundet — store in version control with a signed commit

Execution Context

Execution Tier
Tier 4

Tier 4 - 323 tasks

Can start after Tier 3 completes

Implementation Notes

Use a structured Markdown template with clearly labelled sections to ensure nothing is omitted. Store the template in docs/compliance/wcag-2.2-aa-evidence-template.md and fill it in as a new versioned file per release. For the WCAG 2.2 AA criterion mapping, start from the official W3C criterion list (50 criteria at Levels A and AA) — do not rely on memory. For each criterion, the mapping should link to the specific Flutter Semantics API or component that implements it: e.g., SC 1.1.1 → Image.semanticLabel, SC 2.1.1 → Semantics(onTap:), SC 4.1.2 → Semantics(label:, button: true).

For manual VoiceOver tests, use an iPhone running the latest iOS with VoiceOver enabled via Settings > Accessibility. For TalkBack, use a physical Android device or a well-configured emulator (API 31+). Document exact gesture sequences used (swipe right to next element, double-tap to activate) so tests are reproducible. Blindeforbundet is the primary accessibility stakeholder per the workshop summary — they have VoiceOver/JAWS expertise and will scrutinize screen reader behaviour specifically.

Frame the document language for a non-developer audience while including technical evidence as appendices.

Testing Requirements

This is a documentation task; the primary validation is a peer review checklist rather than automated tests. Checklist items: (1) All 50 WCAG 2.2 AA criteria are present in the criterion mapping table with no gaps. (2) Every manual test result cell is filled — no blanks or 'TBD'. (3) CI report artifact SHA matches the latest green CI run on main.

(4) Known limitations section is present even if empty (explicitly state 'No known limitations'). (5) Document passes a spell-check and grammar review. (6) Two team members independently verify the CI evidence section before submission. Additionally, run the WCAGComplianceChecker one final time against the release build (not debug) and attach that report as an appendix.

Component
WCAG 2.2 AA Compliance Checker
infrastructure medium
Epic Risks (3)
high impact high prob integration

Flutter does not natively enforce a focus trap within a bottom sheet or modal dialog in the semantic tree — VoiceOver and TalkBack can navigate outside the sheet to background content. Implementing a reliable focus trap requires overriding the semantic tree, which may conflict with the existing modal helper infrastructure in the app and require changes to shared components beyond this feature's scope.

Mitigation & Contingency

Mitigation: Prototype the focus trap on the first modal sheet implementation before building the remaining sheets. Evaluate Flutter's ExcludeSemantics and BlockSemantics widgets as the trap mechanism, and coordinate with the team owning the shared modal helpers to agree on a non-breaking integration point before writing production code.

Contingency: If a complete semantic focus trap cannot be implemented without breaking existing modal patterns, implement a partial solution using FocusScope with autofocus on the modal's first element and a prominent 'Return to main content' semantic action, documenting the deviation from WCAG 2.4.3 with a scheduled remediation item.

high impact medium prob technical

The activity wizard uses BLoC state management and the UI rebuilds the entire step widget subtree on transition. If the semantic tree is traversed by VoiceOver before the build cycle settles, focus may land on a stale or partially rendered step, causing the wrong step label or progress value to be announced. This is particularly problematic for blind users who cannot visually verify the announcement against the screen.

Mitigation & Contingency

Mitigation: Coordinate ActivityWizardStepSemantics with FocusManagementService (from the core services epic) to delay focus placement until the post-build callback confirms the new step's semantic tree is complete. Write integration tests using the AccessibilityTestHarness that assert the full announcement sequence across all five wizard steps.

Contingency: If post-build focus delay is insufficient due to async BLoC emission timing, add an explicit semantic notification barrier in the wizard cubit that emits a 'step ready' event only after the new widget tree has been marked as built, decoupling the announcement trigger from the raw state transition.

medium impact medium prob scope

Automated WCAG contrast ratio checking on widget tree snapshots may produce false positives for gradient backgrounds, dark-mode overrides, or design token overrides that are resolved at runtime but appear as unresolvable colours at static analysis time. Excessive false positives would erode team trust in the CI gate, leading to suppression rules that also mask real violations.

Mitigation & Contingency

Mitigation: Scope the WCAGComplianceChecker to check only solid-colour backgrounds in the first iteration, explicitly excluding gradients from contrast checks with documented rationale. Design the check output to distinguish 'undetermined' (gradient/unknown) from 'fail' (solid colour below threshold) so the team can take targeted action on genuine failures only.

Contingency: If false positive rates exceed 20% of reported violations during initial CI runs, switch the CI gate from a hard build failure to a warning annotation on the pull request, combined with a mandatory manual review step, until the checker's rule set has been tuned to match actual design token values.