Document accessibility foundation layer for downstream teams
epic-visual-design-accessibility-foundation-task-014 — Write developer documentation covering: how to read and extend the Accessibility Token Manifest, how to consume the DesignTokenProvider via Riverpod, how to use the ContrastRatioValidator in runtime checks and CI scripts, and how to interpret and act on lint rule violations. Include rationale linking requirements back to NHF, Blindeforbundet, HLF, and Barnekreftforeningen user needs.
Acceptance Criteria
Technical Requirements
Execution Context
Tier 7 - 84 tasks
Can start after Tier 6 completes
Implementation Notes
Write for a mid-level Flutter developer who is new to the project. Use plain English. Avoid jargon without explanation. Structure each section with a 'What', 'How', and 'Why' sub-pattern.
For the ContrastRatioValidator section, show both the programmatic API call and the CLI invocation pattern so both app developers and DevOps engineers can use it. In the rationale section, be specific: reference that Blindeforbundet users depend on VoiceOver/JAWS and that any color token bypassing the token system will fail their assistive technology; reference that NHF users include stroke survivors for whom cognitive load is a clinical concern, not a UX preference. Keep the document under 1,500 words — if a section grows too large, link to the relevant source file instead of duplicating content. Ensure all code examples use the exact provider names and constant identifiers defined in the implementation tasks.
Testing Requirements
Documentation quality validation: (1) all Dart code snippets must be extracted and run through dart analyze to confirm they are error-free; (2) a peer review checklist must confirm all four organizations are mentioned with correct context; (3) confirm all internal links to source files (e.g., lib/design_tokens/accessibility_token_manifest.dart) resolve to actual paths. No automated test suite required, but a CI doc-lint step using markdownlint is recommended.
The WCAG 2.2 relative luminance formula requires gamma-corrected sRGB calculations. Floating-point rounding differences between Dart and reference implementations could produce off-by-one classifications for near-threshold color pairs, resulting in pairs that just pass or just fail in CI but behave differently at runtime.
Mitigation & Contingency
Mitigation: Implement the algorithm directly from the WCAG 2.2 specification using the exact linearisation constants. Validate the Dart implementation against the W3C reference test vectors and against a known-good JavaScript implementation for at least 50 color pairs spanning the compliance boundaries.
Contingency: If discrepancies are found, add a configurable tolerance margin (e.g., ±0.005 on the ratio) and flag near-threshold pairs as warnings rather than hard failures, escalating to the design team for manual review.
The token manifest is a static data file. If developers add new color tokens to the design-token-provider without updating the manifest, the manifest becomes stale and the CI validator produces false negatives — passing builds that contain unvalidated color pairs.
Mitigation & Contingency
Mitigation: Add a CI step that cross-references every token constant exported by the design-token-provider against the manifest at build time, failing if any token is present in the provider but absent from the manifest. Document this requirement clearly in the contributing guide.
Contingency: If drift is detected post-merge, run a full manifest regeneration script and treat the resulting manifest diff as a blocking pull request with mandatory accessibility review.
The flutter_accessibility_lints package (or custom lint rules) may produce false positives on patterns the team deliberately uses — for example, decorative icon widgets that intentionally omit semantic labels. Excessive false positives will lead developers to add blanket ignore comments, undermining the entire lint strategy.
Mitigation & Contingency
Mitigation: Audit the full lint rule set against the existing codebase before enabling rules. Create a documented list of approved ignore-comment patterns with mandatory justification comments. Restrict ignore patterns to decorative-only contexts.
Contingency: If false positive rates exceed 10% of lint output, disable the highest-noise individual rules and replace them with targeted custom lint rules scoped to the specific patterns the team controls.