Skip to content

feat(protocol): support AdCP 3.2 beta lifecycle - #1034

Merged
bokelley merged 3 commits into
mainfrom
feat/adcp-3.2-beta
Aug 17, 2026
Merged

feat(protocol): support AdCP 3.2 beta lifecycle#1034
bokelley merged 3 commits into
mainfrom
feat/adcp-3.2-beta

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Summary

  • sync and generate the AdCP 3.2.0-beta.0 schema bundle and public types
  • add the compact list, proposal, purchase, and media-buy control lifecycle across client, MCP, A2A, server, CLI, and decisioning surfaces
  • add 3.0, 3.1, and 3.2 old/direct/proposal compatibility coverage
  • enforce the 3.2 request-signing body-integrity profile while preserving negotiated legacy behavior
  • document the 3.1 to 3.2 migration and package the complete 3.2 schema bundle

Compatibility fixes found during migration

  • preserve prerelease wire-version normalization and canonical schema references
  • accept legacy creative asset instances across generated aggregate unions
  • retain legacy create/update media-buy status and update-rights response compatibility
  • default 3.2 request-signing capability projection to required content-digest coverage

Validation

  • 6,446 passed, 40 skipped, 9 deselected, 1 xfailed
  • ruff, mypy, strict adopter fixtures, type-ignore contract, bandit, and pre-commit hooks pass
  • clean type regeneration passes
  • wheel and sdist build successfully; wheel contains all 1,386 AdCP 3.2 JSON schemas

@@ -333,6 +361,11 @@ async def get_adcp_capabilities(self, params: dict[str, Any]) -> TaskResult[Any]
"""Get AdCP capabilities from the agent."""
pass

@abstractmethod
async def sync_agent_notification_configs(self, params: dict[str, Any]) -> TaskResult[Any]:

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

MUST FIX: sync_agent_notification_configs (L364-365) and report_plan_adjustment (L442-443) are added as new @abstractmethods on ProtocolAdapter, a public export from adcp.protocols. Any external subclass now fails to instantiate — TypeError: Can't instantiate abstract class ... with abstract methods report_plan_adjustment, sync_agent_notification_configs. That is a breaking change to the public surface shipped under feat(protocol):; release-please cuts a minor, so the break lands without a major.

Note the inconsistency: every other new task in this PR — list_products (L177), buy_products (L193), the rest of the compact lifecycle — was deliberately added as a concrete method that raises NotImplementedError, precisely so existing subclasses keep working. These two are the only abstract additions. Either make them concrete-with-NotImplementedError to match (additive, non-breaking), or mark the commit feat! with a migration note.

@bokelley
bokelley enabled auto-merge (squash) August 17, 2026 23:26
@bokelley
bokelley merged commit dece72e into main Aug 17, 2026
26 of 27 checks passed
@bokelley
bokelley deleted the feat/adcp-3.2-beta branch August 17, 2026 23:32
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.

1 participant