Skip to content

Commit 5232bee

Browse files
committed
chore: automated sync of local changes
1 parent 4676723 commit 5232bee

4 files changed

Lines changed: 413 additions & 0 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: K9-SVC Validation
2+
on: [push, pull_request]
3+
4+
jobs:
5+
validate:
6+
runs-on: ubuntu-latest
7+
steps:
8+
- uses: actions/checkout@v4
9+
- name: Validate contractiles
10+
run: |
11+
#!/bin/bash
12+
set -euo
13+
14+
# Check all contractiles exist
15+
for file in must trust dust lust adjust intend; do
16+
if [ ! -f ".machine_readable/contractiles/$file/${file}file.a2ml" ]; then
17+
echo "ERROR: Missing contractile: $file"
18+
exit 1
19+
fi
20+
done
21+
22+
echo "✓ All contractiles present"
23+
24+
# Basic syntax validation
25+
find .machine_readable/contractiles -name "*.a2ml" -exec grep -l "SPDX-License-Identifier" {} \; | wc -l
26+
27+
echo "✓ Contractile validation passed"

docs/accessibility/README.adoc

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
= Accessibility Compliance for otpiser
2+
:revnumber: 1.0.0
3+
:revdate: 2026-04-08
4+
5+
== WCAG 2.1 Compliance
6+
7+
This repository complies with WCAG 2.1 Level A accessibility standards.
8+
9+
=== Compliance Status
10+
11+
[cols="1,1,1,1"]
12+
|===
13+
|Standard |Level |Status |Notes
14+
15+
|WCAG 2.1 |A |Compliant |
16+
|WCAG 2.1 |AA |Partial |
17+
|WCAG 2.1 |AAA |Not Applicable |
18+
|===
19+
20+
== Accessibility Features
21+
22+
* Semantic HTML structure
23+
* Keyboard navigation support
24+
* ARIA attributes where appropriate
25+
* Color contrast compliance
26+
* Alternative text for images
27+
28+
== Testing
29+
30+
Accessibility testing is performed using:
31+
32+
* Automated tools (axe, Lighthouse)
33+
* Manual keyboard navigation testing
34+
* Screen reader testing (NVDA, VoiceOver)
35+
36+
== Reporting Issues
37+
38+
Please report accessibility issues to: hyperpolymath@proton.me
39+
40+
== Compliance Documentation
41+
42+
See link:../compliance/ACCESSIBILITY.adoc[ACCESSIBILITY.adoc] for detailed compliance reports.

docs/accessibility/STANDARD.a2ml

Lines changed: 318 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,318 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
# Hyperpolymath Accessibility Standard (HAS)
3+
# Canonical accessibility requirements for all projects
4+
5+
@abstract:
6+
The Hyperpolymath Accessibility Standard (HAS) defines minimum accessibility
7+
requirements for all projects in the ecosystem. Compliance with HAS ensures
8+
that our tools are usable by everyone, regardless of ability.
9+
10+
HAS is structured as a contractile system with three compliance levels:
11+
- Level A: Minimum viability (must)
12+
- Level AA: Recommended (should)
13+
- Level AAA: Enhanced (aspire)
14+
@end
15+
16+
## Compliance Levels
17+
18+
### Level A (Minimum)
19+
- description: Minimum accessibility for basic usability
20+
- required: true
21+
- probe: test -f .machine_readable/contractiles/adjust/Adjustfile.a2ml
22+
- notes: All projects must meet Level A
23+
24+
### Level AA (Recommended)
25+
- description: WCAG 2.1 AA compliance
26+
- required: true
27+
- target: Q4 2026
28+
- notes: All user-facing projects must meet Level AA
29+
30+
### Level AAA (Enhanced)
31+
- description: WCAG 2.1 AAA compliance
32+
- required: false
33+
- target: 2027
34+
- notes: Aspirational goal for all projects
35+
36+
## Keyboard Accessibility (Level A)
37+
38+
### keyboard-navigation
39+
- description: All functionality available via keyboard
40+
- compliance: A
41+
- probe: test -f accessibility/keyboard.ex || find . -name "*keyboard*" -type f
42+
- notes: Tab, arrow keys, space/enter for activation
43+
44+
### keyboard-shortcuts
45+
- description: Configurable keyboard shortcuts
46+
- compliance: A
47+
- probe: grep -r "keybindings\|shortcuts" . 2>/dev/null
48+
- notes: User-remappable keybindings
49+
50+
### focus-management
51+
- description: Visible focus indicators
52+
- compliance: A
53+
- probe: grep -r "focus\|:focus" . 2>/dev/null
54+
- notes: CSS focus styles required
55+
56+
## Visual Accessibility (Level AA)
57+
58+
### high-contrast
59+
- description: High contrast mode
60+
- compliance: AA
61+
- probe: grep -r "contrast\|a11y-contrast" . 2>/dev/null
62+
- target: 4.5:1 contrast ratio
63+
64+
### colorblind-support
65+
- description: Colorblind-friendly palettes
66+
- compliance: AA
67+
- probe: find . -name "*colorblind\|*palette*" -type f
68+
- palettes: deuteranopia, protanopia, tritanopia
69+
70+
### font-size-adjustment
71+
- description: Resizable text (14-20px)
72+
- compliance: AA
73+
- probe: grep -r "font-size\|text-scale" . 2>/dev/null
74+
- persistence: User preference saved
75+
76+
### theme-switching
77+
- description: Dark/light/system themes
78+
- compliance: AA
79+
- probe: grep -r "theme\|dark-mode" . 2>/dev/null
80+
- os-preference: Respects system setting
81+
82+
## Auditory Accessibility (Level AA)
83+
84+
### screen-reader
85+
- description: Screen reader compatibility
86+
- compliance: AA
87+
- probe: find . -name "*aria\|*screenreader*" -type f
88+
- attributes: aria-label, aria-live, role
89+
90+
### closed-captions
91+
- description: Real-time captions
92+
- compliance: AA
93+
- probe: grep -r "caption\|subtitle" . 2>/dev/null
94+
- accuracy: 90%+ for English
95+
96+
### volume-normalization
97+
- description: Consistent volume levels
98+
- compliance: AA
99+
- probe: grep -r "volume\|loudness" . 2>/dev/null
100+
- standard: EBU R128 (-23 LUFS)
101+
102+
## Motor Accessibility (Level AA)
103+
104+
### reduced-motion
105+
- description: Reduced animation option
106+
- compliance: AA
107+
- probe: grep -r "motion\|animation" . 2>/dev/null
108+
- media-query: prefers-reduced-motion
109+
110+
### voice-commands
111+
- description: Voice control interface
112+
- compliance: AA
113+
- probe: grep -r "voice\|speech" . 2>/dev/null
114+
- fallback: Keyboard alternative
115+
116+
## Cognitive Accessibility (Level AAA)
117+
118+
### clear-language
119+
- description: Plain language mode
120+
- compliance: AAA
121+
- probe: grep -r "simplify\|plain-language" . 2>/dev/null
122+
- glossary: Jargon explanations
123+
124+
### predictable-navigation
125+
- description: Consistent navigation
126+
- compliance: AAA
127+
- probe: grep -r "nav\|menu" . 2>/dev/null
128+
- testing: User testing required
129+
130+
### error-prevention
131+
- description: Confirmation for destructive actions
132+
- compliance: AAA
133+
- probe: grep -r "confirm\|warn" . 2>/dev/null
134+
- undo: Undo functionality
135+
136+
## Implementation Requirements
137+
138+
### documentation
139+
- description: Accessibility documentation required
140+
- compliance: A
141+
- probe: test -f docs/accessibility/README.adoc
142+
- format: AsciiDoc with examples
143+
144+
### testing
145+
- description: Automated accessibility tests
146+
- compliance: AA
147+
- probe: grep -r "pa11y\|axe\|accessibility" .github/workflows/ 2>/dev/null
148+
- tools: pa11y, axe-core, or equivalent
149+
150+
### compliance-report
151+
- description: VPAT compliance report
152+
- compliance: AA
153+
- probe: test -f docs/compliance/ACCESSIBILITY.adoc
154+
- format: VPAT 2.4 template
155+
156+
## Compliance Matrix
157+
158+
| Project Type | Level A | Level AA | Level AAA |
159+
|--------------|---------|----------|-----------|
160+
| Internal tools | Required | Recommended | Optional |
161+
| User-facing apps | Required | Required | Aspirational |
162+
| Public websites | Required | Required | Required |
163+
| Libraries/SDKs | Required | Recommended | Optional |
164+
165+
## Validation
166+
167+
### automated-testing
168+
- description: CI/CD accessibility tests
169+
- compliance: AA
170+
- probe: grep -r "accessibility" .github/workflows/ 2>/dev/null
171+
- tools: pa11y, axe-core, or custom
172+
173+
### manual-testing
174+
- description: Manual testing required
175+
- compliance: AA
176+
- probe: test -f docs/testing/ACCESSIBILITY.adoc
177+
- coverage: Keyboard, screen reader, high contrast
178+
179+
### user-testing
180+
- description: User testing with diverse abilities
181+
- compliance: AAA
182+
- probe: grep -r "user-testing\|usability" docs/ 2>/dev/null
183+
- participants: Minimum 5 diverse users
184+
185+
## Timeline
186+
187+
### 2026-Q2
188+
- description: Level A compliance for all projects
189+
- target: June 30, 2026
190+
- status: In progress
191+
192+
### 2026-Q4
193+
- description: Level AA compliance for user-facing projects
194+
- target: December 31, 2026
195+
- status: Planned
196+
197+
### 2027
198+
- description: Level AAA compliance for public websites
199+
- target: December 31, 2027
200+
- status: Aspirational
201+
202+
## References
203+
204+
### WCAG 2.1
205+
- url: https://www.w3.org/WAI/standards-guidelines/wcag/
206+
- level: AA compliance target
207+
208+
### Section 508
209+
- url: https://www.section508.gov/
210+
- level: Equivalent to WCAG 2.1 AA
211+
212+
### EN 301 549
213+
- url: https://www.etsi.org/deliver/etsi_en/301500_301599/301549/02.12.01_60/en_301549v021201p.pdf
214+
- level: EU public sector requirement
215+
216+
### VPAT 2.4
217+
- url: https://www.itic.org/policy/accessibility/vpat
218+
- format: Voluntary Product Accessibility Template
219+
220+
## Implementation Guide
221+
222+
### For Project Maintainers
223+
224+
1. Create accessibility module:
225+
```bash
226+
mkdir -p server/lib/your_project/accessibility
227+
```
228+
229+
2. Add Adjustfile.a2ml:
230+
```bash
231+
cp /var/mnt/eclipse/repos/standards/accessibility/Adjustfile.a2ml \
232+
.machine_readable/contractiles/adjust/
233+
```
234+
235+
3. Implement keyboard navigation:
236+
```elixir
237+
# Example: server/lib/your_project/accessibility/keyboard.ex
238+
@default_bindings %{
239+
"Space" => :ptt,
240+
"m" => :mute,
241+
"d" => :deafen
242+
}
243+
```
244+
245+
4. Add screen reader support:
246+
```elixir
247+
# Example: server/lib/your_project/accessibility/screen_reader.ex
248+
def announce_join(username, room) do
249+
speak("#{username} joined #{room}")
250+
end
251+
```
252+
253+
5. Document accessibility features:
254+
```bash
255+
mkdir -p docs/accessibility
256+
cp /var/mnt/eclipse/repos/standards/accessibility/README.adoc \
257+
docs/accessibility/
258+
```
259+
260+
### For Developers
261+
262+
1. Follow keyboard accessibility guidelines:
263+
- All interactive elements must be keyboard-operable
264+
- Provide visible focus indicators
265+
- Support standard keyboard shortcuts
266+
267+
2. Use semantic HTML:
268+
```html
269+
<button aria-label="Mute microphone">Mute</button>
270+
<div role="region" aria-label="Chat messages">...</div>
271+
```
272+
273+
3. Respect user preferences:
274+
```css
275+
@media (prefers-reduced-motion: reduce) {
276+
* {
277+
animation: none !important;
278+
transition: none !important;
279+
}
280+
}
281+
```
282+
283+
4. Test with screen readers:
284+
- NVDA (Windows)
285+
- VoiceOver (macOS)
286+
- Orca (Linux)
287+
288+
### For Testers
289+
290+
1. Keyboard-only testing:
291+
- Tab through all interactive elements
292+
- Verify focus indicators
293+
- Test all shortcuts
294+
295+
2. Screen reader testing:
296+
- Navigate using screen reader
297+
- Verify ARIA attributes
298+
- Test live regions
299+
300+
3. High contrast testing:
301+
- Enable high contrast mode
302+
- Verify readability
303+
- Check colorblind simulation
304+
305+
## Compliance Checklist
306+
307+
- [ ] Adjustfile.a2ml created
308+
- [ ] Keyboard navigation implemented
309+
- [ ] Screen reader support added
310+
- [ ] Accessibility documentation written
311+
- [ ] Automated tests added to CI
312+
- [ ] Manual testing completed
313+
- [ ] VPAT compliance report created
314+
315+
## License
316+
317+
SPDX-License-Identifier: PMPL-1.0-or-later
318+
Copyright (c) 2026 Hyperpolymath

0 commit comments

Comments
 (0)