Inclusive design personas
accessibility specs/accessibility/personas.kmd
Inventory of 8 archetypal personas covering the four ability axes (vision / motor / cognition / hearing) in the three permanence states (permanent / temporary / situational). Pairs the WCAG line- item auditing of accessibility/* with a humanized constraint set so designers reason about WHO breaks when a check is missed, not just what fails. Owner curates final names, day-in-the-life copy, and illustrations; this spec ships the structural scaffold + design constraints.
Quando esta spec se aplica
Todos os triggers
- Author a new KDS surface, flow, or screen
- Review a UI against accessibility/* line items and want context
- Brief a designer / illustrator on Koder's a11y philosophy
Corpo da especificação
Spec — Inclusive design personas
Status: v0.1.0 Draft (2026-05-22). Owner curates names, day-in- the-life copy, and illustrations; structural slots ship now.
R1 — Why personas
WCAG audit gates (contrast / focus / aria / touch target) tell us what fails. Personas tell us who breaks. The same missed focus ring is "the audit didn't pass" to one team and "Jamal-the- parent typing one-handed at the breakfast table can't dismiss the modal" to another. The second framing routinely surfaces design fixes the first misses.
Microsoft's Inclusive Design toolkit popularized the permanence matrix — a disability that's permanent for one person is temporary for another (broken arm) or situational for a third (holding a baby). KDS adopts the matrix so designers don't conflate WCAG categories with edge-case populations; every persona is "us, some percentage of the time."
R2 — Persona matrix
Eight personas × four ability axes × three permanence states. Codes are stable; names are owner-curated and may evolve.
| Code | Ability axis | Permanence | Working title (TODO — owner curates) | Core constraint |
|---|---|---|---|---|
| P1 | Vision | Permanent | TODO: low-vision power user | Screen reader + 200 % zoom; no color-only cues |
| P2 | Vision | Situational | TODO: bright outdoor sun | Glare washes out low-contrast text + accent |
| P3 | Motor | Permanent | TODO: keyboard-only power user | No pointer; every flow reachable via Tab + Enter |
| P4 | Motor | Temporary | TODO: one-handed (broken arm) | Thumb-only reach + touch target ≥ 44 dp |
| P5 | Cognition | Permanent | TODO: dyslexia + ADHD | Plain sans-serif font + reduced motion |
| P6 | Cognition | Situational | TODO: distracted parent | One-tap recovery from interruption; auto-save |
| P7 | Hearing | Permanent | TODO: Deaf user, LIBRAS L1 | No audio-only feedback; captions on every video |
| P8 | Hearing | Situational | TODO: noisy café | Visual confirmation of "sent" / "saved" / "error" |
Each persona below carries a 1-sentence stub for the day-in-the-life section (the longer narrative ships owner-curated, per § R3).
P1 — Vision · Permanent
- Day-in-the-life stub: TODO — owner writes 1 paragraph.
- Tools they use: screen reader (TalkBack / VoiceOver / NVDA), browser zoom 200 %, OS high-contrast mode.
- Design constraints they expose:
- Every interactive element MUST have an accessible name.
- No color-only cues — pair with shape / text / icon.
- Focus ring contrast ≥ 3:1 against any surface.
- Linked specs:
themes/light-dark.kmd(high-contrast theme),policies/focus-management.kmd,accessibility/aria-roles.kmd.
P2 — Vision · Situational
- Day-in-the-life stub: TODO.
- Tools: phone outdoors in bright sun, OS auto-brightness maxed.
- Constraints:
- Body text contrast ≥ 7:1 (AAA) on critical surfaces.
- Accent color ≥ 4.5:1 against background.
- Photos / illustrations behind text MUST gradient-darken under the type.
- Linked specs:
themes/light-dark.kmd,themes/high-contrast.kmd.
P3 — Motor · Permanent
- Day-in-the-life stub: TODO.
- Tools: external keyboard, switch device, head-tracker.
- Constraints:
- Every flow reachable via Tab + Enter + Escape.
- Visible focus indicator at every step.
- No drag-only or hover-only paths (gesture must have a keyboard/click counterpart).
- Linked specs:
policies/focus-management.kmd,navigation/back-behavior.kmd.
P4 — Motor · Temporary
- Day-in-the-life stub: TODO.
- Tools: thumb-only reach on phone; one arm in a sling.
- Constraints:
- Touch targets ≥ 44 dp.
- Primary actions reachable in thumb zone (lower 1/3 of screen).
- No bottom-screen swipes that conflict with OS gesture pill.
- Linked specs:
app-layout/safe-area.kmd,policies/single-hand-reach.kmd(TODO — opens with this persona set).
P5 — Cognition · Permanent
- Day-in-the-life stub: TODO.
- Tools: prefers reduced motion; uses font size + scaling.
- Constraints:
prefers-reduced-motion: reducehonored.- Plain language — no nested clauses in error messages.
- No timeout-based dismissals on critical content.
- Linked specs:
errors/user-facing-messages.kmd,motion/reduced-motion.kmd.
P6 — Cognition · Situational
- Day-in-the-life stub: TODO.
- Tools: phone interrupted by child, conversation, doorbell.
- Constraints:
- Auto-save on form fields with ≥ 3 inputs.
- Restore-where-they-left-off on app resume.
- Confirmations for destructive actions; undo for 5 s.
- Linked specs:
koder-app/behaviors.kmd § State persistence.
P7 — Hearing · Permanent
- Day-in-the-life stub: TODO.
- Tools: LIBRAS interpreter, captions on, visual notifications.
- Constraints:
- No audio-only feedback (every cue has a visual twin).
- Captions present on every motion clip with speech (#051).
- LIBRAS / sign-language overlay available where applicable (services/ai/signs integration).
- Linked specs:
voice/wake-word.kmd § Visual feedback,specs/sound/vocabulary.kmd § R4 mute contract.
P8 — Hearing · Situational
- Day-in-the-life stub: TODO.
- Tools: phone on silent in a meeting; ambient noise washing out audio.
- Constraints:
- Visual toast confirms every "sent / saved / error" action.
- Vibration available on mobile as a secondary channel.
- Linked specs:
errors/user-facing-messages.kmd,specs/sound/vocabulary.kmd.
R3 — Day-in-the-life narrative (owner-curated)
Each persona ships with a 1-paragraph day-in-the-life describing the context in which they use Koder apps. This copy is owner-curated because it must:
- Avoid stereotypes / paternalistic framing.
- Use names + cultural references appropriate to Koder's audience (Brazil-led, en/pt/es trilingual).
- Be vetted with at least one community member matching the persona's axis (FENEIS for P7, Conselho da Pessoa com Deficiência for P1/P3, etc.) before publication.
Until owner curates, the spec page renders the working title and constraints; the day-in-the-life paragraph displays a TODO banner.
R4 — Illustrations
Per-persona portraits — Verge-styled flat illustrations OR sourced CC0 imagery. Owner directs. Until illustrations land, the page uses a neutral silhouette placeholder.
R5 — Audit gates (when ratified)
koder-spec-audit personas (follow-up) walks every persona × every
linked spec and asserts:
- Each linked spec has a test (T-section) that fails when the persona's constraint breaks.
- No KDS page introduces a UI flow that breaks any persona's
constraint without a
data-persona-exempt="<P-code>:<spec-ref>"attribute.
R6 — Cross-references
specs/themes/high-contrast.kmd— P1 + P2 surface.specs/voice/wake-word.kmd— P7 + P8 visual-feedback requirement.specs/motion/reduced-motion.kmd— P5 baseline.specs/app-layout/safe-area.kmd— P4 thumb-zone.specs/i18n/contract.kmd— locale-aware persona copy.services/ai/signs/(Track B) — P7 sign-language overlay.
R7 — Open questions
- Should the persona set evolve over time (additive only) or remain closed at 8? Recommendation: closed for v0, additive in minor versions on owner sign-off only.
- Do we ship a per-persona test fixture (e.g. for P1, run the page under NVDA's headless mode) — or is per-spec testing sufficient?
- Trilingual rollout — does P1's working title translate, or stay anglicized as a stable code?
Sign-off
| Role | Owner |
|---|---|
| Author | @rpm (2026-05-22) — structural skeleton |
| Day-in-the-life copy | pending owner |
| Illustrations | pending owner direction |
| Community review | pending (FENEIS, Conselho PCD, etc.) |
| Ratification | pending |
Referências
tools/design-gen/backlog/done/055-inclusive-design-personas.kmdmeta/docs/stack/specs/accessibility/nutrition-labels.kmdhttps://www.microsoft.com/design/inclusive/