Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Architecture Decision Records

An Architecture Decision Record (ADR) captures one significant decision: the context, what was decided, the consequences, the alternatives rejected, and what would make us revisit it. Accepted ADRs are binding on all work. The process is defined in ADR-0001; new ADRs start from 0000-template.md.

Facts about third-party projects (versions, licenses, feature support) were verified on 2026-10-03 against primary sources (package registries, project documentation, standards bodies). Work packages re-verify them when they pin versions.

Status legend

StatusMeaning
AcceptedBinding.
Accepted — validation gateBinding, but a named spike or work package must confirm specific criteria; if they fail, the ADR is amended at the next gate review.
ProposedNot yet binding. Awaiting owner confirmation or evidence.
Superseded by ADR-NNNNKept for history.

Index

ADRTitleStatus
0001Record architecture decisionsAccepted
0002Repository topology, versioning and cross-repository contractsAccepted
0003Licensing and contribution modelAccepted (owner, 2026-10-04); in force since 2026-10-04; amended 2026-10-06 (MIT-0 for the shared contribution tooling) and 2026-10-27 (the orchestrator signs off for the owner)
0004Fidelity contract and layout determinismAccepted
0005Integer layout units (BLU) and deterministic mathAccepted
0006Rust core and memory-safety policy for untrusted inputAccepted; amended 2026-10-04 (AWS-LC for the server’s TLS)
0007Document model: a Word-shaped stream of stories and atomsAccepted — validated by CORE-004 (2026-10-09), except preserved atoms (not modelled; CORE-101); performance on the conditions of ADR-0008
0008CRDT engine (Loro) and local-first architectureAccepted — confirmed after the CORE-004 validation gate; amended 2026-10-08 (Loro on three conditions; the native load target; the advisory exceptions for Loro’s dependencies)
0009Text stack: shaping, Unicode, line breaking and the Word measurement modelAccepted — validated by CORE-003 (2026-10-12)
0010Font strategy and the bundled font libraryAccepted
0011Rendering pipeline: display lists, reference rasterizer, PDFAccepted — validated by CORE-003 (2026-10-12); vello_cpu not adopted for interactive rendering
0012Engine boundary: JSON message protocol, C ABI and WebAssemblyAccepted; amended 2026-10-08 (a temporary exception for Loro’s randomness and clock)
0013Desktop shell: Qt 6 Quick with thin C++Accepted — validation gate (DESK-002) open: built and tested automatically 2026-10-12; manual tests on Windows, macOS and Linux deferred (owner, 2026-10-14)
0014Web shell: React and TypeScript, engine in a Web WorkerAccepted — validation gate (WEB-002, met in part 2026-10-12; manual passes outstanding); amended 2026-10-12 (WEB-002 results; one Trusted Types policy; integrity of the engine’s files)
0015Server: single Rust binary, zero-knowledge relayAccepted
0016End-to-end encryption and identity with MLSAccepted — validation gate (SRV-002, met 2026-10-07; external review before GA); amended 2026-10-04 (post-quantum encryption from the first release), 2026-10-07 (SRV-002 results and design details) and 2026-10-17 (details in ADR-0029 and ADR-0030)
0017Supply-chain and dependency policyAccepted; amended 2026-10-04 (agent environment; installing Qt for bayan-desktop; what the license allowlist covers; pnpm without Corepack; root certificate data for the server’s TLS), 2026-10-08 (the libFuzzer license for fuzzing), 2026-10-10 (CodeQL for code scanning in CI) and 2026-10-12 (the bayan-core commit that a shell builds from)
0018File formats and conversion prioritiesAccepted
0019Shared UI manifest; Classic and Focus modesAccepted
0020Accessibility is a release gateAccepted
0021Internationalization and localizationAccepted
0022Proofing tools: spelling, grammar, hyphenationAccepted
0023Automation, macros and active-content securityAccepted
0024Local AIAccepted
0025Quality gates: determinism, fidelity, fuzzing, performanceAccepted
0026Release engineering, signing and updatesAccepted
0027Documentation toolingAccepted
0028Server TLS: rustls with aws-lc-rs, HTTPS through a reverse proxyAccepted (owner, 2026-10-04)
0029Identity keys, device approval and account recoveryAccepted (owner, 2026-10-17) — validation gate (Phase-3 identity and recovery work package)
0030Commit acceptance, departures and group repairAccepted (owner, 2026-10-17), with its three departures — validation gate (SRV-103 and Phase 3); amended 2026-10-26 (revoked devices when the server’s device list is stale)