Commit the previously-untracked standard directories and catalog them in the
root README alongside proof:
- aac/ — communication cargo class: portable boards + a ten-level
offline-first cascade (Apache-2.0 code / CC-BY-4.0 spec).
- map/ — geospatial cargo class: range-requestable signed tilesets +
an F0–F4 fidelity cascade (Apache-2.0 code / CC-BY-4.0 spec).
- sandbox/— isolated, metered, attested execution across the heterogeneous
compute fabric (Apache-2.0 code / CC-BY-4.0 spec).
- jouleclaw-otel-authz, jouleclaw-trust — new jouleclaw reference crates.
Root README now lists aac, map, sandbox, and proof in the catalog, the tree,
and the contribution guide.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
2.5 KiB
AAC sub-spec — The access model
Normative refinement of SPEC §5. Reference: aac_core::{AccessMethod, MotorProfile, ScanConfig, ScanMode, DwellConfig}.
Every access method is a first-class input. The method and its tuning travel with the user, not the board: a board authored for eye-gaze MUST still open under touch or a switch (SPEC §5.3).
1. Access method — AccessMethod
DirectTouch (default) · EyeGaze · HeadTracking · SwitchScan { switches: u8 } · Joystick · Bci · PartialVoice · Pointer. SwitchScan carries the number of switches available (1, 2, or more); a 1-switch user relies on auto-scan timing, a 2-switch user steps and selects manually.
2. Motor profile — MotorProfile
The user's physical capabilities, used to adapt targets and timing: fine_motor and sustained_press (Full | Limited | None), tremor_level (None | Mild | Moderate | Severe), min_target_mm: f32, optional max_reach_mm, and preferred_side. A client SHOULD derive target size and dwell/scan timing from this profile and MUST NOT render a target smaller than min_target_mm.
3. Switch scanning — ScanConfig
A conforming scanner MUST support at minimum the Linear, RowColumn, and Group modes of ScanMode (also defined: Block, and inverse scanning). It MUST honor:
scan_rate_ms— highlight dwell per step;start_delay_ms— delay before auto-scan begins after a press;max_cycles— complete cycles before stopping (0= infinite);auto_restart— whether scanning restarts after a selection.
If adaptive_rate is enabled, the adapted rate MUST stay within an explicit [min, max] bound (the reference clamps to [300, 5000] ms). Adaptation MUST never produce a rate outside the bound, however the user's responses trend.
4. Dwell / eye-gaze — DwellConfig
Gaze selection MUST use a configurable base_dwell_ms with visible progress feedback (DwellFeedback), a tolerance_px radius within which gaze may wander without resetting, and — where fatigue_adaptation is enabled — an effective_dwell_ms that grows toward but never exceeds max_dwell_ms. A selection MUST NOT fire before the effective dwell elapses.
5. Universality
No access method MAY be a precondition for opening or reading a board (SPEC §5.3). Selection of an access method for a given person is a clinical decision (SPEC §11); the standard guarantees only that whichever method is chosen is a first-class, fully-specified input — never a bolt-on.