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.
20.1 Canonical artifacts
| Schema | Scope |
|---|---|
| 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 bymmp-sig-v2.0and 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:
- application-v2.json — application presence, bytes, digest and commitment
- record-signature-v2.json — cognition key, assertion identity and Ed25519 signature
- handshake-v2.json — transcript, proofs, key confirmation and HKDF outputs
- e2e-v2.json — directional traffic keys, nonces, AAD and ChaChaPoly ciphertext
- examples/v2 — signed, schema-valid transport and feedback CMB frames
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.