Inclusive design personas

draft

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.

Spec — Inclusive design personas

*tatus* v0.1.0 Draft (20260522). Owner curates names, dayin the-life copy, and illustrations; structural slots ship now.

R1 — Why personas

WCAG audit gates (contrast / focus / aria / touch target) tell us *hat*fails. Personas tell us *ho*breaks. The same missed focus ring is "the audit didn't pass" to one team and "Jamalthe 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 *ermanence 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. *odes 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 Onetap recovery from interruption; autosave
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 1sentence stub for the dayinthelife section (the longer narrative ships owner-curated, per § R3).

P1 — Vision · Permanent

  • *ayinthe-life stub* TODO — owner writes 1 paragraph.
  • *ools they use* screen reader (TalkBack / VoiceOver / NVDA),

    browser zoom 200 %, OS high-contrast mode.

  • *esign constraints they expose*
    1. Every interactive element MUST have an accessible name.
    2. No color-only cues — pair with shape / text / icon.
    3. Focus ring contrast ≥ 3:1 against any surface.
  • *inked specs* themes/light-dark.kmd (high-contrast theme),

    policies/focus-management.kmd, accessibility/aria-roles.kmd.

P2 — Vision · Situational

  • *ayinthe-life stub* TODO.
  • *ools* phone outdoors in bright sun, OS auto-brightness maxed.
  • *onstraints*
    1. Body text contrast ≥ 7:1 (AAA) on critical surfaces.
    2. Accent color ≥ 4.5:1 against background.
    3. Photos / illustrations behind text MUST gradient-darken under the type.
  • *inked specs* themes/light-dark.kmd, themes/high-contrast.kmd.

P3 — Motor · Permanent

  • *ayinthe-life stub* TODO.
  • *ools* external keyboard, switch device, head-tracker.
  • *onstraints*
    1. Every flow reachable via Tab + Enter + Escape.
    2. Visible focus indicator at every step.
    3. No dragonly or hoveronly paths (gesture must have a

      keyboard/click counterpart).

  • *inked specs* policies/focus-management.kmd,

    navigation/back-behavior.kmd.

P4 — Motor · Temporary

  • *ayinthe-life stub* TODO.
  • *ools* thumb-only reach on phone; one arm in a sling.
  • *onstraints*
    1. Touch targets ≥ 44 dp.
    2. Primary actions reachable in thumb zone (lower 1/3 of screen).
    3. No bottom-screen swipes that conflict with OS gesture pill.
  • *inked specs* app-layout/safe-area.kmd,

    policies/single-hand-reach.kmd (TODO — opens with this persona set).

P5 — Cognition · Permanent

  • *ayinthe-life stub* TODO.
  • *ools* prefers reduced motion; uses font size + scaling.
  • *onstraints*
    1. prefers-reduced-motion: reduce honored.
    2. Plain language — no nested clauses in error messages.
    3. No timeout-based dismissals on critical content.
  • *inked specs* errors/user-facing-messages.kmd,

    motion/reduced-motion.kmd.

P6 — Cognition · Situational

  • *ayinthe-life stub* TODO.
  • *ools* phone interrupted by child, conversation, doorbell.
  • *onstraints*
    1. Auto-save on form fields with ≥ 3 inputs.
    2. Restorewheretheyleftoff on app resume.
    3. Confirmations for destructive actions; undo for 5 s.
  • *inked specs* koder-app/behaviors.kmd § State persistence.

P7 — Hearing · Permanent

  • *ayinthe-life stub* TODO.
  • *ools* LIBRAS interpreter, captions on, visual notifications.
  • *onstraints*
    1. No audio-only feedback (every cue has a visual twin).
    2. Captions present on every motion clip with speech (#051).
    3. LIBRAS / sign-language overlay available where applicable

      (servicesaisigns integration).

  • *inked specs* voice/wake-word.kmd § Visual feedback,

    specs/sound/vocabulary.kmd § R4 mute contract.

P8 — Hearing · Situational

  • *ayinthe-life stub* TODO.
  • *ools* phone on silent in a meeting; ambient noise washing out

    audio.

  • *onstraints*
    1. Visual toast confirms every "sent / saved / error" action.
    2. Vibration available on mobile as a secondary channel.
  • *inked specs* errors/user-facing-messages.kmd,

    specs/sound/vocabulary.kmd.

R3 — Dayinthelife narrative (ownercurated)

Each persona ships with a 1paragraph dayinthelife describing the context in which they use Koder apps. This copy is *wner-curated*because it must:

  • Avoid stereotypes / paternalistic framing.
  • Use names + cultural references appropriate to Koder's audience

    (Brazil-led, enptes 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 dayinthe-life paragraph displays a TODO banner.

R4 — Illustrations

Perpersona portraits — Vergestyled 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:

  1. Each linked spec has a test (T-section) that fails when the

    persona's constraint breaks.

  2. 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

  1. 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.

  2. 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?

  3. Trilingual rollout — does P1's working title translate, or stay

    anglicized as a stable code?

Sign-off

Role Owner
Author @rpm (20260522) — structural skeleton
Dayinthe-life copy pending owner_
Illustrations pending owner direction_
Community review pending_ (FENEIS, Conselho PCD, etc.)
Ratification pending_

Source: ../home/koder/dev/koder/meta/docs/stack/specs/accessibility/personas.kmd