Summary
Managed reporting now has multiple implementations, but the exact manifest bytes, canonicalization contract, row schema, control totals, and failure mutations are not owned by one cross-SDK conformance fixture.
adcontextprotocol/adcp-client#2744 added a TypeScript fixture while implementing #6953. Keeping equivalent assets independently in each SDK risks drift in digest bytes, retry classification, manifest-last behavior, and accepted/rejected receipt semantics.
This is distinct from #6984: that issue covers deterministic schema bundles and generator provenance; this issue covers runtime reporting behavior and shared evidence vectors.
Proposed fixture package
Publish a versioned fixture in the protocol repository containing exact bytes and precomputed digests for:
- valid manifest-last file delivery;
- missing object after a valid complete manifest (permanent integrity failure);
- transient pre-commit/read failure (retryable);
- object checksum mismatch;
- row-count mismatch;
- control-total mismatch;
- canonical-content-digest mismatch;
- SHA-256 and SHA-512 physical evidence;
- accepted receipt and exact acknowledgement;
- rejected receipt with stable rejection codes;
- checkpoint/retry after an uncertain receipt write.
Include a machine-readable scenario index defining:
- mutation;
- expected error code;
- retryable/permanent classification;
- expected resource-read count;
- expected receipt body and idempotency behavior.
Integration
- Protocol CI verifies every declared digest and expected canonical byte sequence.
- TypeScript and Python SDK CI consume the same fixture revision rather than copying or re-authoring assets.
- Future SDKs can run the package as a portable conformance suite.
- Fixture metadata records the protocol commit/version that defines its semantics.
Acceptance signal
At least the TypeScript and Python reporting implementations run the same protocol-owned scenario index and exact fixture bytes, producing identical classifications and receipt evidence.
Related: #6911, #6953, #6984, adcontextprotocol/adcp-client#2744.
Summary
Managed reporting now has multiple implementations, but the exact manifest bytes, canonicalization contract, row schema, control totals, and failure mutations are not owned by one cross-SDK conformance fixture.
adcontextprotocol/adcp-client#2744 added a TypeScript fixture while implementing #6953. Keeping equivalent assets independently in each SDK risks drift in digest bytes, retry classification, manifest-last behavior, and accepted/rejected receipt semantics.
This is distinct from #6984: that issue covers deterministic schema bundles and generator provenance; this issue covers runtime reporting behavior and shared evidence vectors.
Proposed fixture package
Publish a versioned fixture in the protocol repository containing exact bytes and precomputed digests for:
Include a machine-readable scenario index defining:
Integration
Acceptance signal
At least the TypeScript and Python reporting implementations run the same protocol-owned scenario index and exact fixture bytes, producing identical classifications and receipt evidence.
Related: #6911, #6953, #6984, adcontextprotocol/adcp-client#2744.