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]>
69 lines
9.4 KiB
Markdown
69 lines
9.4 KiB
Markdown
# AAC
|
||
|
||
A carrier for voice. A communication board is a signed, portable file — every symbol, every language, every access method — that speaks on any device, offline, owned by no one.
|
||
|
||
AAC is the **communication cargo class** of the Transaction Science substrate. Where [Smart Byte](../smart-byte/) carries value, [EOC](../eoc/) carries compute, [Map](../map/) carries place, and [Joule Code](../joule-code/) carries coding work, AAC carries **utterance** — what a non-speaking person means to say — as a content-addressed, portable **board** with its access model and its energy cost intrinsic.
|
||
|
||
Augmentative and alternative communication is the assistive technology that gives a voice to people who cannot rely on speech: children and adults with autism, cerebral palsy, ALS, stroke, apraxia, Rett syndrome, and many other conditions. A board is a grid (or a visual scene, or a keyboard) of cells; selecting cells composes an utterance; the device speaks it. The selecting can be done by touch, by a single switch scanned across the grid, by where the eyes rest, by a head pointer, by a joystick — whatever motor channel a person has.
|
||
|
||
A board in this standard is not an app's private save file and not a vendor API response. It carries exactly what a voice needs to survive moving between devices: identity (a content address over its canonical serialization), a layout (cells placed once and **locked**, so muscle memory is never invalidated), symbols (referenced by source and stable id, not baked-in pixels), an access model (the method, timing, and calibration the user relies on), language (a graph edge, so a bilingual user code-switches by traversal), and a two-part joule cost on every operation — for transparency, **never billing**. Communication resolves through an explicit **energy-tiered cascade**: the overwhelming majority of utterances are cache hits and on-device lookups that never touch a network, and richer help (context-aware prediction, sentence construction, voice cloning) is reached only when something cheaper cannot close the request.
|
||
|
||
The substrate is intentionally **ownerless**: no protocol-level token, permissive licensing on the spec text and reference code, and conformance vectors so any implementer can verify canonicity without a trust relationship with the authors. A conforming client opens a board, renders it, drives it with the user's access method, predicts on-device, and speaks — against local storage, with no contact with any company's servers as a condition of operation. Transaction Science is one steward: it publishes the spec, ships the reference implementation, and operates optional commercial services (hosted symbol libraries, voice banking, team coordination) around the substrate — not its proprietor.
|
||
|
||
## The doctrine
|
||
|
||
**A voice is a file, not a subscription.** The durable layer of a communication system is not the app and not a recurring charge — a person's ability to speak must not lapse when a payment does. It is the **portable, self-describing board** that renders and speaks forever from dumb storage, on any device the user already owns.
|
||
|
||
Seven principles, normative in [`SPEC.md`](SPEC.md):
|
||
|
||
1. **Free forever.** No billing, no tiers, no balance, no in-app purchase. Every cascade level is free at the protocol layer. A conforming implementation never gates communication behind payment.
|
||
2. **Offline first.** Levels L0–L2 — cache, symbol lookup, local prediction — run entirely on-device and carry 95%+ of communication. A network drop never silences a user.
|
||
3. **Motor stability.** Cells are placed once and locked. Symbols do not move; layouts do not reflow. The user's motor plan is sacred — a board that rearranges itself has destroyed the thing that made it usable.
|
||
4. **Every access method.** Touch, switch scanning (1- and 2-switch, row-column, group, linear), dwell/eye-gaze, head tracking, joystick, partial voice. No method is an afterthought; each is a first-class input in the same model.
|
||
5. **Every language.** Multilingual is a graph edge, not a separate app. Code-switching is traversal. RTL, CJK, Indic, and Arabic scripts are first-class.
|
||
6. **Open interchange.** A board exports to and ingests from the open interchange format. A user brings their existing boards in and takes everything with them when they leave. No lock-in — ever.
|
||
7. **The receipt.** Every operation reports a two-part energy cost in microjoules with an honest provenance tag. The cost is shown for transparency and is **never** converted into a charge.
|
||
|
||
## The cascade
|
||
|
||
AAC's organizing primitive is the **energy-tiered cascade** — ten levels, each an order of magnitude costlier than the last, each reached only when nothing cheaper closes the request:
|
||
|
||
| Level | Name | Typical op | Energy | Offline |
|
||
|-------|------|-----------|--------|---------|
|
||
| L0 | Cache hit | recently-used phrase, pinned message, motor-planned sequence | ~1 µJ | ✅ |
|
||
| L1 | Symbol lookup | core vocabulary retrieval, symbol-set search | ~10 µJ | ✅ |
|
||
| L2 | Local prediction | on-device word/phrase n-gram completion | ~100 µJ | ✅ |
|
||
| L3 | Context prediction | time / place / partner / activity-aware prediction | ~1 mJ | — |
|
||
| L4 | Semantic expansion | novel sentence construction from partial input | ~10 mJ | — |
|
||
| L5 | Conversation AI | conversation repair, social scripts, pragmatics | ~100 mJ | — |
|
||
| L6 | Generative communication | letters, posts, longer narratives | ~1 J | — |
|
||
| L7 | Voice clone | personal-voice synthesis from recordings | ~5 J | — |
|
||
| L8 | Multimodal generation | custom symbol / visual-scene synthesis | ~10 J | — |
|
||
| L9 | Adaptive model | retrain the user's prediction model | ~15 J | — |
|
||
|
||
The boundary at L2/L3 is normative: **exactly** L0–L2 are offline-capable, and a conforming client serves them with no network. Everything above is enrichment, never a dependency.
|
||
|
||
## Open interchange
|
||
|
||
A user's years of customization — added words, custom symbols, personal phrases, the exact layout their muscle memory has learned — are the most valuable and least portable thing in assistive technology. AAC makes interchange a property of the standard: a board serializes to a canonical, self-describing form, and the reference engine **ingests** the open board interchange format and other community exports so a user never starts over when moving in, and never loses anything when moving on. Ingestion is one-directional and additive — the standard reads existing work into the substrate; it does not compete with the tools that produced it.
|
||
|
||
## Contents
|
||
|
||
- [`SPEC.md`](SPEC.md) — the normative specification (RFC 2119): the board / cell / symbol data model, the access-method abstraction, canonical serialization, the cascade and its offline invariant, the interchange format, and the receipt.
|
||
- [`spec/`](spec/) — sub-specifications: the [board data model](spec/board.md), the [motor-stability invariant](spec/motor_stability.md), the [access model](spec/access_model.md), the [communication cascade](spec/cascade.md), [interchange](spec/interchange.md), and the [receipt](spec/receipt.md).
|
||
- [`vocab/`](vocab/) — the controlled vocabulary ([`LEXICON.md`](vocab/LEXICON.md)) and stable IRIs: the OWL ontology ([`v1.ttl`](vocab/v1.ttl)), the JSON-LD 1.1 context ([`v1.jsonld`](vocab/v1.jsonld)), and SHACL shapes ([`v1.shapes.ttl`](vocab/v1.shapes.ttl)). Namespace `https://aac.transaction.science/vocab/v1#`.
|
||
- [`conformance/`](conformance/) — published vectors. An implementation is conformant if it reproduces them.
|
||
- [`aac-rs/`](aac-rs/) — the Rust reference: `aac-core` (the engine — boards, symbols, vocabulary, motor planning, scanning, dwell, prediction, i18n, interchange), `aac-web` (a reference communication app built on Leptos), and `aac-conformance` (the harness).
|
||
|
||
## Reference implementation and demonstrator
|
||
|
||
The Rust reference lives in [`aac-rs/`](aac-rs/). `aac-core` is the engine a third party implements against — platform-agnostic, dependency-light, no UI. The **demonstrator** is [aac.transaction.science](https://aac.transaction.science): a free communication app (Rust → WASM, offline-first PWA) that consumes `aac-core` and renders grid boards, switch scanning, dwell selection, gamepad and eye-tracking input, on-device prediction, and system / banked-voice speech. The demonstrator is a *demonstration of the standard* — free forever, every access method — not a product to be sold.
|
||
|
||
## Status
|
||
|
||
**v0.1.0 draft.** Reference engine ported and building: `aac-core` (22 modules — boards, symbols, vocabulary, motor planning, switch scanning, dwell, prediction, context, history, multilingual, accessibility, partner tools, analytics, the cascade router, the store, interchange import/export), `aac-web` (the Leptos reference app), and the `aac-conformance` harness (cascade routing, energy monotonicity, the offline invariant, and wire round-trips). `cargo test` and `cargo clippy --all-targets` are green on the engine and the harness. The reference app builds end-to-end through `cargo leptos build --release` — both the WASM client (`aac-web.wasm`, ~3 MB) and the SSR server binary — and boots: it serves the app shell and the offline-first PWA assets. Specification core published in `SPEC.md` and `spec/`, with the controlled vocabulary and stable IRIs in `vocab/`. Not a medical device; not certified as a speech-generating device (SGD) for insurance funding (see SPEC §11).
|
||
|
||
## Licence
|
||
|
||
- Reference code (`aac-rs/`): Apache-2.0 — see [`LICENSE`](LICENSE).
|
||
- Specification text (`SPEC.md`, `spec/`, `vocab/`): CC-BY-4.0 — see [`LICENSE-SPEC`](LICENSE-SPEC).
|