Accessibility Standards for Contributors

For SenseBridge, an app being accessible is not a quality bar — it is the entire point. A scene-description tool a blind person cannot operate eyes-free is a failed product, no matter how good the description is. Accessibility is the first thing built, not the last thing checked.

Standards this project builds against

VoiceOver: the make-or-break channel

The primary user operates this app entirely through VoiceOver.

Low-vision support

Redundant output channels

Where it helps, deliver the same information through more than one sense (spoken plus on-screen text). This is also the seed of the multi-sense architecture described in docs/ARCHITECTURE.md: the same reasoning output can render as speech, caption, or haptic depending on the user’s profile.

Accessibility risks and mitigations

Risk Consequence Mitigation
Unlabeled or poorly labeled controls App is unusable via VoiceOver Label everything; audit each screen with VoiceOver on
Focus lost after actions User stranded after a result Explicit focus management and announcements
Output too verbose or too terse Cognitive load or missing info Tune phrasing with real testers; make verbosity configurable
Over-confident output User trusts a wrong reading Hedged language everywhere — see docs/SAFETY-FRAMING.md
Building features before the shell is accessible Inaccessible product with nice internals VoiceOver-first discipline: shell accessible before features

The single most important sentence in this project: if a blind person has not used a feature eyes-free and found it useful, it is not validated.

How to test

PR requirement

Every pull request that touches UI must include the accessibility-impact statement in .github/PULL_REQUEST_TEMPLATE.md. “No accessibility impact” is a valid answer for a pure-logic change — but it must be stated, not assumed.


Need help? See SUPPORT.md.