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 Title Status
0001 A library with a sans-IO core, replacing the template Accepted
0002 The name reflexr Accepted
0003 An independent sibling of artifactr, with aligned conventions Accepted
0004 Tenant-scoped streams with one log each Superseded by 0016
0005 Per-rule cursors: decide exactly, act at least once Accepted
0006 Rules as typed, serializable data Accepted, amended by 0041
0007 Rule state as pure reducers, with the log as the clock Accepted
0008 Actions: agents, graphs and functions over one Reaction Accepted
0009 Graph checkpoints at step boundaries Superseded by 0043
0010 Loop and spend safety Accepted
0011 Surfaces: ingest, REST, WebSocket, schedules and MCP Superseded by 0044
0012 Trunk-based development with RFCs, ADRs and evergreen docs Accepted
0013 Quality gates Accepted
0014 MIT license Accepted
0015 Reference implementation: incident response Accepted, amended by 0031
0016 Tenants and workspaces, like artifactr Accepted
0017 The core's evaluation contract Accepted
0018 OpenTelemetry-native observability, with Langfuse primary Accepted
0019 Typed feedback as events, mirrored to Langfuse Accepted
0020 evalr, a shared eval kit Accepted; its last amendment superseded by 0045
0021 Contributor Compose and dev containers here, infrastructure in stackr Accepted
0022 LiteLLM, proxy first, for routing and guardrails Accepted
0023 Libraries, and stackr as the infrastructure template Accepted
0024 Which chain a firing joins, and operator actions in the log Accepted
0025 Ports and adapters Accepted; its amendment superseded by 0045
0026 The reactor's evaluation: rules on workspaces, the depth of reflexr's facts, and rebuilds Accepted
0027 Executing runs Superseded by 0041
0028 Schedules, with cronsim for cron expressions Accepted
0029 Metric detail through SDK views, and the OpenTelemetry and Langfuse adapters Accepted; its score adapters superseded by 0045
0030 SQL storage with one dialect-neutral implementation Accepted
0031 The reference implementation's events and rules Accepted
0032 The documentation site, and a brand shared by the family Accepted, amended by 0046
0033 Publishing the documentation site from main Accepted, amended by 0046
0036 Typed run failures Accepted
0037 Joining stackr's network when it runs Accepted
0038 Dashboards generated, tested and released Accepted
0039 Namespaced event types Accepted
0040 Telemetry that composes across libraries, untraced polling and mirror cursors Accepted
0041 Executing runs Accepted
0042 Cancel-safe storage Accepted
0043 Graph checkpoints Accepted
0044 Surfaces Accepted; partly superseded by 0047
0045 Scores on evalr Accepted
0046 One docs build Accepted
0047 Commands carried out once per id Accepted

To add a record, copy template.md to the next number and add a row above.