Skip to content

Architecture decision records

Each record captures one decision: 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. Proposals that precede decisions live in ../rfcs/.

ADR-0001 to ADR-0006 record the decisions P1 to P6 of lattice RFC-0002, the design portalr implements. ADR-0007 and ADR-0008 are phase 1's, ADR-0009 phase 2's, ADR-0010 phase 3's, and ADR-0011 phase 4's.

ADR Title Status
0001 A router the application mounts Accepted
0002 React and TanStack, as two static single-page apps Accepted
0003 A chat of its own Accepted
0004 Native views of a tenant's observability Accepted
0005 Operators see across tenants Accepted
0006 Shared stores, every read filtered Accepted
0007 TypeScript 7, and TypeScript 6 only where a tool needs its API Accepted
0008 The Bun workspace runs in Bun Accepted
0009 ui tested in Chromium, in both schemes, under Bun Accepted
0010 The client: generated types, and resumable stores Accepted, amended by artifactr 0063, reflexr 0061 and reflexr 0064
0011 The router and its readers Accepted, amended by 0012 and 0041
0012 Acceptance against a two-tenant stack Accepted
0013 The app's scenarios, against the test application with Supabase Auth Accepted
0014 The app's shell: English strings, a committed route tree, and Supabase Auth's client Accepted
0015 The chat's components, and Markdown through Streamdown Accepted, amended by 0043
0016 The Threads area: a workspace's stream, and a scripted agent to chat with Accepted
0017 The Artifacts and Proposals areas: renderers by kind, and diffs by revision Accepted
0018 The Runs area, feedback on runs, and what a person may do Accepted
0019 The kit's look: a side rail, labelled icons, raised surfaces and quiet statuses Accepted, amended by 0036
0020 The Rules area: stored rules as reflexr's JSON, sent over its REST Accepted
0021 The areas on the frame, a danger colour, budget badges, and what admin's frame decides Accepted
0022 Restricting and sharing a thread, from its menu Accepted, amended by 0038
0023 admin's shell and Home: its own tenant, every tenant for operators, and a card per read Accepted
0024 Access: members, groups and keys, each where grantr allows its read Accepted, amended by 0038
0025 Access: roles and grants, on grantr's catalog Accepted
0026 Audit: grantr's log, newest on top, filtered by type and maker Accepted
0027 Feedback and evaluations, summed by day, and the first charts Accepted, amended by 0036
0028 Usage and spend, per day and per workspace, against the budget's share Accepted
0029 UI polish from the screenshots: one width rule, titles, a violet focus ring Accepted
0030 Traces, and a trace view written for ui Accepted
0031 Logs without their lines, and a Health section Accepted
0032 Runs in admin, with Retry, Skip and Cancel Accepted
0033 Third-party notices for the JavaScript the UIs bundle Accepted
0034 Tenants in admin, created by email, and the deployment's audit log Accepted, amended by 0038
0035 Tools, links into Langfuse and Grafana, and the record of making them Accepted
0036 The chart theme: violet-led series, patterns only where marks touch, and a hook for colour-blind mode Accepted, amended by 0047
0037 Form controls and row actions: a Base UI select, form fields, segmented windows, button variants and sizes Accepted
0038 People by email, not by id Accepted
0039 Elevation, status colours, alerts and placeholders, and admin's compact density Accepted
0040 Scenarios against a generated application, and size budgets Accepted, amended by 0044
0041 First-party WebAssembly in the UIs' policy Accepted, amended 2026-10-17
0042 Mermaid can't draw in the page under the policy, so it is parked Accepted
0043 Markdown's basics: code blocks, callouts, footnotes per message, copying, an add-ons seam, and tests under the policy Accepted, amended by 0044, 0045, 0047 and 0041 (2026-10-17)
0044 Highlighting and math, loaded on demand, each with a size budget of its own Accepted, amended by 0047
0045 Integrations in admin, and the app's read of them: each its default where unread, and read again on not_enabled Accepted, amended by 0047
0046 Tracker links on runs: what a run's chain filed, and the items that set it off Accepted
0047 Dashboards on demand, tables by TanStack Table, the panel registry, and one seam for integrations Accepted
0048 Native files in the app: the manifest, who has the file, its pages, a download, and its words compared Accepted
0049 Checking a native file out and in: the editor on its own origin, an upload with its progress, and a retry that is safe Accepted
0050 A native file's proposals: outdated, never rebased, and compared page by page; and the check-out pilot's scenarios Accepted

To add a record, copy lattice's ADR template to the next number and add a row above.