Disciplines · Proposals

YSD-16065 — Which assistive technology the workspace commits to supporting

macOS, at secondary tier.

6sections5 minread

On this page
  • Status: proposed
  • Priority: EXT — blocking for §16 acceptance (seven of the eight critical journeys cannot be shown completable until this is answered, and no recruitment changes that)
  • Decision owner: @GreyChimp
  • Drafted: 2026-08-16 by Claude Code (Opus 5)
  • Approval: pending

Question#

supported-baselines.md names exactly one assistive technology: VoiceOver on macOS, at secondary tier. Every other modality is, by that document's own rule, UNSUPPORTED-UNTESTED — "it may work, but no gate protects it, and support claims for it are forbidden until it joins this file with a matrix entry."

Measured on 2026-08-16 against the shipped journeys and the shipped capability table, that one row is doing more work than one row can do:

Journey Modalities its steps demand that the matrix does not declare
study-an-authorized-source speech-input, switch-access
observe-at-a-chosen-moment braille-display, screen-magnifier, speech-input, switch-access
compare-with-uncertainty braille-display, screen-magnifier, speech-input, switch-access
pin-into-a-collection braille-display, speech-input, switch-access
connect-and-traverse braille-display, screen-magnifier
finding-to-practice screen-magnifier
study-without-models speech-input, switch-access
notebook-to-report — (screen-reader only; genuinely awaiting a participant)

And the capability table STUDY_ACCESSIBILITY_CAPABILITIES — which says of itself that "every entry is grounded in a shipped Studio behavior; none is aspirational" — declares four requirements supported whose driving technology the matrix does not name: keyboard-navigation (switch-access, speech-input), focus-visible (switch-access), text-resize (screen-magnifier), and screen-reader-labels, which has a declared technology nobody has driven.

So two shipped artifacts assert opposite things about the same four modalities. The matrix says silence means refusal; the capability table says the requirements those modalities rest on are supported. This is not a recruitment question and recruiting cannot answer it: seven journeys report undeclared-modality, and that verdict is checked before any session because it is true before anybody is hired. The gap is in the claim.

The question is therefore: which assistive technologies does this workspace commit to supporting, at what tier, and what does it say about the ones it does not?

Recommendation#

Declare screen-magnifier and speech-input as the next two modalities, at secondary tier, and declare switch-access and braille-display explicitly as UNSUPPORTED-UNTESTED with the reason written down rather than leaving them unstated. A row enters the matrix only when a task-completion session has actually been driven with it — the matrix records support, not intent.

The ranking is not a preference. Screen magnification and speech input ship inside the operating systems already declared primary and secondary (macOS Zoom and Voice Control; Windows Magnifier and Voice Access), so a session needs a tester and no procurement; between them they reach six of the seven blocked journeys and three of the four unobserved claims. Switch access needs a switch device and braille output needs a display, and a declared row nobody can drive is the failure this decision exists to stop.

Naming the refusals matters as much as naming the support. The matrix's silence is currently being read two ways at once, and an explicit "not supported, because no gate can be run without hardware nobody has" is a sentence a person who depends on a switch can act on. Silence is not.

Options considered#

  • Declare all four modalities now. Rejected: it is the exact claim the matrix forbids — support asserted before anything could be run against it — and it would turn seven honest undeclared-modality verdicts into seven unevaluated ones without changing a single fact about the product.
  • Narrow the capability table instead. Rejected, though it is the tempting symmetrical move: downgrading keyboard-navigation, focus-visible and text-resize would state that the product is not keyboard-operable and its text does not resize, which is false — the Playwright keyboard journey and the 200% reflow assertion both pass. Lowering a true claim to resolve a contradiction hides the contradiction rather than settling it.
  • Re-word the journeys so their steps stop demanding what nobody supports. Rejected as the worst of the three: the demands are properties of the work — selecting a region on a frame IS a pointer-precision task — and editing the demand to fit the matrix makes the evaluation agree with the claim by construction.
  • Two OS-resident modalities at secondary tier, hardware-dependent ones refused in writing — recommended.

Consequences#

  • §16 acceptance stays open until sessions exist, and it stays open for a reason that is now written down against a named owner rather than filed under "recruit participants".
  • Two modalities acquire a real obligation: a tester, a session, and a row in DECLARED_ASSISTIVE_TECHNOLOGIES that must agree with the published matrix.
  • Two modalities acquire a published refusal. A person using a switch or a braille display is told, rather than left to discover it.
  • screen-reader-labels stays declared and unobserved until somebody completes a journey with VoiceOver; that is participant work and this decision does not change it.

Machine-enforced outcome#

On approval, DECLARED_ASSISTIVE_TECHNOLOGIES gains the approved rows and no others, the published matrix and that constant are asserted to agree, and a modality declared UNSUPPORTED-UNTESTED may not appear in the roster. The release gate continues to name every shipped support claim no session has driven, so an approved row does not become evidence by being written down.

Pending control#

The release gate refuses to pass on a support claim nobody has driven. check-accessibility-evidence.ts --require-complete fails when unobservedSupportClaims is non-empty, naming each requirement whose declared support rests on assistive technology no completed session has used — a branch added on 2026-08-16, because until then the four claims were computed, printed with a "!" and read by nothing that could fail. Beside it, atTaskCompletionReport answers undeclared-modality for a journey whose steps demand a modality the matrix does not declare, and that verdict is reached before any session is considered, so no amount of evaluation can quietly discharge a claim this decision has not yet made.