Skip to content

Decision Log (ADRs)

This directory holds Cairn's Architecture Decision Records. Each ADR captures why a decision was made — the context, the choice, and its consequences. Aspect documents in ../ describe what the architecture is; ADRs explain why it is that way.

Rules

  • Append-only and immutable. An ADR is never edited to reverse it. To change a decision, write a new ADR that supersedes the old one; mark the old one Status: Superseded by ADR-NNNN and the new one Supersedes: ADR-NNNN. This is the project's own "never erase, always overlay" (identity §5.1) applied to its documentation. (Typo/clarity fixes that don't change meaning are fine.)
  • Numbered and dated. NNNN-short-slug.md, zero-padded, allocated in order.
  • Read before reopening. Before reopening a settled question, read its ADR — the rationale is there on purpose.
  • The spec carries no in-file changelogs; git is the line history and ADRs are the rationale.

Index

ADR Title Status Date
0000 Pre-ADR changelog history (spec v0.1 → v0.6) Imported (historical) 2026-06-13
0001 Postgres-intelligence cluster: fat Postgres, thin Rust daemon Accepted 2026-06-13
0002 In-database Rust (pgrx) as the projection escape hatch Accepted (refines 0001) 2026-06-14
0003 Bitemporal event time and acknowledged uncertainty Accepted 2026-06-14
0004 Dynamic sync scope: a prefetch hint, not an authority Accepted 2026-06-14
0005 Erasure as key-custody redistribution: crypto-shredding and a policy-neutral severity ladder Accepted 2026-06-14
0006 Visibility-scope vs. sync-scope: replication is not the confidentiality boundary; the safety projection and graded sensitivity Accepted 2026-06-14

Template

# ADR-NNNN — <title>

- **Status:** Proposed | Accepted | Superseded by ADR-NNNN
- **Date:** YYYY-MM-DD
- **Supersedes:** ADR-NNNN (if any)

## Context
<the forces at play: the problem, constraints, and what made this a real decision.>

## Decision
<the choice, stated plainly.>

## Consequences
<what becomes easier, what becomes harder, what we are now betting on, and how we'd know if the
bet fails.>