You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
client: refuse start_requires_all_creatives_approved: true on control_media_buy to a seller without creative_start_policy #1876
AdCP 3.3: opting a package into start_requires_all_creatives_approved: true on control_media_buy requires the seller's media_buy.features.creative_start_policy: true, and buyers MUST NOT send true without it.
#1872 enforces the seller half: the dispatcher refuses such a request with UNSUPPORTED_FEATURE (fieldpackages[N].start_requires_all_creatives_approved, recovery: correctable, details.fields, mutation_outcome: not_applied). The buyer half is missing. ADCPClient.control_media_buy sends true to any seller and finds out from the refusal a round trip later.
Suggested fix
When the seller's discovered capabilities don't declare media_buy.features.creative_start_policy: true, fail a control_media_buy that sets any package's start_requires_all_creatives_approved to true with UNSUPPORTED_FEATURE before anything is sent. Mirror #1872's error shape. Let false and omission through. When the client has no discovered capabilities, send as today.
On a 3.3+ session, ADCPClient.control_media_buy now returns a failed TaskResult before sending when the client's cached capabilities lack media_buy.features.creative_start_policy and a package sets start_requires_all_creatives_approved: true. The result has dispatched=False, adcp_error.codeUNSUPPORTED_FEATURE, field naming the first opted-in package, and details.feature / details.fields, the same vocabulary as the seller refusal from #1872.
With unknown capabilities the client still sends. false and omission always pass, and sessions below 3.3 are unchanged.
Activity
feat(client): refuse start_requires_all_creatives_approved: true to a…
bokelley commentedon Nov 8, 2026
Fixed on
nextby #1878 (8a163c9).On a 3.3+ session,
ADCPClient.control_media_buynow returns a failedTaskResultbefore sending when the client's cached capabilities lackmedia_buy.features.creative_start_policyand a package setsstart_requires_all_creatives_approved: true. The result hasdispatched=False,adcp_error.codeUNSUPPORTED_FEATURE,fieldnaming the first opted-in package, anddetails.feature/details.fields, the same vocabulary as the seller refusal from #1872.With unknown capabilities the client still sends.
falseand omission always pass, and sessions below 3.3 are unchanged.🤖 Generated with Claude Code