brCausalGraphRAG¶
Methodology → decision-grade memory
brCausalGraphRAG: active memory with identity, enforced by constraints.
CausalGraphRAG is the idea: retrieve causal paths instead of text chunks. brCausalGraphRAG is the discipline: every step is grounded, validated, traceable — and allowed to refuse.
What we add on top of CausalGraphRAG
Provenance-first primitives
Claims are objects with source, version, scope, and extraction method. Evidence is never “just text”.
Constraint validation
Policy and safety rules are enforced in a gate the model cannot negotiate.
Trace objects
Reasoning produces machine-verifiable artifacts you can replay, diff, and audit.
Abstention & escalation
When there is no valid path or a rule fails, the system refuses and explains why.
Why we call this a mental model for “AI consciousness” (without metaphysics)
Operational framing: “consciousness” here means persistent identity + active memory + governed action selection.
Not feelings. Not personhood. A system-level model that makes behavior legible and controllable.
Identity
A stable handle: what goals, roles, permissions, and safety posture apply to this agent instance.
Active memory
Memory is not a chat log; it’s a graph of validated claims and causal relations, versioned over time.
Self-monitoring via traces
The system can inspect what it did, why it did it, and which rules were applied.
Boundaries
Constraints define “what cannot happen”, making abstention a first-class outcome.
Diagram: decision-grade traversal
flowchart TB;
Q["Question"] --> S["Select start nodes"];
S --> P["Constrained path search"];
P --> V["Validate shapes / constraints"];
V -->|"Pass"| T["Generate trace object"];
T --> A["Answer with evidence"];
V -->|"Fail"| X["Abstain / escalate"];
Diagram: identity + active memory loop
flowchart LR;
ID["Identity</br>(role + permissions + goals)"] --> Q["Question / task"];
Q --> TRV["Traverse causal memory"];
TRV --> G["Constraint gate"];
G -->|"Pass"| ACT["Act / answer"];
G -->|"Fail"| ABS["Abstain + explain"];
ACT --> W["Write trace + update memory"];
W --> ID;
W --> TRV;
Diagram: trace object (what gets stored)
flowchart TB;
T["Trace"] --> P["Path (nodes + edges)"];
T --> E["Evidence (citations)"];
T --> R["Rules applied (constraints)"];
T --> D["Decision (answer / abstain)"];
T --> M["Memory writes (what changed)"];
Why this is different from “better prompts”
- Prompting is a social contract: editable, bypassable, and difficult to prove.
- Constraints are an enforcement mechanism: deterministic, testable, and auditable.
- Traces make debugging and governance concrete: you can inspect the artifact, not the vibe.