Skip to main content
Everything on this page runs against a real brain on disk. The directory you open is an OCI Image Layout, so nothing here is a simulation of publishing.

Open a brain

Brain.open creates the layout if the directory is empty and reopens it otherwise. Opening a brain is not a request to install anything.

Supply the model

You supply the model. The SDK embeds none: what knowledge a source yields is the model’s judgment, and what gets stored is the protocol’s.
A CandidateProposer is any callable with that shape. It is the only place interpretation enters.

Ingest

ingest runs the four steps in order: register → delegate → validate → commit. Registering the same bytes twice is a no-op, so this is safe to retry. See Ingestion for the steps as separate calls, which is what you want when the model runs elsewhere.

Query

What comes back is an Evidence Bundle: data with its provenance, never prose.
There is no answer field on the bundle. Not omitted — absent by design: composing prose is your work, and citing block_id is what keeps the answer checkable. Narrowing conditions live on filters, and advice a planner may ignore lives on hints:

Prove what you got

Membership is provable in O(log n), without holding the rest of the module.
resolvable and member are different questions. A block can be a verifiable member of a version and still not be readable — after a selective install, or a redaction. Membership proves; resolution reads. brain.resolvability() reports the three-way split.

Remove knowledge

Always plan first. Dropping canonical evidence is privileged: it cascades to everything derived from it, because a claim whose source was removed can no longer be justified.
A canonical drop is off by default, because excluding evidence forfeits re-derivation from it:
One commit, several new roots. Older retained roots keep verifying exactly as before, and every removal is recorded in provenance — no configuration turns that off.

Publish

pack involves no network at all — the directory becomes a real OCI artifact any tool can copy. To publish over the wire, and to install selectively:
A push refuses to overwrite a remote whose snapshot is absent from the local history: the paper defines no merge for divergent brains, so the safe move is to say where the two parted.

Distribution

Tags move and digests do not, why a layer carries two identities, and what a selective install leaves behind.