Mobile architecture decision records¶
The ten binding decisions for the YazSes mobile programme. They are public on purpose: the Android app is being built by contributors, and you cannot contribute to an architecture you are not allowed to read. Every one of them follows the same shape — Context, Decision, Consequences, Rejected — and the Rejected section is usually the most useful part, because it tells you which arguments have already been had.
| ADR | Title | Status |
|---|---|---|
| MOB-001 | Mobile is a first-class port, Android first, in this repository | Accepted |
| MOB-002 | Native Kotlin + Compose, pure-Kotlin cores, no cross-platform runtime | Accepted |
| MOB-003 | Text delivery: IME first, RecognitionService second, share/clipboard fallback | Accepted |
| MOB-004 | Activation: hold the mic key, with a hold/toggle accessibility switch | Accepted |
| MOB-005 | STT runtime: an engine seam, whisper.cpp default, sherpa-onnx second | Accepted |
| MOB-006 | Models downloaded, verified and user-owned; never bundled | Accepted |
| MOB-007 | Permission budget, one networked module, CI-enforced privacy gate | Accepted |
| MOB-008 | One behaviour, many implementations: a contract with golden vectors | Accepted |
| MOB-009 | F-Droid-shaped by default; GitHub APK first, Play later | Accepted |
| MOB-010 | The Apple wave: iOS/iPadOS is a different product shape | Accepted (deferred execution) |
Reading notes¶
[[adr-011]],[[adr-v2-129]]and similar links point into the desktop ADR series, which is an internal maintainer document and is not published. Where a desktop ADR is load-bearing for a mobile decision, the mobile ADR restates what it says, so you never need the original. The most important one, ADR-011 (zero telemetry, offline by default, no cloud fallback, no ambient capture), is published in user-facing form as the privacy statement, and it governs the Android app unchanged.- "Accepted" here means the decision is binding, not that the code exists. As of 2026-08-07 there is no Android code at all. See the programme overview for what actually ships today (nothing) and what M0–M4 mean.
- To change a decision, open a PR adding a new ADR that supersedes the old one. Do not edit an accepted ADR to say something different from what was decided; the point of the series is that the reasoning survives the decision.