Skip to content

feat(protocol)!: stabilize multi-version SDK 8 beta - #1038

Merged
bokelley merged 6 commits into
mainfrom
feat/adcp-3.2-beta
Aug 18, 2026
Merged

feat(protocol)!: stabilize multi-version SDK 8 beta#1038
bokelley merged 6 commits into
mainfrom
feat/adcp-3.2-beta

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Summary

  • add version-scoped public model namespaces and portable MCP schemas for AdCP 3.0, 3.1, and 3.2 beta
  • derive HTTP signing from the negotiated AdCP version and require an explicit profile in low-level signing APIs
  • add the semantic BrandIdentity export and document the SDK 7 to 8 / AdCP 3.1 to 3.2 migrations
  • validate complete compact and proposal lifecycle surfaces without changing legacy lifecycle support

Validation

  • 6,486 passed, 40 skipped, 9 deselected, 1 xfailed
  • ruff, mypy, strict adopter fixtures, type-ignore contract, and pre-commit hooks pass
  • wheel and sdist build; clean-wheel import and versioned schema smoke passes
  • code, protocol, and test expert reviews report no release blocker

Closes #1036
Closes #1037
Addresses #911

BREAKING CHANGE: Low-level sign_request and async_sign_request calls now require an explicit signing_profile_version.

Add version-scoped public models and MCP schemas, align request signing with negotiated AdCP versions, and restore a semantic BrandIdentity export.

BREAKING CHANGE: Low-level sign_request and async_sign_request calls now require an explicit signing_profile_version.
aao-secretariat[bot]
aao-secretariat Bot previously approved these changes Aug 18, 2026

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Approve

Approve — SDK 8 beta multi-version public models (adcp.types.v30/v31/v32), portable MCP tools/list schemas, negotiated-pin request signing, and a collision-safe BrandIdentity export.

Gate checks:

  • No no-auto-approve team match.
  • gated_paths: false — row 2 does not apply.
  • high_risk: true but all reasons are (modified) with no medium-or-higher findings; no (deleted) entries. Rows 3/5 do not fire.
  • Semver signal: the breaking low-level signer change ships under feat(protocol)! with a BREAKING CHANGE footer and migration notes (MIGRATION_v7_to_v8.md / request-signing-migration.md); the new BrandIdentity export is recorded in public_api_snapshot.json — the mandatory semver-signal requirement is satisfied.
  • No Critical/High/Medium findings. Only three low-severity notes (schema_loader.py and versioned.py verified sound under largest-file coverage; a construction-time behavior change where a legacy server_version pin + SigningConfig now raises at ADCPClient construction).

No blocking findings and no escalation trigger — falls through to row 9.

Low-severity note for follow-up: client.py:682 — legacy server_version pin combined with SigningConfig now raises at construction; confirm this is documented in migration notes.

@bokelley

Copy link
Copy Markdown
Contributor Author

Addressed the automated review follow-up in 41df3a0: the migration guides now explicitly document pre-3.0 signed-client construction behavior, with a regression test confirming unsigned legacy clients remain unaffected.

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Approve

Approve.

The delta since the prior approve is documentation clarifications (MIGRATION_v7_to_v8.md, docs/request-signing-migration.md) plus one new conformance test asserting a signed client pinned to legacy AdCP 2.5 fails closed at construction (DeprecationWarning fired in _resolve_server_version before signing_profile_for_adcp_version raises ValueError on the unsupported '2.5' profile). Docs accurately reflect 3.0–3.2 support and construction-time failure.

No critical, high, or medium findings in this run. high_risk is true only via (modified) entries with no accompanying medium-or-higher concern, so no escalation trigger applies (rows 3–5 do not fire). gated_paths is false; no no-auto-approve team match. Prior decision was approve, so sticky escalation (row 6) does not apply. Falls through to row 9.

@bokelley
bokelley enabled auto-merge (squash) August 18, 2026 11:35
@bokelley
bokelley merged commit 607b0e1 into main Aug 18, 2026
27 checks passed
@bokelley
bokelley deleted the feat/adcp-3.2-beta branch August 18, 2026 11:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

signing: derive request profile from the negotiated AdCP version types: version-scope public models and MCP schemas for negotiated releases

1 participant