Same Event, Two Minds rules differ → inferences differ

Alice and Bob both witness the wolf attacking the sheep. Same event, same shared world. But Alice has the rule attacked → threatens in her graph; Bob doesn’t. After saturation closure runs on each private graph, only Alice’s beliefs contain (wolf, threatens, sheep). No per-agent code branching — the divergence is pure consequence of differing rules. Add a rule to Bob’s side and watch his graph catch up.

Shared world — witnessed event

alice (•) and bob (•) co-located in #kitchen
/ /
alice
bob

Add rule

Use ?x ?y ?z for variables. One or two body patterns.
body: / / ∧ (opt) / /
head: / /
Differential beliefs
Broadcast an event to see divergence.
How it works. Saturation closure is iter until fixpoint: for each rule, find every variable binding under which the body matches the current fact set; instantiate the head and add it. Repeat until no new facts. Run separately over each agent’s private rule + belief store. No per-agent dispatch logic — the same saturate() runs over both graphs; outputs diverge because inputs differ. That’s the substrate eddy carries from the kraken kernel.

Tie to Eddy. This is examples/multi_agent.py. The kernel function is cognition/processes/reasoning_saturation_closure.py. Bundles (Alice’s predator_knowledge, Bob’s farmer_knowledge) seed each agent with starter rules and beliefs; downstream, the same iter_spo_triples reads see whatever each agent’s saturation closed over. Same event, shared WorldMemory (the objective record), divergent private beliefs (each agent’s interpretation).