Skip to content

Architecture decision records

Each record captures one decision about lattice as a whole: the context that forced it, the options considered, and the consequences we accepted. Records are immutable once accepted; a changed decision gets a new record that amends or supersedes the old one. A decision about one package is recorded in that package's own series, in docs/<package>/adr/. The proposal that made lattice is stackr RFC-0003, and these records begin with what its move decided that the RFC's design didn't.

Outside its own series, a record is named with its package, as in "reflexr ADR-0003", and these as "lattice ADR-0002".

ADR Title Status
0001 lattice's brand Accepted, amended by 0014
0002 CI runs every affected project and its dependents Accepted, amended by stackr ADR-0018
0003 CI on pull requests, Nightly on main, and a required Title check Accepted, amended by 0012, 0016 and 0017
0004 One GitHub App for release-please and Renovate Accepted
0005 Renovate runs in lattice's own Actions Accepted
0006 release-please: first versions, pre-1.0 bumps, and what releases Accepted, amended by 0023
0007 A timeout on every test and every job Accepted
0008 One resolution, with litellm held at 1.83.0 Accepted
0009 One dev container, at the root Accepted
0010 Every project's tests run in a random order Accepted
0011 CodeQL on every change, and Scorecard every week Accepted
0012 The Title check holds each break in a public API to its marking Accepted
0013 pyright stays until ty can replace it Accepted
0014 portalr's and grantr's marks Accepted
0015 Acceptance tests against the reference applications Accepted, amended by artifactr 0061 and 0063, and reflexr 0060 and 0061
0016 A merge queue on Mergify Accepted, amended by 0024
0017 CI installs its toolchain from a cache, with retries Accepted
0018 lattice-core, what the libraries share Accepted, amended by 0020 and 0021
0019 A tag for each tenant's workspace Accepted
0020 The telemetry contract needs no extra Accepted
0021 The refusal schema needs no extra Accepted
0022 LiteLLM requests carry the propagated trace tags Accepted
0023 Publishing to PyPI from the release workflow Accepted, amended by 0026
0024 A parallel, batched merge queue Accepted
0025 Formal specs in TLA+ and Lean Accepted
0026 A distribution needs a reason; integrations are extras Accepted
0027 Integrations switched per workspace, through one port Accepted

To add a record, copy template.md to the next number and add a row above. Each package's series uses the same template.