20. JSON Schema — MMP Specification

20. JSON Schema

These draft 2020-12 schemas are part of the normative MMP v2.0 machine contract. This source repository owns the schemas, constructors and vectors beside the specification pages. The mesh-memory-protocol repository receives a manual mirror after an accepted source change; the mirror never overrides this source.

artifact-manifest.json pins every published schema and vector to its source commit and SHA-256 digest. The production build fails if any copied artifact changes without an intentional manifest update.

A schema-valid object is not yet trusted. A receiver MUST also perform the byte-level address, digest, signature, transcript, audience and AEAD checks required by the relevant sections. Schema validation catches shape errors; cryptography establishes integrity and identity.

20.1 Canonical artifacts

SchemaScope
frame-registry.json Machine-readable registry for every core, relay and reserved legacy frame type
frame-registry.schema.json Schema for the machine-readable frame registry itself
application.schema.json Authenticated opaque application bytes under metadata.application
cmb.schema.json Decrypted two-section record, cognition key, assertion identity and signature
handshake.schema.json client-hello, server-hello and client-finish
encrypted-cmb-frame.schema.json Core Secure ChaCha20-Poly1305 transport envelope
cmb-frame.schema.json Explicit cleartext or migration-profile CMB frame
cmb-fetch.schema.json Content-address fetch request
cmb-fetch-result.schema.json Content-address fetch response
tether-attestation.schema.json Lineage-tether attestation
authority-frame.schema.json Signed role-grant and role-revoke authority frames
control-frame.schema.json Peer-info, wake-channel, error, ping and pong frames
relay-frame.schema.json Relay authentication, directory, presence, keepalive and error frames

20.2 Closed core, negotiated extensions

Core objects use additionalProperties: false. This is deliberate: a misspelled security field or an unsigned sibling must not be mistaken for a forward-compatible extension. Extension data is carried only in its specified container and only after the extension identifier was negotiated in the authenticated handshake.

  • A sender MUST NOT emit an unregistered core sibling such as the retired top-level payload.
  • A receiver MUST NOT silently discard an unknown member inside a signed or authenticated core object and continue as if it had understood the assertion.
  • Structured CMB extension data MUST use metadata.application, whose bytes, digest and presence are assertion-bound. Arbitrary metadata siblings are not signed by mmp-sig-v2.0 and are therefore forbidden.
  • A negotiated extension defines its own schema, version, failure behaviour and authenticated scope. New frame types are protected by the negotiated Core Secure channel; CMB application bytes are additionally bound by the record assertion.

20.3 Executable corpus

The normative v2.0 value-level vectors are:

A conforming implementation MUST reproduce these values without importing a reference runtime. Release CI MUST NOT substitute vectors generated only from its own implementation.

Ed25519 signature bytes are excluded from that requirement — every one of them in this corpus, not only the field named expectedSignature: the handshake proofs (clientProofBase64url, serverProofBase64url) are signatures over the proof payload and fail on a hedged signer for the same reason. An implementation MUST verify each of them against the pinned payload and key, and MUST NOT be required to reproduce one. Ed25519 is deterministic in RFC 8032, but WebKit signs with added randomness, so Safari — and every browser on iOS, where no other engine is available — returns a different valid signature on each call. Requiring byte equality would declare a correct implementation non-conforming on that platform. Every pinned value that is NOT an Ed25519 signature — transcript hashes, HKDF outputs, key confirmations, AEAD ciphertext under the pinned nonces — is a deterministic function of its inputs and MUST reproduce exactly.