Skip to content

feat: implement durable legacy purchase continuation coordinator for AdCP 3.2 #1057

Description

@bokelley

Context

Protocol follow-up to adcp#6716 and adcp#6733.

AdCP 3.2 splits legacy compound media-buy operations across compact lifecycle tasks. The protocol now defines the compatibility coordinator input and the exact failure/atomicity contract, including products-only brief continuation and legacy inline-creative behavior.

Scope

Implement the Python SDK-local coordinator API: an idiomatic equivalent of continue_legacy_purchase(CompatibilityPurchaseCoordinatorInput).

  • Consume the exact signed 3.2.0-beta.4 schema artifact once published.
  • Provide a durable, pluggable continuation store.
  • Bind continuations to principal, account, source protocol version, expiry, the full request payload, selected products/packages, and any listed-purchase context.
  • Enforce atomic single-use claim, deterministic replay, fail-closed crash reconciliation, and the protocol's exact loss/error reporting.
  • Support the products-only brief path and the reverse compact-seller → legacy-buyer facade where this SDK exposes server-side adapters.
  • Keep operational controls distinct from commercial-term proposal successors.
  • Run the shared products-only-brief-compatibility vectors from the beta.4 protocol bundle.

Acceptance criteria

  • Coordinator API and durable-store interface are public and documented.
  • Concurrent claims cannot purchase twice.
  • Retry after success returns the deterministic prior result.
  • Ambiguous/crashed claims fail closed and expose recovery guidance.
  • Principal/account/version/expiry/payload mismatches are rejected.
  • Shared beta.4 compatibility vectors pass.
  • Migration guidance explains what remains application-owned.

Blocked until adcp#6733 merges and the signed 3.2.0-beta.4 artifact is available.

Metadata

Metadata

Assignees

No one assigned

    Labels

    claude-triagedenhancementNew feature or requestno-triageSkip the Claude triage bot — human or designated agent will handle this issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions