Skip to content

feat(media-buy): supports_proposals capability flag — closes #3844#3865

Merged
bokelley merged 1 commit into
mainfrom
bokelley/supports-proposals-capability
May 2, 2026
Merged

feat(media-buy): supports_proposals capability flag — closes #3844#3865
bokelley merged 1 commit into
mainfrom
bokelley/supports-proposals-capability

Conversation

@bokelley

@bokelley bokelley commented May 2, 2026

Copy link
Copy Markdown
Contributor

Summary

  • New media_buy.supports_proposals: boolean in get-adcp-capabilities-response.json. Declared as a commitment (seller will return at least one entry in proposals[] for buying_mode='brief' and honor action='finalize'), not a feature flag.
  • proposal_finalize.yaml declares requires_capability: { path: media_buy.supports_proposals, equals: true }. Sellers that explicitly declare false skip as capability_unsupported; sellers that declare true (or omit the field per the runner's absence semantics) are graded against it.
  • sales-guaranteed/index.yaml: folds proposal_finalize into requires_scenarios (now safe — capability-gated). Narrative trimmed.
  • sales-proposal-mode/index.yaml + enums/specialism.json: deprecation notes point sellers at the migration path — drop the specialism, declare sales-guaranteed plus media_buy.supports_proposals: true.
  • Training agent declares supports_proposals: true (it implements the full proposal lifecycle).

Unblocks the clean fold-in that #3840 left tracked at #3844.

Test plan

  • npm run build:schemas — clean
  • npm run build:compliance — clean (lints, no contradictions, 22/6/19)
  • Server typecheck — clean
  • Local: media_buy_seller/proposal_finalize ✓ 1P / 4S / 0N/A on /sales tenant
  • CI matrix (6 tenants) green

Refs: #3823, #3840, #3844.

🤖 Generated with Claude Code

Adds wire-level capability gate so proposal_finalize cleanly folds into
sales-guaranteed.requires_scenarios without forcing direct-buy guaranteed
sellers (auction PG, retail SKU) to grade against proposal flows.

- get-adcp-capabilities-response.json: new media_buy.supports_proposals
  boolean. Declared as a commitment (seller will return proposals[] for
  buying_mode='brief' and honor action='finalize' to commit a draft), not a
  feature flag — sellers are graded against the declaration.
- proposal_finalize.yaml: requires_capability gate on
  media_buy.supports_proposals=true. Sellers that declare false skip as
  capability_unsupported; sellers that declare true (or omit per runner's
  absence semantics) are graded against it.
- sales-guaranteed: proposal_finalize joins requires_scenarios; narrative
  reflects the capability-gated grading.
- sales-proposal-mode + specialism.json: deprecation notes point sellers
  at the migration path (drop the specialism, declare sales-guaranteed +
  media_buy.supports_proposals: true). Storyboard retained through 3.x.
- training-agent: declares supports_proposals: true (it implements the
  full proposal lifecycle).

Local: media_buy_seller/proposal_finalize ✓ 1P / 4S / 0N/A on /sales tenant.

Refs: #3823, #3840.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bokelley bokelley merged commit cf889f2 into main May 2, 2026
19 checks passed
@bokelley bokelley deleted the bokelley/supports-proposals-capability branch May 2, 2026 18:00
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