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:
- What changes did the seller agree the buyer may make under this buy?
- 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
RFC: bind buyer change rights into accepted proposal terms
Summary
Add proposal-bound
change_termsto 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 runtimeavailable_actionsas 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_actionsauthoritative for the current moment. However,available_actions.modeand 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:
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_termsto the proposal's acceptedcommercial_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
MediaBuyAvailableActionvocabulary. For 4.0, consider replacing implementation-revealing modes such asrequires_approvalwith buyer-facing terms such asseller_managedordeferred. Whether the seller uses a human, an AI system or a queue is intentionally opaque.Semantics
change_termsare binding for that proposal/media buy.change_termsis not a negotiated buyer change right.available_actionsis derived from acceptedchange_termsplus current state, timing, balances and other applicable conditions.terms_refpoints to detailed negotiated terms where the compact action entry is insufficient.Non-goals
available_actions.Acceptance criteria
terms_ref.available_actionshas normative derivation/precedence rules relative to acceptedchange_terms.Related work
available_actions, mode, SLA and forwardterms_refdesign.