feat(standard): add §18 accessibility as opt-in mode layer — v1.33#11
Merged
Conversation
Accessibility was three unenforceable lines in §13, a chapter scoped to graphical applications, while the estate is overwhelmingly Rust CLI/TUI. §18 makes it a first-class, auditable chapter covering CLI, TUI, and GUI. Accessible mode is mandatory for developers to implement and optional for users to activate. The Steelbore theme is untouched and remains the sole default; two additive sibling variants join the §11.1 registry. - §18 (new): activation precedence (--accessible / SPACECRAFT_A11Y / config / hints), CLI+TUI rules, TUI linear mode, GUI bridges (AccessKit for Rust; GtkAccessible / Semantics / QAccessible), verification, and remediation tracking for existing projects. - §11.1.1 (new): steelbore-high-contrast (only accent and error shift, to #7FAEDC and #FF8080; all six tokens >=7:1 on Void Navy) and steelbore-mono (4-bit ANSI). Void Navy remains the background in every variant. - §11: the AA guarantee covers foreground-on-Void-Navy only. 9 of 10 inter-token pairs fall below 3:1 (Amber on Red Oxide is 1.13:1), so text on a palette-colored fill now requires its own verification. - §10: bindings must be user-remappable; NVDA/Orca/VoiceOver modifier chords must not be captured. - §13: WCAG 2.1 AA -> WCAG 2.2 AA; EN 301 549 clause 11 (non-web software) adopted as the anchor for CLI/TUI. - §16: new §18 gate; §10 and §13 gates extended. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
This was referenced Jul 23, 2026
§18 as written applied to every application with no exceptions. That is wrong for games: §18 assumes a character grid or a widget tree with roles and names, and games are real-time simulations rendering custom non-widget interfaces. The techniques that suit them — remappable controls, colorblind-safe signalling, subtitles, difficulty options — are a different discipline from the one §18 codifies. Games are now exempt from §18 in full and §10 in full. Accessibility in a game is optional, nothing is enforced, and its absence is never a compliance failure. - §18.5 (new): the exemption, plus §18.5.1 declaration + registry (mirroring the §5.3 general-use carve-out — README declaration and a registry table, today naming Ironway), §18.5.2 a recommended list a game may decline, and §18.5.3 shared vocabulary for toggles a game chooses to ship. - §10: scope note excluding registered games, including the CUA and Vim rows — modal editing and text-editor chords are a poor fit for real-time play. The useful parts survive as §18.5.2 recommendations. - §18: two-sided rule now reads "other than a registered game (§18.5)". - §18.4: registered games owe no remediation entry, because they owe no conformance. - §16: §10 and §18 gates marked N/A for registered games. Folded into v1.33 rather than shipping a v1.34: the v1.33 PRs are still open and unpublished, so no released version ever stated the un-carved rule. Version stays 1.33; @set UPDATED moves to 2026-07-24, and the existing changelog entry is extended rather than duplicated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
UnbreakableMJ
added a commit
to Spacecraft-Software/Construct
that referenced
this pull request
Jul 23, 2026
Back-sync of Spacecraft-Software/Standard#11's second commit, keeping the skill encoding and the published Standard at the same version and date. - §18.5 (new): games are exempt from §18 in full and §10 in full; accessibility in a game is optional and nothing is enforced. §18.5.1 declaration + registry (the §5.3 pattern, naming Ironway), §18.5.2 a recommended list a game may decline, §18.5.3 shared vocabulary for toggles a game chooses to ship. - §10: scope note excluding registered games, including CUA and Vim. - §18: two-sided rule now reads "other than a registered game (§18.5)". - §18.4: registered games owe no remediation entry. - §16: §10 and §18 gates marked N/A for registered games. - Masthead date 2026-07-23 -> 2026-07-24; version stays 1.33. - references/CHANGELOG.md: existing v1.33 entry extended, not duplicated. Bundles rebuilt in the same commit per CLAUDE.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
UnbreakableMJ
added a commit
to Spacecraft-Software/Construct
that referenced
this pull request
Jul 23, 2026
…ssibility) (#10) * skills: sync constitution + theme-factory to Standard v1.33 (§18 accessibility) Back-sync of Spacecraft-Software/Standard#11, keeping the skill encoding and the published Standard at the same version and date. spacecraft-standard-constitution: - masthead 1.32 -> 1.33 (2026-07-23) and frontmatter description - §18 (new): accessible mode mandatory to implement, off by default; activation precedence, CLI+TUI rules, TUI linear mode, GUI bridges, verification, remediation tracking - §11.1.1 (new): steelbore-high-contrast and steelbore-mono as additive siblings; steelbore stays the sole default - §11: AA guarantee scoped to foreground-on-Void-Navy; token-on-token pairings mostly below 3:1, so text on colored fills needs its own check - §10: remappability + reserved NVDA/Orca/VoiceOver chords - §13: WCAG 2.1 AA -> 2.2 AA; EN 301 549 clause 11 anchor - §16: new §18 gate; §10 and §13 gates extended - references/CHANGELOG.md: v1.33 entry spacecraft-theme-factory: - corrected the overstated "every color pair against Void Navy passes AA" claim, which read as covering token-on-token pairings it never measured - emit accessibility variants alongside the default where the platform supports multiple themes; fixed duplicate workflow step numbering Both bundles rebuilt in the same commit per CLAUDE.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * skills: sync §18.5 games carve-out to constitution (v1.33, 2026-07-24) Back-sync of Spacecraft-Software/Standard#11's second commit, keeping the skill encoding and the published Standard at the same version and date. - §18.5 (new): games are exempt from §18 in full and §10 in full; accessibility in a game is optional and nothing is enforced. §18.5.1 declaration + registry (the §5.3 pattern, naming Ironway), §18.5.2 a recommended list a game may decline, §18.5.3 shared vocabulary for toggles a game chooses to ship. - §10: scope note excluding registered games, including CUA and Vim. - §18: two-sided rule now reads "other than a registered game (§18.5)". - §18.4: registered games owe no remediation entry. - §16: §10 and §18 gates marked N/A for registered games. - Masthead date 2026-07-23 -> 2026-07-24; version stays 1.33. - references/CHANGELOG.md: existing v1.33 entry extended, not duplicated. Bundles rebuilt in the same commit per CLAUDE.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (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.
Why
Accessibility in the Standard was three lines in §13 — a chapter that opens by mandating Material Design "for all graphical applications." Meanwhile
PROJECTS.mdshows the estate is overwhelmingly Rust CLI/TUI (59 Rust / 13 CLI / 10 TUI mentions vs. 1 Flutter). The dominant application class had no accessibility coverage, no acceptance criteria, and no §16 audit gate.What changed
§18 (new chapter) — Accessibility (Opt-In Mode Layer). Two-sided rule: mandatory for developers to implement, off by default for users. The Steelbore theme is untouched and remains the sole default.
--accessible>SPACECRAFT_A11Y> config > auto-detect hints (TERM=dumb,NO_COLOR,GTK_MODULES=…gail:atk). Unset everywhere ⇒ standard Steelbore rendering, unchanged. Explicit0always wins.[OK]/[ERROR]/[WARN]/[INFO]; stdout/stderr separation) and rules gated behind the toggle (no animation, no decorative art, linear output, tabular fallback, legible prompts). Plus §18.2.3 TUI linear mode: a non-redraw append-only stream mode, and an equivalent non-interactive CLI path where a TUI would otherwise be the only route.GtkAccessible, FlutterSemantics,QAccessiblefor toolkit-native paths. Explicit name + role on every interactive element.espeak-ngfor CLI output, not by inspection.§18.5 — games are exempt from §18 and §10 in full. §18 assumes a character grid or a widget tree with roles and names; games are real-time simulations rendering custom non-widget interfaces, and the techniques that suit them (remappable controls, colorblind-safe signalling, subtitles, difficulty options) are a different discipline. Accessibility in a game is optional, nothing is enforced, and its absence is never a compliance failure.
Insert/CapsLock/KP_Insert/Ctrl+Optionalone; colorblind-safe signalling; subtitles; reduced motion).§11.1.1 (new) — accessibility theme variants. Additive siblings, never replacements:
steelboresteelbore-high-contraststeelbore-monoHigh-contrast lifts only the two tokens that need it —
accent#4B7EB0→#7FAEDC(4.77:1 → 8.73:1) anderror#FF5C5C→#FF8080(6.74:1 → 8.41:1). The other four are §11 values verbatim, and Void Navy remains the background in every variant.§11 — contrast guarantee scoped honestly. The AA claim covers foreground-on-Void-Navy only (measured: Amber 7.64:1, Steel Blue 4.77:1, Radium Green 14.87:1, Red Oxide 6.74:1, Coolant 14.74:1 — all pass). But 9 of 10 inter-token pairs fall below 3:1 — Molten Amber on Red Oxide is 1.13:1, Radium Green on Liquid Coolant is 1.01:1. Text on a palette-colored fill now requires its own pair verification.
§10 — keybindings. Bindings must be user-remappable; NVDA/Orca/VoiceOver modifier chords must not be captured. Does not apply to registered games (§18.5), including the pre-existing CUA and Vim rows — modal editing and text-editor chords are a poor fit for real-time play.
§13 — target raised. WCAG 2.1 AA → WCAG 2.2 AA, plus EN 301 549 clause 11 (non-web software) as the anchor for CLI/TUI — the only normative text that addresses terminal software. EN 301 549 V4.1.1 (expected 2026) incorporates WCAG 2.2; the EAA has been enforceable since 2025-06-28.
§16 — new §18 gate; §10 and §13 gates extended; §10 and §18 gates marked N/A for registered games.
Note on scope
§18 applies to every non-game project immediately, so projects predating v1.33 are non-compliant until retrofitted. Rather than soften this to a recommendation, §18.4 requires each to carry a dated remediation entry in
PROJECTS.mduntil it conforms. Registered games are excluded — they owe no remediation entry, because they owe no conformance. Those retrofits are follow-on work.Verification
makeinfo --no-split The_Steelbore_Standard.texi→ zero errors, zero warnings@settitle/@set VERSIONread 1.33;@set UPDATEDreads 2026-07-24texi2any --htmlrenders §18.5 and its registry table; Void Navy intactreuse linton a tracked-files-only checkout → compliant (7/7).github/validate-configs.py→ 0 failedFollow-up PRs sync
spacecraft-standard-constitution+spacecraft-theme-factoryand add thespacecraft-accessibilityskill.🤖 Generated with Claude Code