Stop telling readers pipeline state lives in a repo

The Main Families entry still said pipeline state is "stored per repo at
`.epiphany/pipeline/pipeline.cc`", which Cut 4 deleted, and the wire note still
sent these contracts to the voidbot projection. Both describe a machine that no
longer exists.

Pipeline state now lives in an instance's mind, owned by the Huginn memory
organ, and the contracts cross to that organ and its `eureka-state` client. The
three kinds this branch added are named, since the list is the entry's point.
The `[value]` payload sentence, the derivation sentence and the Q2 evolution
sentence stand; the derivation sentence now says which package runs the check.

Documentation only: no build, no test.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-09-16 11:40:25 +02:00
commit d17cc4415f

View file

@ -26,14 +26,17 @@ hand-maintained JSON registry.
- `gamecult.persona_state.v0`: portable public Persona state.
- `epiphany.work_organ_state.v0`: portable state for lean work organs.
- `epiphany.pipeline.*.v1`: Eureka pipeline state (campaign, target, question,
ruling, cut spec, cut report, verdict, finding, follow-up, resolution), stored
per repo at `.epiphany/pipeline/pipeline.cc`.
ruling, cut spec, cut report, verdict, finding, follow-up, resolution, plus
instance, stewardship and hand-off), stored in an instance's mind and owned by
the Huginn memory organ. A store is canonical to exactly one instance, so the
instance document carries the identity, stewardship records which repos that
instance is assigned, and a hand-off records a reassignment in both minds.
Pipeline wire note: each document payload is `[value]`, a one-element
MessagePack array whose element is the named map the schema describes. These
contracts cross to Eureka MCP clients and the voidbot projection. The files are
contracts cross to the Huginn organ and its `eureka-state` client. The files are
derived from the Rust value types and checked byte-for-byte by
`pipeline_published_schemas_match_derivation`; text bounds are UTF-8 bytes and
`epiphany-pipeline`'s `pipeline_published_schemas_match_derivation`; text bounds are UTF-8 bytes and
enforced by admission, not by the schema. Evolution is additive: a new named
field with a serde default keeps `epiphany.pipeline.epoch.v1`; a breaking change
bumps the epoch, and the new binary refuses the old store.