Interop Note · OpenChainGraph v0.4 · Informative, Non-Normative

KYA-OS / Checkpoint Interop: What OCG's Shipped Primitives Overlap, and What They Don't

For an integrator reading both specifications side by side. KYA-OS / Checkpoint defines org.kya-os/response-proof, a signed ProofMeta object an MCP server can attach to a tool-call response to attest agent identity and session context. OpenChainGraph is a compute-identity and artifact-provenance standard, a different problem. This note states plainly where the two overlap at the primitive level (same signature family, same canonicalization) and where they do not (KYA-OS's required fields include session/handshake concepts OCG has no infrastructure for). It corrects an earlier internal review that scored more of the overlap as absent than the specification text actually supports.

KYA-OS SPEC.md v1.0.0 · Status: Stable did:key / did:web · JCS RFC 8785 · Ed25519 Not a conformant org.kya-os/response-proof emitter Informative note · not a SPEC.md subsection
NON-CONFORMANCE DISCLAIMER: this page does not describe, and OCG does not ship, a working org.kya-os/response-proof emitter. The KYA-OS ProofMeta object is schema-closed (additionalProperties:false) with seven required fields. Three of them, nonce, audience, sessionId, are session/handshake concepts bound to KYA-OS's own protocol exchange, and OCG has no equivalent infrastructure to populate them truthfully. A partial object does not validate against that schema. No reader should present an OCG artifact, or anything built from this note, to a KYA-OS verifier as a conformant proof.

OCG is not a KYA-OS/Checkpoint proof source

Stated first because it is the load-bearing fact of this note. OpenChainGraph secures the provenance of a compute artifact: the inputs, the output, the kernel that ran, and (optionally) who signed it. KYA-OS/Checkpoint secures a different thing: that a specific agent, in a specific authenticated session, made a specific tool call and got a specific response. Overlap in the underlying cryptography does not make these the same claim, and this note does not narrow that gap by asserting one.

The primitive overlap is real, and ships zero new crypto dependency

Both specifications converge on the same signature family independently. OCG's SPEC.md already ships every primitive KYA-OS's ProofMeta needs for the fields it can populate:
did:key §9: recommended verificationMethod/keyid, a multicodec-prefixed base58btc Ed25519 public key (the z6Mk... form) did:web §16.4: for a stable institutional issuer, anchor to did:web over the publisher's domain, key in HSM/KMS, signing server-side (§12 compute path) JCS canonicalization §16.1: RFC 8785, the same kernels/_hash.mjs cgCanon used for §4 execution_hash, one canonicalization path, no second one Ed25519 signing §16: DataIntegrityProof, cryptosuite eddsa-jcs-2022, W3C Data Integrity 1.0
No new key type, no new canonicalization, no new signature algorithm is required to populate the fields below marked sourceable. The overlap is a re-serialization of already-shipped material into KYA-OS's field names, not a new capability.
org.kya-os/response-proof ProofMeta: field by field
KYA-OS SPEC.md §7.2 · required: did, kid, ts, nonce, audience, sessionId, requestHash · responseHash conditional on outcome
ProofMeta field Sourceable from OCG? Basis
did SOURCEABLE, conditionally SPEC.md §9 defines did:key as the recommended verificationMethod/keyid, already used for signatures[].keyid (§9) and for audit_signature.proof.verificationMethod (§16, Proof Binding). §16.4 names the server-signing case this export needs: a stable institutional issuer anchoring to did:web over the publisher's domain, key in HSM/KMS, signing server-side via the §12 compute path. That is a documented, already-specified pattern, not new infrastructure. Condition: only present when §16 Proof Binding is populated on the artifact, which is rare today (1 verificationMethod hit across the current graph, re-derived at publication time; most artifacts still lack it).
kid SOURCEABLE, same condition as did KYA-OS requires kid match the JWS protected header and resolve under the signer's key material. A did:key fragment (did:key:z6Mk...#z6Mk...) or the §16 verificationMethod value satisfies that structurally.
ts SOURCEABLE Trivial, computable at serve time.
requestHash SOURCEABLE Computable at serve time from the request.
responseHash SOURCEABLE Computable at serve time from the response; conditional on outcome per KYA-OS's own schema.
audience NOT SOURCEABLE as an artifact-derived value Caller-supplied at export time would be the truthful route, not artifact sourcing. The worker has no authenticated caller identity today (no session/OAuth layer on MCP calls per current architecture), so filling this field would be the responder's own guess at a recipient, which is invented, not sourced. If the worker later gains authenticated MCP sessions, this becomes sourceable; today it is not.
sessionId NOT SOURCEABLE No session concept exists at all, caller-supplied or otherwise. Genuinely absent infrastructure, not a documentation gap.
nonce NOT SOURCEABLE, as specified A self-minted per-call random value satisfies the JSON Schema string type but not KYA-OS's replay-prevention semantics, which are bound to the _kyaos handshake. Filling it would be schema-legal and protocol-dishonest.

The correction this note exists to make

An earlier internal review scored all five contested fields (did, kid, audience, sessionId, nonce) as absent. That scoring was itself incomplete for two of the five: did and kid are sourceable via a primitive OCG already ships and already uses elsewhere in the specification (§9 did:key, §16.4 did:web for server-side institutional signing). The gap that actually blocks a conformant org.kya-os/response-proof emitter is narrower than first scored, three required fields, not five, but it is still fatal to schema conformance: additionalProperties:false with three required keys structurally absent cannot validate as a partial object. Narrowing the gap does not close it.

Three fields stay marked absent

audience, sessionId, nonce: not invented, not approximated

All three are session/handshake concepts bound to KYA-OS's own protocol exchange, which OCG's current architecture does not implement. A self-minted value would be schema-legal (the JSON Schema type-checks) and protocol-dishonest (it would not carry the semantic guarantee KYA-OS's verifier expects). This note does not propose filling them, and no OCG artifact should be presented to a KYA-OS verifier claiming they are populated.

Re-opening a normative mapping

A schema-conformant org.kya-os/response-proof emitter becomes possible only if the worker gains an authenticated MCP session layer that can genuinely populate audience, sessionId, and nonce per KYA-OS's handshake semantics. That is a separate, materially larger design decision, a session/authentication layer for the MCP worker, and is not recommended here as a prerequisite to chase. Until it exists, this note is the full extent of the interop story: a primitive overlap worth knowing about, not a bridge.
KYA-OS / Checkpoint: github.com/decentralized-identity/kya-os-mcp, MIT license. SPEC.md v1.0.0, Status Stable, re-verified against the published repository at the time of this note's publication; the document itself carries no revision-date field.
RFC 8785 (JCS): rfc-editor.org/rfc/rfc8785 · OCG SPEC.md §9 (party identity), §16 (Proof Binding): openchain-graph-spec.html.
OpenChainGraph v0.4 · Suite · Spec v0.4 · Zero PII · CC BY 4.0