- 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-modalityverdicts into sevenunevaluatedones 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-visibleandtext-resizewould 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_TECHNOLOGIESthat 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-labelsstays 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.