Skip to content

Commit cb75a75

Browse files
committed
chore: sync local state and update contractiles
1 parent fbac968 commit cb75a75

31 files changed

Lines changed: 4279 additions & 5484 deletions

.github/workflows/boj-build.yml

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,48 @@
11
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
#
3+
# OPTIONAL: BoJ Server Build Trigger
4+
# This workflow notifies a BoJ Server instance when code is pushed.
5+
# It is a no-op if BOJ_SERVER_URL is not set or the server is unreachable.
6+
# To enable: set BOJ_SERVER_URL as a repository secret or variable.
7+
# To disable: delete this file or leave BOJ_SERVER_URL unset.
28
name: BoJ Server Build Trigger
9+
310
on:
411
push:
512
branches: [main, master]
613
workflow_dispatch:
14+
15+
permissions:
16+
contents: read
17+
718
jobs:
819
trigger-boj:
920
runs-on: ubuntu-latest
21+
if: ${{ vars.BOJ_SERVER_URL != '' || secrets.BOJ_SERVER_URL != '' }}
1022
steps:
1123
- name: Checkout
12-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
24+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
25+
1326
- name: Trigger BoJ Server (Casket/ssg-mcp)
27+
env:
28+
BOJ_URL: ${{ secrets.BOJ_SERVER_URL || vars.BOJ_SERVER_URL }}
29+
REPO_NAME: ${{ github.repository }}
30+
BRANCH_NAME: ${{ github.ref_name }}
1431
run: |
15-
# Send a secure trigger to boj-server to build this repository
16-
curl -X POST "http://boj-server.local:7700/cartridges/ssg-mcp/invoke" -H "Content-Type: application/json" -d "{\"repo\": \"${{ github.repository }}\", \"branch\": \"${{ github.ref_name }}\", \"engine\": \"casket\\"}"}
17-
continue-on-error: true
18-
permissions:
19-
contents: read
32+
set -euo pipefail
33+
34+
if [ -z "$BOJ_URL" ]; then
35+
echo "BOJ_SERVER_URL not configured - skipping"
36+
exit 0
37+
fi
38+
39+
payload="$(jq -cn \
40+
--arg repo "$REPO_NAME" \
41+
--arg branch "$BRANCH_NAME" \
42+
--arg engine "casket" \
43+
'{repo:$repo, branch:$branch, engine:$engine}')"
44+
45+
curl -sf -X POST "${BOJ_URL}/cartridges/ssg-mcp/invoke" \
46+
-H "Content-Type: application/json" \
47+
--data "$payload" \
48+
|| echo "BoJ server unreachable - skipping (non-fatal)"

.github/workflows/casket-pages.yml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ jobs:
4949

5050
- name: Prepare site source
5151
shell: bash
52+
env:
53+
REPO_NAME: ${{ github.event.repository.name }}
54+
REPO_FULL_NAME: ${{ github.repository }}
55+
BRANCH_NAME: ${{ github.ref_name }}
5256
run: |
5357
set -euo pipefail
5458
rm -rf .site-src _site
@@ -58,14 +62,14 @@ jobs:
5862
else
5963
mkdir -p .site-src
6064
TODAY="$(date +%Y-%m-%d)"
61-
REPO_NAME="${{ github.event.repository.name }}"
62-
REPO_URL="https://github.com/${{ github.repository }}"
65+
REPO_NAME="${REPO_NAME}"
66+
REPO_URL="https://github.com/${REPO_FULL_NAME}"
6367
README_URL=""
6468
6569
if [ -f README.md ]; then
66-
README_URL="${REPO_URL}/blob/${{ github.ref_name }}/README.md"
70+
README_URL="${REPO_URL}/blob/${BRANCH_NAME}/README.md"
6771
elif [ -f README.adoc ]; then
68-
README_URL="${REPO_URL}/blob/${{ github.ref_name }}/README.adoc"
72+
README_URL="${REPO_URL}/blob/${BRANCH_NAME}/README.adoc"
6973
fi
7074
7175
{
@@ -78,12 +82,12 @@ jobs:
7882
echo
7983
echo "Static documentation site for ${REPO_NAME}."
8084
echo
81-
echo "- Source repository: [${{ github.repository }}](${REPO_URL})"
85+
echo "- Source repository: [${REPO_FULL_NAME}](${REPO_URL})"
8286
if [ -n "${README_URL}" ]; then
8387
echo "- README: [project README](${README_URL})"
8488
fi
8589
if [ -d docs ]; then
86-
echo "- Docs directory: [docs/](${REPO_URL}/tree/${{ github.ref_name }}/docs)"
90+
echo "- Docs directory: [docs/](${REPO_URL}/tree/${BRANCH_NAME}/docs)"
8791
fi
8892
echo
8993
echo "Project-specific site content can be added later under site/."

.github/workflows/dogfood-gate.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
3939
- name: Validate A2ML manifests
4040
if: steps.detect.outputs.count > 0
41-
uses: hyperpolymath/a2ml-validate-action@main
41+
uses: hyperpolymath/a2ml-validate-action@cb3c1e298169dc5ac2b42e257068b0fb5920cd5e # main
4242
with:
4343
path: '.'
4444
strict: 'false'
@@ -86,7 +86,7 @@ jobs:
8686
8787
- name: Validate K9 contracts
8888
if: steps.detect.outputs.k9_count > 0
89-
uses: hyperpolymath/k9-validate-action@main
89+
uses: hyperpolymath/k9-validate-action@236f0035cc159051c8dd5dc7cd8af1e8cf961462 # main
9090
with:
9191
path: '.'
9292
strict: 'false'

.github/workflows/instant-sync.yml

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,35 @@ jobs:
3030
}
3131
3232
- name: Confirm
33-
run: echo "::notice::Propagation triggered for ${{ github.event.repository.name }}"
33+
env:
34+
REPO_NAME: ${{ github.event.repository.name }}
35+
run: echo "::notice::Propagation triggered for ${REPO_NAME}"
36+
37+
- name: K9-SVC Validation
38+
run: |
39+
echo "Running K9-SVC contractile validation..."
40+
if [ -f .machine_readable/contractiles/must/Mustfile.a2ml ]; then
41+
echo "✅ Mustfile found - running validation"
42+
# Placeholder for actual K9 validation
43+
echo "K9 validation would run here"
44+
else
45+
echo "❌ Mustfile not found"
46+
exit 1
47+
fi
48+
49+
- name: Contractile Check
50+
run: |
51+
echo "Checking contractile completeness..."
52+
contractiles=("must" "trust" "dust" "lust" "adjust" "intend")
53+
missing=0
54+
for c in "${contractiles[@]}"; do
55+
if [ ! -f ".machine_readable/contractiles/$c/${c^}file.a2ml" ]; then
56+
echo "❌ Missing: $c"
57+
missing=$((missing + 1))
58+
fi
59+
done
60+
if [ $missing -gt 0 ]; then
61+
echo "❌ $missing contractiles missing"
62+
exit 1
63+
fi
64+
echo "✅ All contractiles present"
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
= Contractiles Template Set
2+
:toc:
3+
:sectnums:
4+
5+
This directory contains the generalized contractiles templates. Copy the `.machine_readable/contractiles/` directory into a new repo to establish a consistent operational, validation, trust, recovery, and intent framework.
6+
7+
== Fill-In Instructions
8+
9+
1. Update the Mustfile to reflect your real invariants (paths, schema versions, ports).
10+
2. Replace Trustfile.hs placeholders with your actual key paths and verification commands.
11+
3. Adjust Dustfile handlers to match your rollback and recovery tooling.
12+
4. Update Intentfile to mirror the roadmap you want the system to evolve toward.
13+
14+
== Contents
15+
16+
* `must/Mustfile` - required invariants and validations.
17+
* `trust/Trustfile.hs` - cryptographic verification steps.
18+
* `dust/Dustfile` - rollback and recovery semantics.
19+
* `lust/Intentfile` - future intent and roadmap direction.
Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
# Adjustfile — Accessibility Contract for Burble
3+
# Author: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
#
5+
# Accessibility requirements and compliance for Burble.
6+
# Voice-first design must be inclusive for all users.
7+
#
8+
# Run with: adjust check
9+
# Fix with: adjust fix (where deterministic fix exists)
10+
11+
@abstract:
12+
Accessibility requirements and compliance for the Burble voice-first communications platform.
13+
These requirements ensure Burble is usable by everyone, regardless of ability.
14+
@end
15+
16+
## Keyboard Accessibility
17+
18+
### keyboard-navigation
19+
- description: All features accessible via keyboard
20+
- status: partial
21+
- probe: test -f server/lib/burble/accessibility/keyboard.ex
22+
- compliance: WCAG 2.1 AA
23+
- notes: Basic navigation implemented. Full keyboard-only flow needed.
24+
- fix: Port PanLL's comprehensive keyboard navigation system
25+
26+
### custom-keybindings
27+
- description: User-configurable keybindings
28+
- status: implemented
29+
- probe: test -f server/lib/burble/accessibility/keyboard.ex
30+
- compliance: WCAG 2.1 AAA
31+
- notes: Users can remap PTT, mute, deafen, volume, and room navigation keys
32+
33+
### keyboard-shortcuts-discoverable
34+
- description: Keyboard shortcuts are documented and discoverable
35+
- status: missing
36+
- compliance: WCAG 2.1 A
37+
- fix: Add keyboard shortcuts help modal in web client
38+
39+
## Visual Accessibility
40+
41+
### high-contrast-mode
42+
- description: High contrast UI theme
43+
- status: missing
44+
- compliance: WCAG 2.1 AA
45+
- fix: Port PanLL's high-contrast theme system
46+
- target: CSS variables for contrast ratios >= 4.5:1
47+
48+
### colorblind-support
49+
- description: Colorblind-friendly color schemes
50+
- status: missing
51+
- compliance: WCAG 2.1 AA
52+
- fix: Implement deuteranopia, protanopia, and tritanopia palettes
53+
- reference: PanLL's palette system
54+
55+
### font-size-adjustment
56+
- description: Resizable UI fonts (4 levels: 14-20px)
57+
- status: missing
58+
- compliance: WCAG 2.1 AA
59+
- fix: Port PanLL's font size adjustment system
60+
- target: User preference persists across sessions
61+
62+
### theme-switching
63+
- description: Dark/Light/System theme support
64+
- status: missing
65+
- compliance: WCAG 2.1 AA
66+
- fix: Port PanLL's theme system
67+
- target: Respects OS preference, user override
68+
69+
## Auditory Accessibility
70+
71+
### screen-reader-support
72+
- description: Full screen reader compatibility
73+
- status: partial
74+
- probe: test -f server/lib/burble/accessibility/screen_reader.ex
75+
- compliance: WCAG 2.1 AA
76+
- notes: Basic announcements implemented. Needs ARIA attributes and live regions.
77+
- fix: Complete ARIA implementation in web client
78+
79+
### closed-captions
80+
- description: Real-time captioning for voice chat
81+
- status: missing
82+
- compliance: WCAG 2.1 AA
83+
- notes: Requires Web Speech API or external STT integration
84+
- target: 90%+ accuracy for English, configurable display
85+
86+
### visual-notifications
87+
- description: Visual indicators for audio events
88+
- status: missing
89+
- compliance: WCAG 2.1 A
90+
- notes: Speaking indicators, mute status, connection status
91+
- fix: Add visual cues that duplicate audio information
92+
93+
### volume-normalization
94+
- description: Consistent volume levels across users
95+
- status: missing
96+
- compliance: WCAG 2.1 AA
97+
- notes: Prevents sudden loud sounds for sensitive users
98+
- target: -23 LUFS normalization per EBU R128
99+
100+
## Motor Accessibility
101+
102+
### voice-commands
103+
- description: Voice-controlled interface
104+
- status: missing
105+
- compliance: WCAG 2.1 AAA
106+
- notes: "Mute", "Deafen", "Join room X", "Volume up/down"
107+
- target: Web Speech API with fallback to keyboard
108+
109+
### reduced-motion
110+
- description: Reduced animation options
111+
- status: missing
112+
- compliance: WCAG 2.1 AA
113+
- fix: Port PanLL's animation control (on/reduced/off)
114+
- target: Respects prefers-reduced-motion media query
115+
116+
### hover-alternatives
117+
- description: All hover interactions have click alternatives
118+
- status: partial
119+
- compliance: WCAG 2.1 AA
120+
- notes: Some hover tooltips need click-to-show option
121+
- fix: Audit and add click alternatives
122+
123+
## Cognitive Accessibility
124+
125+
### clear-language
126+
- description: Simple, consistent terminology
127+
- status: partial
128+
- compliance: WCAG 2.1 AAA
129+
- notes: Technical terms need plain language explanations
130+
- fix: Add tooltips/glossary for jargon
131+
132+
### predictable-navigation
133+
- description: Consistent navigation patterns
134+
- status: partial
135+
- compliance: WCAG 2.1 AA
136+
- notes: Navigation structure varies between pages
137+
- fix: Standardize navigation layout
138+
139+
### error-prevention
140+
- description: Confirmation for destructive actions
141+
- status: partial
142+
- compliance: WCAG 2.1 AA
143+
- notes: Room deletion has confirmation, others may not
144+
- fix: Audit all destructive actions
145+
146+
### help-availability
147+
- description: Context-sensitive help always available
148+
- status: missing
149+
- compliance: WCAG 2.1 AAA
150+
- notes: No persistent help system
151+
- fix: Add help button with contextual guidance
152+
153+
## Compliance Targets
154+
155+
### wcag-2.1-aa
156+
- description: WCAG 2.1 AA compliance
157+
- status: partial
158+
- target: Full compliance by Q4 2026
159+
- tracking: https://github.com/hyperpolymath/burble/issues/XXX
160+
161+
### section-508
162+
- description: U.S. Section 508 compliance
163+
- status: partial
164+
- target: Full compliance by Q4 2026
165+
- notes: Aligns with WCAG 2.1 AA for most requirements
166+
167+
### en-301-549
168+
- description: EU EN 301 549 compliance
169+
- status: partial
170+
- target: Full compliance by Q4 2026
171+
- notes: EU public sector procurement requirement
172+
173+
## Integration Requirements
174+
175+
### panll-accessibility-port
176+
- description: Port PanLL's accessibility engine to Burble
177+
- status: planned
178+
- reference: /var/mnt/eclipse/repos/panll/tests/accessibility_engine_test.js
179+
- target: Q2 2026
180+
181+
### k9-accessibility-validator
182+
- description: Integrate K9 accessibility validator
183+
- status: planned
184+
- reference: /var/mnt/eclipse/repos/panll/contractiles/k9/validators/accessibility-baseline.k9.ncl
185+
- target: Q2 2026
186+
187+
### accessibility-testing
188+
- description: Add accessibility tests to CI/CD
189+
- status: planned
190+
- target: pa11y or axe-core integration
191+
- compliance: Automated WCAG testing
192+
193+
## Documentation Requirements
194+
195+
### accessibility-guide
196+
- description: User-facing accessibility guide
197+
- status: missing
198+
- target: docs/accessibility/USER-GUIDE.adoc
199+
- notes: Keyboard shortcuts, screen reader setup, theme switching
200+
201+
### developer-accessibility
202+
- description: Developer accessibility guidelines
203+
- status: missing
204+
- target: docs/accessibility/DEVELOPER.adoc
205+
- notes: Coding standards, testing requirements, compliance checklist
206+
207+
### compliance-report
208+
- description: Accessibility compliance report
209+
- status: missing
210+
- target: docs/compliance/ACCESSIBILITY.adoc
211+
- notes: VPAT (Voluntary Product Accessibility Template)

0 commit comments

Comments
 (0)