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.