docs: ACCESSIBILITY.md β the specs every package answers to - #40
Merged
Conversation
The W3C web accessibility specs are the baseline for every primitive, including the ones that never touch a browser: WCAG 2.2, WAI-ARIA 1.2, UAAG 2.0, ATAG 2.0, with WCAG 3.0 read for direction only. Records how a reference enters a package (a `## Reference` section in its SPEC, cross-matched against the public API), and what a non-web substrate may do differently β map, add platform instructions, or override with a recorded reason. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dunky is substrate-agnostic, but its accessibility contract shouldn't be invented per package. This adds
ACCESSIBILITY.mdat the root: the external specs that bind every primitive, how a reference enters a package, and what a non-web substrate is allowed to do differently.Why the web specs, for a substrate-agnostic repo
Behavior is modeled once in
packages/core/<name>and every substrate inherits it. That only works with a single external definition of what the behavior is β otherwise each host drifts toward whatever its platform makes easy. The W3C specs are that definition: normative, stable, already mapped onto the native platform accessibility APIs by Core-AAM, and the documents our consumers audit against.So the core machine speaks in ARIA terms and holds itself to WCAG; a binding translates those terms into its host's API. Translation may change the words, never the behavior β a host that forces a behavioral difference sends the decision back into the core machine, per the existing Boundaries rule.
What's in it
## Referencesection in itsSPEC.mdlinking the exact sections it relies on βcore/dialoganddom/utils/focus-trapalready do this. The API is cross-matched against it during RECONCILE; where the API and a normative spec disagree, the API is the bug unless the deviation is justified in that package's SPEC.AGENTS.mdgains a four-line## Accessibilitysection pointing at it. Deliberately just a pointer β nothing from the doc is restated, so there's one home for the rules.Stacked
First of two. #41 builds on this branch and is the first fix found by applying the doc to existing code.
π€ Generated with Claude Code