Selection receipt carried inside a compaction-federation decision:
which items the decision covers and a content hash Membrane can use to
detect a stale or substituted selection.
Optional causal/cross-runtime correlation carried beside a canonical event.
These fields identify relationships only; session/sequence/kind remain owned
by ProtocolEvent and SQLite rather than being duplicated in the envelope.
ProtocolEvent::ModelRouteDecision payload (ADR §D5 observability). Kept
as its own struct (not inlined into the enum variant) so
host_router’s RouteDecision and this wire type can evolve
independently — the seam maps one to the other explicitly.
Pinned pricing snapshot carried on ProtocolEvent::ModelRouteDecision
(ADR docs/canon/daemon-master-canon-atoms.md §D5). Mirrors
the (model, prompt_per_m, completion_per_m, source, fetched_at, hash)
tuple named in §D4 for pricing refresh, but this crate carries no
dependency on host_router/host_providers (pure data crate) —
the seam that emits the event fills these fields from the live roster.
Aggregate token/cost totals across a session’s sub-agents (F1 → F2 contract).
The budget meter for a Goal reads THIS (parent + all children), never the
parent engine’s usage alone.
Whether an event is canonical replay truth or an ephemeral live projection.
Durable facts belong in SQLite and must survive reconnect/replay. Live
projections may be dropped/reordered without changing settled session truth.
Typed failure categories for run governance (Lane B3 / C3). Emitted by the
engine when a run-side invariant rejects a tool dispatch. The variants here
are wire-stable so downstream consumers (desktop budget meter, error toasts,
telemetry) can react deterministically — every failure has a discriminator
and the call site that produced it.
Typed, reaped terminal status of a shell child (foreground or background).
Reported only after the child has been waited on, so a consumer never sees
an exit status for a process that may still be running.
CRA-09 joint wire contract (interface-handoffs.json row
compaction-federation-v1): the one compatible public shape the host app’s
compactor-consumer and Membrane’s federation-catalog both code against.