Skip to content

[reporting] Publish a protocol-owned portable reconciliation fixture for all SDKs #6993

Description

@bokelley

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.compliance-suitemedia-buyIssue concerns the media-buy protocol domain

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions