soft3/neuron/specs/action-envelope.md

Public action envelope for host and network adapters

ActionRequest is public data, without custody or dispatch capability. Its fields in canonical compact JSON order are request, attachment, context, kind, payload. References and payload use JSON byte arrays. Context uses the existing identity module's subject/network representations and field order: subject,network,binding_revision,prog,invocation,policy,grant. Kind is 1..128 printable ASCII bytes. Payload is at most 8 MiB before encoding; the enclosing record/transport imposes its additional total encoded-size bound.

The signing statement is H(canonical compact JSON of the two-element array ["cyb/robot-action/1", action]). This domain string is retained from the first host implementation so its existing signed records do not change identity. It names a codec version, not another signing subject. The NSIG1 envelope over that statement is owned by mudra; neuron-model only encodes public records.

A network envelope's canonical fields are schema, action, evidence, where schema is neuron/signed-action/1 and evidence is the exact 102-byte NSIG1 array. The entire encoded envelope is bounded at 8 MiB. Decode rejects unknown fields, noncanonical serialization, invalid identity/context references, inconsistent prog/invocation presence, wrong evidence size, oversized payload or kind. The network then verifies the signature, pinned destination, supported operation kind and its own admission rules. Parsing never grants authority by itself.

Action data/serde consumers depend on neuron-id and optional serde/serde_json, without an engine, Rune, storage, inference or UI. Signature verification uses mudra without its optional mnemonic/proving features. Disabling all model default features and serde retains the ID-only dependency boundary.

Graph