Skip to content

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