macp-runtime 0.8.3

MACP reference runtime: a coordination kernel and gRPC server enforcing session boundaries, message validation, append-only history, modes, and governance policy.
Documentation
{
  "$comment": "This file is NON-NORMATIVE: it projects values whose actual normative homes (where one exists) are named per-section via that section's `source` field. This manifest MUST NOT itself be cited as a normative source -- cite the named RFC/registry/proto file instead. See schemas/parity/README.md for full context, the applies_to/source semantics, and the versioning rules.",
  "contract_version": "1.0.0",
  "sections": {
    "protocol": {
      "applies_to": [
        "macp-runtime",
        "macp-sdk-python",
        "macp-sdk-typescript"
      ],
      "source": "convention -- no RFC states this literal; examples/json/*.json use \"1.0\" consistently (in-repo consensus, not a normative citation)",
      "macp_version": "1.0"
    },
    "modes": {
      "applies_to": [
        "macp-runtime",
        "macp-sdk-python",
        "macp-sdk-typescript"
      ],
      "source": "registries/modes.md for the 5 standard modes; schemas/conformance/*.json for the 1 extension mode, which is NOT registry-backed (registries/modes.md defines only the ext.* namespace convention)",
      "standard": [
        "macp.mode.decision.v1",
        "macp.mode.proposal.v1",
        "macp.mode.task.v1",
        "macp.mode.handoff.v1",
        "macp.mode.quorum.v1"
      ],
      "extension": [
        "ext.multi_round.v1"
      ]
    },
    "defaults": {
      "applies_to": [
        "macp-runtime",
        "macp-sdk-python",
        "macp-sdk-typescript"
      ],
      "source": "convention (mode_version, configuration_version); RFC-MACP-0012 Section 5.1 (policy_version's policy.default, reserved and always pre-registered); convention (policy_builder_schema_version -- RFC-MACP-0012 Section 3's SHOULD-recommendation that new policies declare schema_version 3)",
      "mode_version": "1.0.0",
      "configuration_version": "config.default",
      "policy_version": "policy.default",
      "policy_builder_schema_version": 3
    },
    "error_codes": {
      "applies_to": [
        "macp-runtime",
        "macp-sdk-python",
        "macp-sdk-typescript"
      ],
      "source": "registries/error-codes.md",
      "permanent": [
        "UNAUTHENTICATED",
        "FORBIDDEN",
        "SESSION_NOT_FOUND",
        "SESSION_NOT_OPEN",
        "DUPLICATE_MESSAGE",
        "SESSION_ALREADY_EXISTS",
        "INVALID_ENVELOPE",
        "UNSUPPORTED_PROTOCOL_VERSION",
        "MODE_NOT_SUPPORTED",
        "PAYLOAD_TOO_LARGE",
        "RATE_LIMITED",
        "INVALID_SESSION_ID",
        "INTERNAL_ERROR",
        "UNKNOWN_POLICY_VERSION",
        "POLICY_DENIED",
        "INVALID_POLICY_DEFINITION"
      ],
      "deprecated": [
        "UNAUTHORIZED"
      ]
    },
    "retry": {
      "applies_to": [
        "macp-sdk-python",
        "macp-sdk-typescript"
      ],
      "source": "convention -- no RFC/registry home; macp-sdk-python/src/macp_sdk/retry.py and macp-sdk-typescript/src/retry.ts agree exactly on every field below. Neither SDK has a jitter field at all (verified this session by reading both retry modules) -- \"jitter\": false documents that deliberate absence, it is not a real constructor default.",
      "max_retries": 3,
      "backoff_base_seconds": 0.1,
      "backoff_max_seconds": 2.0,
      "backoff_schedule_seconds": [
        0.1,
        0.2,
        0.4
      ],
      "retryable_error_codes": [
        "RATE_LIMITED",
        "INTERNAL_ERROR"
      ],
      "jitter": false
    },
    "projection_anomaly": {
      "applies_to": [
        "macp-sdk-python",
        "macp-sdk-typescript"
      ],
      "source": "convention -- no RFC/registry home; macp-sdk-python/src/macp_sdk/base_projection.py and macp-sdk-typescript/src/projections/base.ts agree on kind strings, field set, and field order (Python's `kind` is typed as plain `str`, TypeScript's as a closed 2-value union -- the same runtime values, a narrower static contract in TS; noted here, not treated as drift)",
      "kinds": [
        "duplicate_vote",
        "duplicate_ballot"
      ],
      "fields": [
        "kind",
        "mode",
        "message_type",
        "message_id",
        "sender",
        "subject_id",
        "detail"
      ],
      "field_case_rule": "Names above are canonical snake_case. A consumer whose language convention is lowerCamelCase (e.g. message_type -> messageType, subject_id -> subjectId) derives its names by the standard snake_case-to-lowerCamelCase transform and does not rename, reorder, add, or drop a field."
    },
    "commitment_hash": {
      "applies_to": [
        "macp-runtime",
        "macp-sdk-python",
        "macp-sdk-typescript"
      ],
      "source": "RFC-MACP-0013 Section 7 (format). Pinned as an accept/reject behavior table, not a shared regex source string, because macp-runtime implements this as a hand-written byte-level check (crates/macp-modes/src/mode/util.rs) rather than a regex -- both SDKs do use an actual regex, but the manifest must hold all three to the same observable behavior, not to source-code shape.",
      "pattern": "^sha256:[0-9a-f]{64}$",
      "accept": [
        "sha256:5df51bdd398fe205b936ee7c171cc19175fe09dcb952f2f201c576cd1ab76498"
      ],
      "reject": [
        "",
        "5df51bdd398fe205b936ee7c171cc19175fe09dcb952f2f201c576cd1ab76498",
        "sha256:",
        "SHA256:5df51bdd398fe205b936ee7c171cc19175fe09dcb952f2f201c576cd1ab76498",
        "sha256:5DF51BDD398FE205B936EE7C171CC19175FE09DCB952F2F201C576CD1AB76498",
        "sha256:5df51bdd398fe205b936ee7c171cc19175fe09dcb952f2f201c576cd1ab7649",
        "sha256:5df51bdd398fe205b936ee7c171cc19175fe09dcb952f2f201c576cd1ab764980",
        "sha256:5df51bdd398fe205b936ee7c171cc19175fe09dcb952f2f201c576cd1ab7649g",
        " sha256:5df51bdd398fe205b936ee7c171cc19175fe09dcb952f2f201c576cd1ab76498",
        "sha256:5df51bdd398fe205b936ee7c171cc19175fe09dcb952f2f201c576cd1ab76498\n",
        "sha512:5df51bdd398fe205b936ee7c171cc19175fe09dcb952f2f201c576cd1ab76498"
      ]
    },
    "contribute_payload": {
      "applies_to": [
        "macp-runtime",
        "macp-sdk-python",
        "macp-sdk-typescript"
      ],
      "source": "convention -- schemas/proto/macp/modes/multi_round/v1/multi_round.proto defines ContributePayload's wire shape (field 1, `value`, string), which fixes the protobuf tag byte; the legacy-JSON fallback shape and the try-JSON-then-protobuf decode order have no RFC/registry home and are a historical runtime/SDK convention documented in each consumer's own decode path",
      "canonical_encoding": "protobuf",
      "decode_order": [
        "json",
        "protobuf"
      ],
      "first_byte": {
        "protobuf": "0x0a",
        "legacy_json": "0x7b"
      },
      "vectors": [
        {
          "name": "ascii_short",
          "value": "deploy",
          "protobuf_hex": "0a066465706c6f79",
          "legacy_json_hex": "7b2276616c7565223a226465706c6f79227d"
        },
        {
          "name": "utf8_accent",
          "value": "café",
          "protobuf_hex": "0a05636166c3a9",
          "legacy_json_hex": "7b2276616c7565223a22636166c3a9227d"
        },
        {
          "name": "two_byte_varint_boundary",
          "value": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "protobuf_hex": "0a820178787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878",
          "legacy_json_hex": "7b2276616c7565223a2278787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878227d"
        },
        {
          "name": "one_byte_varint_boundary",
          "value": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
          "protobuf_hex": "0a7f79797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979",
          "decode_only": true
        }
      ]
    },
    "contribute_acceptance": {
      "applies_to": [
        "macp-runtime"
      ],
      "source": "convention -- macp-runtime rejects an empty Contribute payload; this is not yet a confirmed cross-SDK agreement (see schemas/parity/README.md Open items and the follow-up issue tracked in Open Questions)",
      "empty_payload": "reject"
    }
  }
}