Skip to content

Commit 412c0fc

Browse files
chore: machine-readable + contractile currency checkpoint (#288)
## Machine-readable / contractile currency checkpoint Part of the estate-wide machine-readable currency pass. **High-confidence canonical fixes only**; template-shaped work deferred to a tracking issue; **license = flag-only**. No `formal/` edits (owner directive respected). ### Changes - `agent_instructions/` → `bot_directives/` rename (methodology layer); doc refs fixed - **De-rotted contractiles**: `must/`, `dust/`, `adjust/` xfiles were **wholesale Burble copies** (Elixir server, TURN, 212 lines of voice-platform WCAG). Rewritten as real ephapax contracts (Rust workspace + Coq/Idris metatheory). - Adds an ephapax-specific invariant: **`legacy-preservation-stays-admitted`** — `Theorem preservation` in `Semantics.v` MUST stay `Admitted` (owner directive 2026-05-27; it is provably false and `Counterexample.v` depends on that) - `adjust` honestly scoped to docs + diagnostics (a compiler core has no GUI surface) - Filled `svc/k9` (3 trust-tier templates + README); added `contractiles/k9/` (resolves `adjust`/`intend` k9 imports) ### Validation (run, not eyeballed) - `nickel typecheck` clean on all pure `.ncl` - **Critical Mustfile probes executed against the tree — all pass**, incl. `legacy-preservation-admitted` (`grep -q Admitted formal/Semantics.v` ✓) ### Deferred → tracking issue - k9.ncl + manifest tridents for must/trust/bust/dust; **dual ANCHOR** (`6a2/ANCHOR.a2ml` + `anchors/ANCHOR.a2ml`) — needs placement normalization; **`bot_directives` naming collision** (methodology layer vs gitbot-fleet directives); per-bot directives (hypatia/gitbot-fleet/.git-private-farm); **1 `believe_me` in Idris** to drive to zero; license review; wiki refresh ### Root cause Frozen `RSR-SPEC.adoc` v1.0.0 (2025-12-27) never bumped for post-2026-04 policy. Owner: cut RSR-SPEC v1.1/v2.0 + re-sync `rsr-template-repo`. https://claude.ai/code/session_01PhqGcxCqkMdJtR6NWq56Hx --- _Generated by [Claude Code](https://claude.ai/code/session_01PhqGcxCqkMdJtR6NWq56Hx)_ Signed-off-by: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
1 parent 6102a35 commit 412c0fc

16 files changed

Lines changed: 864 additions & 305 deletions

.machine_readable/agent_instructions/README.adoc renamed to .machine_readable/bot_directives/README.adoc

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
// SPDX-License-Identifier: MPL-2.0
22
// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3-
= Agent Instructions
3+
= Bot Directives
44
:toc: preamble
55

6-
Methodology-aware configuration for AI agents. Read by any AI agent
7-
(Claude, Gemini, Copilot, etc.) at session start.
6+
Methodology-aware configuration for AI agents and bots. Read by any AI
7+
agent (Claude, Gemini, Copilot, etc.) or estate bot at session start.
8+
9+
NOTE: This directory was renamed `agent_instructions/` -> `bot_directives/`
10+
to align with the estate-wide naming convention. Contents (methodology,
11+
coverage, debt, lessons) are unchanged.
812

913
== Files
1014

@@ -32,8 +36,8 @@ Methodology-aware configuration for AI agents. Read by any AI agent
3236
== Relationship to Other Files
3337

3438
* `AGENTIC.a2ml` says WHAT agents can do (permissions, gating)
35-
* `agent_instructions/` says HOW agents should work (methodology)
36-
* `bot_directives/` says what the gitbot-fleet does (fleet-specific)
39+
* This directory (`bot_directives/`) says HOW agents should work — methodology, coverage, debt (the renamed methodology layer)
40+
* Per-bot fleet directives (hypatia, gitbot-fleet, .git-private-farm) are not yet populated — they will be added here as named files (deferred; see issue)
3741
* `CLAUDE.md` says how Claude specifically should work (Claude-specific)
3842

3943
== Reference
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Lines changed: 33 additions & 189 deletions
Original file line numberDiff line numberDiff line change
@@ -1,211 +1,55 @@
11
# SPDX-License-Identifier: MPL-2.0
2-
# Adjustfile — Accessibility Contract for Burble
2+
# Adjustfile — Accessibility / drift-tolerance contract for Ephapax
33
# Author: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
44
#
5-
# Accessibility requirements and compliance for Burble.
6-
# Voice-first design must be inclusive for all users.
7-
#
85
# Run with: adjust check
96
# Fix with: adjust fix (where deterministic fix exists)
107

118
@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.
9+
Ephapax is a language toolchain (Rust compiler + mechanised metatheory), not a
10+
GUI application — so conventional WCAG *UI* accessibility largely does not apply.
11+
This contract deliberately scopes "accessibility" to the surfaces ephapax does
12+
expose to humans: compiler diagnostics, documentation, and CLI ergonomics.
13+
Advisory (continue-with-warnings), not a hard gate.
1414
@end
1515

16-
## Keyboard Accessibility
16+
## Documentation Accessibility
1717

18-
### keyboard-navigation
19-
- description: All features accessible via keyboard
18+
### docs-semantic-asciidoc
19+
- description: Documentation uses semantic AsciiDoc (heading order, image alt text) for screen-reader/navigation friendliness
2020
- 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
21+
- compliance: WCAG 2.1 AA (documents)
22+
- notes: docs/ is AsciiDoc; audit for alt text and heading order.
6823

69-
## Auditory Accessibility
70-
71-
### screen-reader-support
72-
- description: Full screen reader compatibility
24+
### readme-plain-language-summary
25+
- description: README opens with a plain-language summary before substructural-logic notation
7326
- 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
27+
- notes: Linear/affine notation should be preceded by prose intent for non-specialist readers.
9928

100-
## Motor Accessibility
29+
## Diagnostic Clarity (compiler accessibility)
10130

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
31+
### error-messages-actionable
32+
- description: Type/borrow errors name the offending region/modality and suggest a remedy
11833
- 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
34+
- notes: Four-layer (L1–L4) errors should state in plain terms which layer failed (region capability / modality / echo residue / dyadic mode).
12235

123-
## Cognitive Accessibility
36+
### no-bare-panic-diagnostics
37+
- description: User-facing failures are structured diagnostics, not raw Rust panics
38+
- status: declared
39+
- probe: test -d src/ephapax-typing
40+
- notes: Track panics reaching the CLI surface; convert to diagnostics.
12441

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
42+
## CLI Ergonomics
13143

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
44+
### cli-help-available
45+
- description: The ephapax CLI exposes --help with usage
46+
- status: declared
47+
- notes: Verified in CI via `ephapax --help`; crate-presence proxy here.
13848

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
49+
## Compliance Posture
16650

167-
### en-301-549
168-
- description: EU EN 301 549 compliance
51+
### wcag-scope-statement
52+
- description: Accessibility scope (docs + diagnostics, not GUI) is documented so "N/A" never drifts silently
16953
- 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)
54+
- target: docs/accessibility/SCOPE.adoc
55+
- notes: A compiler core has no GUI surface; an explicit scope statement prevents false-N/A drift.
Lines changed: 26 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
# SPDX-License-Identifier: MPL-2.0
2-
# Dustfile — Cleanup and hygiene contract for Burble
2+
# Dustfile — Cleanup and hygiene contract for Ephapax
33
# Author: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
44
#
55
# What should be cleaned up. Housekeeping, not blockers.
66
# Run with: dust status
77
# Roll back with: dust rollback <name>
88

99
@abstract:
10-
Cleanup and hygiene items for the Burble voice platform.
11-
These are maintenance tasks — not blocking, but should be addressed.
10+
Cleanup and hygiene items for Ephapax. Maintenance tasks — not blocking, but
11+
should be addressed. Destructive actions are dry-run by default and gated
12+
behind --apply with per-item approval.
1213
@end
1314

1415
## Stale Files
@@ -19,60 +20,40 @@ These are maintenance tasks — not blocking, but should be addressed.
1920
- severity: info
2021

2122
### no-ai-djot
22-
- description: AI.djot is superseded by 0-AI-MANIFEST.a2ml
23+
- description: AI.djot superseded by 0-AI-MANIFEST.a2ml
2324
- run: test ! -f AI.djot
2425
- severity: warning
2526

26-
### no-next-steps
27-
- description: NEXT_STEPS.md superseded by ROADMAP
28-
- run: test ! -f NEXT_STEPS.md
29-
- severity: info
27+
### no-lust-dir
28+
- description: The lust/ contractile verb was removed estate-wide 2026-04-18 (semantics absorbed into intend)
29+
- run: test ! -d .machine_readable/contractiles/lust
30+
- severity: warning
31+
- notes: Any lust/ dir is drift; horizon/aspiration semantics live in intend now.
3032

3133
## Build Artifacts
3234

33-
### no-tracked-elixir-build
34-
- description: No Elixir build artifacts tracked in git
35-
- run: test -z "$(git ls-files server/_build/ server/deps/ 2>/dev/null)"
36-
- severity: warning
37-
38-
### no-tracked-rescript-build
39-
- description: No ReScript build artifacts tracked in git
40-
- run: test -z "$(git ls-files 'client/web/src/**/*.res.mjs' client/web/lib/ 2>/dev/null)"
35+
### no-tracked-rust-build
36+
- description: No Rust build artifacts tracked in git
37+
- run: test -z "$(git ls-files 'target/' '**/target/' 2>/dev/null)"
4138
- severity: warning
4239

43-
## Burble-Specific Cleanup
44-
45-
### stale-room-processes
46-
- description: Room processes should auto-terminate after idle timeout
47-
- verification: Burble.Rooms.Room uses @idle_timeout_ms (5 minutes)
48-
- severity: info
49-
- notes: Not a file check — design verification that idle rooms are cleaned up
50-
51-
### expired-invite-tokens
52-
- description: Expired invite tokens should be purged periodically
53-
- verification: Scheduled task purges tokens past expires_at
54-
- severity: info
55-
- notes: Planned — not yet implemented
56-
57-
### orphaned-turn-credentials
58-
- description: TURN credentials expire after 1 hour
59-
- verification: Burble.Media.Privacy.generate_turn_credential sets TTL
60-
- severity: info
40+
## Duplicates
6141

62-
### template-example-trustfile
63-
- description: Remove the example Trustfile (keep only the real one)
64-
- run: test ! -f .machine_readable/contractiles/trust/Trustfile_just_an_example.a2ml
42+
### single-contributing-format
43+
- description: Prefer a single CONTRIBUTING (DOC-FORMAT prefers .adoc; .md is the GitHub community-health exception)
44+
- run: test -z "$(test -f CONTRIBUTING.adoc && test -f CONTRIBUTING.md && echo dup)"
6545
- severity: info
66-
- rollback: git checkout HEAD -- .machine_readable/contractiles/trust/Trustfile_just_an_example.a2ml
67-
68-
## Format Duplicates
69-
70-
### no-duplicate-contributing
71-
- description: Only one CONTRIBUTING format
72-
- run: test -z "$(test -f CONTRIBUTING.md && test -f CONTRIBUTING.adoc && echo dup)"
73-
- severity: warning
46+
- notes: Both CONTRIBUTING.adoc and CONTRIBUTING.md currently exist (2026-06-05); owner decides which to retire.
7447

7548
### no-duplicate-readme
7649
- description: Only one README format
7750
- run: test ! -f README.md || test ! -f README.adoc
7851
- severity: warning
52+
53+
## Formal Archive Hygiene
54+
55+
### preservation-design-is-canonical
56+
- description: PRESERVATION-DESIGN.md is the canonical design; PRESERVATION-HANDOFF.md is historical diagnostic only
57+
- run: test -f formal/PRESERVATION-DESIGN.md
58+
- severity: info
59+
- notes: HANDOFF carries the pre-discovery record; do not act on it as instructions. Keep both.

0 commit comments

Comments
 (0)