open-standards/aac/spec/access_model.md
Transaction Science ba1212361f Add aac, map, sandbox standards; catalog the standards family
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]>
2026-06-07 17:04:36 -04:00

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.