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.