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

24 lines
1.3 KiB
Markdown

# 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.