Concept

Causal memory

When something breaks, the question is never just "what is the state now?" — it is "what caused this?". RAHN's causal memory is a graph of explicit causal edges between observations and commits, each carrying an honest epistemic status. The rule that defines the feature: causality is asserted, never inferred.

The model

Two kinds of anchors exist: observation anchors (from the deterministic observation model, ADR 0013) and commit anchors (from state history). Causal edges connect them, and every edge carries one of three statuses (ADR 0014):

The graph is enforced as a DAG (cycles rejected), anchors are validated (no dangling references), and the log is append-only. The CLI exposes rahn relate and rahn explain for writing and tracing causal chains.

Why not infer automatically?

Because inference produces confident-sounding claims with hidden assumptions — the opposite of RAHN's epistemology. The system records relationships and their epistemic status; it performs no automatic causal inference and contains no AI in the core. The verified status's restriction to commit-to-commit edges is itself an honesty mechanism: machine-verifiable facts get the strongest label, human assertions get honest weaker ones.

What it enables

Incident query: given an incident, walk the causal graph to the commits and observations involved. Provenance: every causal claim traces to who asserted it and at what strength. Replay support: causal chains feed the incident reconstruction direction (research question RQ6, future work).

Recorded measurement and limits

Benchmarking during Stage 5 found an O(V·E) incident query; a reverse-adjacency prototype reduced a 10k-edge-chain query from ~2.7 s to ~5.7 ms — scoped prototype measurements, not production guarantees. Causality remains asserted-only, there is no distributed causal memory yet, and explainability is bounded by what was recorded (gaps in observation are gaps in the chain). All of it is stated in the limitations baseline.

Where to go next