pub struct HarnessMcpOpaquePayloadV1 {
pub content_type: HarnessMcpContentTypeV1,
pub body: Vec<u8>,
}Expand description
An opaque harness-MCP payload.
This is the carriage this crate’s wire types actually move end to end
(HarnessMcpLocalRequestV1::request, HarnessMcpLocalReplyV1::Ok:: response, NodeEvent::HarnessMcpReadCall::request): body is whatever
bytes the originating endpoint encoded, and this crate never decodes it.
Only the reviewed local helper (hatchery-harness-mcp bin from
hatchery-harness-mcp, which holds hatchery-harness-api types via
hatchery-harness-client) and hatchery-harness-service (the harness
itself) know what body actually contains.
This is the Nested Control Plane doctrine’s Law 3 made mechanical
(docs/architecture/nested-control-plane.md): a lower tier (node,
wrapped by c2) must never import a higher tier’s (the harness’s) crate.
Before this type existed, HarnessMcpLocalRequestV1/HarnessMcpLocalReplyV1
carried the harness’s own HarnessReadRequestV1/HarnessReadResponseV1
typed, which pulled hatchery-harness-api into this crate’s dependency
graph and, through it, into every crate that re-exports this one –
node, node-wire, c2, c2-client. A relay that
cannot read what it relays is a relay done right.
Fields§
§content_type: HarnessMcpContentTypeV1§body: Vec<u8>