Every node in your graph lives on a plane. Planes partition one graph by role,
and they control what retrieval sees by default. This is how your canonical
knowledge, an agent’s working memory, and retired history coexist without
polluting each other.
The planes
| Plane | What lives here | How you reach it |
|---|
| Semantic | Your canonical, active knowledge. The primary reasoning surface. | The default. pb.search, pb.dq, and capture all work here. |
| Memory | Agent working memory. Invisible to general retrieval. | pb.memory reads and writes it. |
| Archival | Retired snapshots and decision trail. Out of the active surface, kept for history. | pb.memory.archive moves memory here. |
A fourth plane, meta, holds internal infrastructure (shape blueprints). It is
hidden from retrieval and not something you write to.
How the SDK maps to planes
You rarely set a plane by hand; the verb you call puts data on the right one.
| What you do | Plane it lands on |
|---|
pb.capture, pb.extract | Semantic |
pb.memory.remember, pb.memory.observe | Memory |
pb.memory.archive | Archival |
pb.search, pb.dq.check | Reads Semantic by default |
pb.memory.recall, pb.memory.synthesize | Reads Memory |
Why it matters
Separation keeps your canonical graph clean. An agent’s scratch memory and your
retired decisions do not show up when you search your knowledge, so retrieval
stays sharp. But nothing is lost: each plane is reachable on purpose, through the
verb built for it. You get a tidy reasoning surface and a full history at the same
time.
This is why pb.memory is its own surface rather than just more entities:
memory lives on its own plane, so it is there when an agent recalls it and absent
when you are reasoning over canonical knowledge.