Expand description
The workload.ctl message set (ADR-099 section 7).
Every request is a CtlRequest signed by the requesting node’s Ed25519
key (SignedCtl). It names the requester (the node id derived from the
signing key), the target workload-host, a random nonce and an expiry.
Mutating methods also carry the id of the chained governance decision
that authorised them. Responses are signed by the target and bound to
the request nonce, so a response cannot be replayed onto another request.
Verification order on the target: size, signature, structure, key binding, addressee, time window, authorised controller key, nonce freshness. The nonce is recorded only after everything else passed, so a forged request cannot burn a legitimate nonce.
Modules§
- method
- Methods of the message set. Anything else under
workload.is denied.
Structs§
- CtlRequest
- One control request.
- CtlResponse
- One control response.
- Nonce
Guard - Replay guard: nonces seen, kept until their request expires.
- Refusal
- A refusal: code plus human-readable reason.
- Signed
Ctl - Signed envelope for a request or response.
payloadis the exact JSON that was signed, so verification never re-serialises.
Enums§
- CtlOutcome
- What the target did.
- Refusal
Code - Why a target refused a request. Stable names (chained).
Constants§
- ANY_
TARGET - Target id a
describemay use before the caller knows the node id. - CTL_
VERSION - Wire version.
- MAX_
CTL_ BYTES - Largest signed payload.
- MAX_
NONCES - Most nonces remembered at once (fail closed when full).
- MAX_
SKEW_ MS - Tolerated clock skew for
issued_at_ms. - MAX_
TTL_ MS - Longest request lifetime a target accepts.
- REQUEST_
DOMAIN - Domain tag signed before a request payload.
- RESPONSE_
DOMAIN - Domain tag signed before a response payload.
- WORKLOAD_
HOST_ SERVICE - Service name the control plane addresses on every node.
Traits§
- Controller
Policy - Who may control this node: a set of controller public keys.
Functions§
- fresh_
nonce - A fresh random nonce (32 hex).
- verify_
request - Verify a request addressed to
meatnow_ms. See the module docs for the order of checks. - verify_
response - Verify a response to
requestfrom the node whose key isexpected(Noneaccepts any key, then bindsresponderto it:describeto an unknown node). Returns the response and the responder’s key.