Summary
Protocol schema PRs cannot currently be validated reproducibly against the Python and TypeScript SDK generators before the protocol bundle is published. The reporting RFC exposed this: both SDKs normally download /protocol/{version}.tgz, so testing an unmerged protocol worktree required manual schema copying/overlays and produced SDK branches whose source provenance was easy to lose as the RFC continued changing.
Concrete failure mode
While validating #6953:
- The SDK branches were generated from a local snapshot of the protocol PR.
- The protocol PR then added required reporting coverage fields.
- The dependent SDK branches were immediately stale, but neither their generated artifacts nor CI had a machine-readable assertion identifying the exact protocol commit/bundle digest they represented.
- Full regeneration also mixed the intended RFC delta with unrelated
latest drift, producing thousands of noisy generated changes.
This is exactly the point at which we want generator incompatibilities and semantic drift to fail before the protocol PR merges.
Proposed release-engineering contract
- Build a deterministic protocol bundle artifact for every schema-changing PR, using the same layout and integrity metadata as a release bundle.
- Record the protocol commit SHA and bundle SHA-256 in generated SDK artifacts/metadata.
- Provide a supported local input in each SDK (
--bundle, --schema-dir, or equivalent) rather than requiring an HTTP publication or manual overlay.
- Run both SDK generators and focused contract tests against the PR artifact as a required/visible protocol PR check.
- Fail when generated output is based on a different protocol commit than the declared artifact.
- Offer a scoped generation/diff mode so an RFC can be reviewed without unrelated
latest drift.
- Document how a protocol author creates dependent SDK PRs and refreshes them after a protocol force-push/rebase.
Acceptance signal
A contributor should be able to point both SDK repos at the artifact for #6953, regenerate, and prove which protocol commit they consumed without publishing a fake version or copying individual files.
Related implementation PRs: adcontextprotocol/adcp-client#2726 and adcontextprotocol/adcp-client-python#1095.
Summary
Protocol schema PRs cannot currently be validated reproducibly against the Python and TypeScript SDK generators before the protocol bundle is published. The reporting RFC exposed this: both SDKs normally download
/protocol/{version}.tgz, so testing an unmerged protocol worktree required manual schema copying/overlays and produced SDK branches whose source provenance was easy to lose as the RFC continued changing.Concrete failure mode
While validating #6953:
latestdrift, producing thousands of noisy generated changes.This is exactly the point at which we want generator incompatibilities and semantic drift to fail before the protocol PR merges.
Proposed release-engineering contract
--bundle,--schema-dir, or equivalent) rather than requiring an HTTP publication or manual overlay.latestdrift.Acceptance signal
A contributor should be able to point both SDK repos at the artifact for #6953, regenerate, and prove which protocol commit they consumed without publishing a fake version or copying individual files.
Related implementation PRs: adcontextprotocol/adcp-client#2726 and adcontextprotocol/adcp-client-python#1095.