Concepts

The vocabulary of honest decisions.

The words Cascadian uses, defined plainly — the language your agents and your desk should share.

See it in motion
Memory & time

What was known — and when it was knowable

Memory is only useful if it cannot lie. Everything here exists so a decision can be reconstructed exactly as it was knowable at the time, not as hindsight rewrites it.

Tritemporal memory
Every fact carries three times: when it was true in the world, when the system learned it, and when it was written down. The knowledge axis is what lets a decision be judged on what was knowable — never on hindsight. assert_fact()
as_of vs available_at
as_of pins a query to a moment; available_at marks the earliest moment a fact could legitimately be used. A question asked as of March can only see what was available by March — the future never leaks into the past. get_facts()
Epistemic status
Every memory is typed for what it claims to be — observation, belief, assumption, hypothesis — and carries a status from proposed to approved to superseded. A guess is never silently promoted to truth. propose_memory()
Provenance
Where a memory came from: the source it was extracted from, who asserted it, and the evidence linked to it. Every answer can be traced back to the raw material it stands on. ingest_source()
Contradiction
When a new memory conflicts with an existing one, the conflict is surfaced and held open for a human to adjudicate. Nothing is silently merged, and nothing is quietly dropped. list_contradictions()
The four memory networks
World facts, experiences, evolving beliefs, and entity dossiers live in separate stores — facts as temporal rows, decisions in the ledger, beliefs as versioned memory items, entities as synthesized summaries. The separation is what keeps each one honest. search_memory()
Causality

Why the number moves

An effect you can't identify can't be defended or acted on. The causal layer is the governed map of what drives what — owned by humans, proposed to by agents.

Governed causal graph
The map of which factors actually drive which outcomes, with directed edges encoding cause rather than coincidence. Claude and algorithms propose nodes and edges with rationale and evidence; humans approve them. Only the approved graph is a basis for inference. propose_edge()
Identification
The question that comes before any estimate: can this effect be measured from this data at all? Cascadian walks a strategy tree — randomized, backdoor, frontdoor, instrument, declared designs — and refuses to estimate when the answer is no. identify()
Adjustment set
The variables you must control for so a measured association becomes the causal effect — and the forbidden controls you must not touch, because conditioning on them manufactures bias instead of removing it. validate_graph()
Intervention
A deliberate change to one factor in the graph — "what if this lever were pushed" — propagated through the causal structure with the do-operator. Distinct from passive correlation: it answers what happens when you act. simulate_intervention()
Counterfactual
The outcome under a world that didn't happen — what would have followed had a factor moved the other way. Counterfactuals turn a single estimate into a comparison, which is where decision value lives.
Knock-on effects
The ripple. Intervene on one variable and every downstream variable shifts — the simulator returns the expected change for each, with intervals, the causal path, and every assumption on it. When the intervals are wide, it suggests the experiment that would narrow them. simulate_intervention()
The loop

How judgment compounds

A decision that is never scored is just an opinion. The loop exists so every decision leaves the next one smarter — under governance, not by self-correction.

Decision spine
The lifecycle every decision moves along: opened with its context pinned, analyzed, recommended, approved, decided, monitored, scored. Each transition is recorded; none can be skipped. open_decision()
Frozen expectation
The recommendation states what should happen — and is frozen before you act. There is no editing it afterward; the score is computed against exactly what was claimed at the time. record_recommendation()
Outcome
The measured actuals, recorded when reality settles. Expected-vs-actual is computed server-side against the frozen expectation — the model never grades its own homework. record_outcome()
Variance
The gap between what was expected and what happened, diagnosed rather than shrugged at: which assumption broke, which edge was overconfident, what context was missing. The diagnosis becomes a proposed learning update a human signs off on. propose_learning()
Calibration
The reliability check itself — grouping past forecasts by the probability they were given and asking whether reality matched. A model that says 90% should be right nine times in ten; the gap between claimed and actual is calibration error. review_calibration()
Brier score
The mean squared error of probabilistic forecasts against binary outcomes; lower is better, and it rewards being calibrated rather than merely confident. It is the scoreboard every forecast is held to over time.
Get Started

Put the vocabulary to work.

Bring a question your agents need to reason over. We’ll walk the context pack, the identified effect, and the knock-on ripple — in your language.

Request a briefing