Skip to content

Backport supports_proposals capability flag to 3.0.x #5256

Description

@estofko-scope3

Summary

Request backport of #3844 / #3865 to the 3.0.x release line. The media_buy.supports_proposals capability flag is currently 3.1-only; sellers on 3.0.x cannot opt out of the proposal_finalize storyboard even when they don't generate proposals, which is causing false-negative compliance failures.

Background

PR #3865 (merged 2026-05-02) added media_buy.supports_proposals: boolean to get-adcp-capabilities-response.json and gated proposal_finalize.yaml with requires_capability: { path: media_buy.supports_proposals, equals: true }. This lets sellers without a proposal engine cleanly skip the scenario via capability_unsupported.

The fix is present in compliance/cache/3.1.0-rc.2/ but absent from compliance/cache/3.0.x/. The 3.0.x storyboard fires for any seller declaring supported_buying_modes: ["brief"] (or similar) and has no opt-out path.

Current behavior on 3.0.x

Verified against @adcp/sdk@7.11.1 bundled caches:

  • compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/proposal_finalize.yaml → has requires_capability: media_buy.supports_proposals
  • compliance/cache/3.0.12/domains/media-buy/scenarios/proposal_finalize.yaml → no gating
  • schemas/cache/3.0.x/.../get-adcp-capabilities-response.json → no supports_proposals field

Affected adopters

InMobi seller agent (https://adcp-nonprod.exchange.inmobi.com/mcp) — currently testing against AdCP 3.0.12. Their capabilities declare supported_buying_modes: ["brief", "wholesale", "refine"] but they don't generate proposals, so get_products_brief returns null for /proposals and the storyboard fails. With supports_proposals: false declared (or omitted) on 3.0.x, the scenario would correctly skip.

Why this is patch-eligible

Same shape as #5042 / #5175 (Basic auth backport):

  • Additive schema fieldsupports_proposals is optional; omission is the default and existing 3.0.x agents continue to behave as before
  • Additive storyboard gaterequires_capability adds a skip path; agents that previously failed because they couldn't opt out now skip cleanly; agents that were passing continue to pass
  • No wire breakage — no required field added, no enum value changed, no shape modified
  • Already debated and resolved by the WG — semantics agreed in Add supports_proposals capability flag to media_buy block in get_adcp_capabilities #3844 (commitment about the conformance brief, not generic feature inventory)

Proposed change

Cherry-pick the relevant pieces of PR #3865 onto the 3.0.x line:

  1. Add media_buy.supports_proposals: boolean (optional) to static/schemas/source/protocol/get-adcp-capabilities-response.json with the commitment-flavored description from Add supports_proposals capability flag to media_buy block in get_adcp_capabilities #3844
  2. Add requires_capability: { path: media_buy.supports_proposals, equals: true } to static/compliance/source/domains/media-buy/scenarios/proposal_finalize.yaml
  3. Cut a 3.0.x patch release

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingclaude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.compliance-suitemedia-buyIssue concerns the media-buy protocol domainpriority:P1High priority: important bug or follow-up, not immediate P0

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions