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>
24 lines
1.3 KiB
Markdown
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.
|