Huginn/schemas/cultnet/README.md
Meta Vens 152e315e5d memory: a persistent kind for what a Mind keeps (eureka-pipeline, huginn-mind)
epiphany.pipeline.memory.v2, instance-rooted `<instance>:memory:<label>`:
PipelineMemory with seven sorts (Asked, Decided, Committed, Learned, Did,
Idea, Rapport), her own text, who it is about, where it was learned, whether
directly, what it rests on, a salience that only ranks, and the memories a
consolidating one replaces.

Admission refuses a foreign instance and resolves a memory only Deferred to a
follow-up (an ask taken on), Recorded, Withdrawn or Superseded by a memory.
Memories have their own lineage so supersession stays within one mind. The
read side selects by sort, about (multi-valued) and direct; the index carries
the text; `consolidates` is a citation role.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 15:15:40 +01:00

1.3 KiB

Huginn's CultNet contracts

huginn.mind_request.v1 and huginn.mind_response.v1 are the organ's own wire schemas, published from here because Huginn owns them. huginn-daemon serves them on a cultnet.schema_catalog_request.v0; nothing else reads them.

Each file is serde_json::to_string_pretty of schemars::schema_for! over the type of the same name in crates/huginn-mind/src/wire.rs. Regenerate by hand and the test refuses it: cargo test -p huginn-mind --lib -- --exact wire::tests::published_wire_schemas_match_derivation compares file to derivation byte for byte.

The pipeline catalogue

index.json is the publication manifest for every schema here: the sixteen epiphany.pipeline.*.v2 schemas, gamecult.persona_state.v0 and the two huginn.mind_* wire schemas. The pipeline schemas are derived from the value types in crates/eureka-pipeline and checked byte for byte by its pipeline_published_schemas_match_derivation test. Each document payload is [value], a one-element MessagePack array whose element is the named map the schema describes. Text bounds are UTF-8 bytes and enforced by admission, not by the schema. A new named field marked = absent (defaulted on read, omitted on write when empty) keeps epiphany.pipeline.epoch.v2; a breaking change bumps the epoch, and the new binary refuses the old store.