Huginn/schemas/cultnet/README.md
Meta Vens 7f22da3886 research and idea: two kinds for what a pass finds and what could be, and the recipes known, pass and ideas (eureka-pipeline, huginn-mind, eureka-state)
epiphany.pipeline.research.v2 (one claim, typed sources, no status) and
epiphany.pipeline.idea.v2 (what could be, rests_on / toward), campaign-rooted
as <campaign>:research|idea:<pass>.<label>. Resolutions are the matrix alone;
lineage is Global; roles serves, sources, rests_on, toward; alias pass; index
text without a version bump. No faculty is told to use them yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 15:13: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 eighteen 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.