Skip to content

RFC: bind buyer change rights into accepted proposal terms #6750

Description

@bokelley

RFC: bind buyer change rights into accepted proposal terms

Summary

Add proposal-bound change_terms to the commercial terms accepted with a media buy. Use those terms to state which changes the buyer is contractually entitled to request, through which service mode, under what conditions and with what processing commitment. Keep runtime available_actions as the current-state projection of those negotiated rights.

This completes the direction established by #4480/#4514 rather than replacing it.

Problem

The current model intentionally makes product-level allowed actions advisory and per-buy available_actions authoritative for the current moment. However, available_actions.mode and SLA are also described as advisory at emission time and may change. The accepted proposal's immutable commercial envelope does not currently preserve the buyer's negotiated change rights.

That leaves two different questions conflated:

  1. What changes did the seller agree the buyer may make under this buy?
  2. Which of those changes can be submitted right now given the buy's current state?

A seller's internal approval process is not part of either contract. The buyer only needs the externally meaningful route, conditions, expected processing time and consequences.

Proposed model

Add change_terms to the proposal's accepted commercial_terms, reusing the existing action vocabulary where possible.

Illustrative shape:

{
  "change_terms": [
    {
      "action": "increase_budget",
      "service_mode": "self_serve",
      "processing_sla": { "duration": "PT15M" },
      "conditions": ["within_approved_credit_limit"]
    },
    {
      "action": "change_daily_cap",
      "service_mode": "seller_managed",
      "processing_sla": { "business_duration": "P1D" },
      "terms_ref": "change_terms_daily_cap"
    }
  ]
}

The exact field names should be aligned with the existing MediaBuyAvailableAction vocabulary. For 4.0, consider replacing implementation-revealing modes such as requires_approval with buyer-facing terms such as seller_managed or deferred. Whether the seller uses a human, an AI system or a queue is intentionally opaque.

Semantics

  • Accepted change_terms are binding for that proposal/media buy.
  • An action omitted from change_terms is not a negotiated buyer change right.
  • Product-level allowed actions remain advisory templates used during discovery.
  • Runtime available_actions is derived from accepted change_terms plus current state, timing, balances and other applicable conditions.
  • Runtime availability may temporarily remove or constrain an action, but it must not silently replace negotiated service mode, SLA or commercial conditions. A contractual change requires an amendment/new accepted proposal.
  • terms_ref points to detailed negotiated terms where the compact action entry is insufficient.
  • Buyer obligations with deadlines and consequences belong in the accepted terms. They are not modeled as seller approval workflow.
  • A cancellation right or consequence can have its own effective/processing timing; it must not imply instant execution.
  • Async submitted/working states communicate processing. They do not expose internal seller escalation.

Non-goals

  • Orchestrating seller-internal approval or HITL.
  • Promising that every negotiated action is available in every runtime state.
  • Turning the governance agent into the owner of bilateral commercial terms.
  • Duplicating full commercial language inside available_actions.

Acceptance criteria

  • A proposal can state binding rights and processing commitments for each buyer-initiated change type.
  • On media-buy creation from a proposal, the accepted terms are immutable and addressable by terms_ref.
  • available_actions has normative derivation/precedence rules relative to accepted change_terms.
  • A seller can say that a change normally takes one business day without exposing whether a human approves it.
  • Tests cover immediate, deferred/seller-managed, temporarily unavailable, conditionally available and not-negotiated actions.
  • Amendments to change terms use proposal refinement and explicit re-acceptance.

Related work

Metadata

Metadata

Assignees

No one assigned

    Labels

    claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.governanceIssue concerns the governance protocol domainmedia-buyIssue concerns the media-buy protocol domainrfcProtocol change — auto-adds to roadmap boardschemaJSON Schema source-of-truth: definitions, codegen artifacts, validation, hygiene

    Type

    No type

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions