Architecture decision records
Significant technical decisions are recorded as short ADRs: what was chosen, why, which alternatives were considered and what follows from it. Records are never edited after acceptance; a later ADR supersedes an earlier one.
Copy template.md for a new record. Number sequentially. Link the ADR from PROJECT_PLAN.md when the related decision in the decisions table is made.
| Number |
Title |
Status |
| 0001 |
Record architecture decisions |
accepted |
| 0002 |
Start from scratch, reuse AddaxAI Connect patterns |
accepted |
| 0003 |
PostgreSQL 17 with TimescaleDB and PostGIS from migration 1 |
accepted, confirmed at the phase 4 gate on 2026-09-03 |
| 0004 |
Redis Streams as the event bus |
accepted |
| 0005 |
Backend and frontend stack |
accepted |
| 0006 |
Schema versioning for bus messages, webhooks and API responses |
accepted |
| 0007 |
Canonical domain model |
accepted |
| 0008 |
Device timestamp deduplication |
accepted |
| 0009 |
Processing trace model |
accepted |
| 0010 |
Assignment attribution stored on canonical rows |
accepted |
| 0011 |
Connectivity adapter boundary |
accepted |
| - 0012 rule representation |
|
|
| - 0013 control action schema |
|
|
| - 0014 integration deliveries are keyed on the object and retried from a table |
|
|
| - 0015 MCP security boundary |
|
|
| - 0016 backups and observability |
|
|
| - 0017 frames as deliveries, built-in channel sources, the browser as a route |
|
|
| - 0018 immutable source data and layered interpretation |
|
|
| - 0019 AI clients write through one policy-gated endpoint |
|
|
| - 0020 Entity groups as nested folders |
|
|
| - 0021 Firmware-aware device driver layouts |
|
|
| - 0022 The all-projects scope |
|
|
| - 0023 The satellite session behind an Iridium delivery |
|
|
| - 0024 Network health apart from device health, and the locations a network provides |
|
|
| - 0025 Entity types with sub-types and a standard catalogue |
|
|
| - 0026 One drawing engine for draw and measure, and a circle as a polygon that remembers its centre and radius |
|
|
| - 0027 The Gateways page shows a project's whole network, and the gateway list is synced daily |
|
|
| - 0028 The live map's feed, unread as a seen-up-to time per person, and a health dot slow to worry |
|
|
| - 0029 One top bar on every screen, and a night mode that reaches the map |
|
|
| - 0030 Roles as named permission sets, custom roles per project, and a member's scope enforced on every read |
|
|
| - 0031 Analysis as an isolated, optional subsystem |
|
|
| - 0032 Attribution repair as a background job with progress |
|
|
| - 0033 PDF reports of analyses made on the server |
|
|
| - 0034 Devices as analysis subjects, with levels |
|
|
| - 0035 Device settings known per device, from the type's catalogue |
|
|
| - 0036 Contacts as a canonical record type, and a place a device does not report |
|
|
| - 0037 Cardiac readings on the scanning device, with only what is published derived |
|
|