Repository navigation
Description
What kind of change?
Change a normative requirement (MUST / SHOULD / MAY)
Which section?
Whole document / more than one section
Current text
§ 3; § 5.6.1; Appendix B:
§ 3, `selectable` and `settable` rows: … Resolves without seller assent.
Appendix B, the same rows: … Resolves without assent.
§ 5.6.1: Absent on a published standard proposal. Populated during composition. Frozen
when status becomes `agreed`.
Appendix B: Only the 3 `requestable` fields require a round trip.Proposed text
§ 3 and Appendix B, `selectable` and `settable` rows: "Resolves without seller assent."
(Appendix B: "without assent") becomes "Resolves without a round trip."
§ 3, after "Resolution without a round trip":
Resolution is validation and pricing, not acceptance. A resolved `commitment` is an offer to
buy (§ 5.6.1).
§ 5.6.1, from "Populated during composition":
Populated during composition. A `commitment` resolves under § 3 when it fits
`commitment_bounds.spend` and the committed entry's `unit_bounds`. A resolved `commitment`
is an offer to buy. It binds only when the seller accepts it; `assent[]` (§ 4.1) records
that acceptance for the binding `version`. A seller MAY decline a resolved `commitment`
with a `decline` entry; the buyer MAY recompose. A decline for lack of availability MUST
state the `availability` of each line item it covers, recomputed against the buyer's
composition; the seller's determination is authoritative. While a buyer's hold (§ 5.6.2)
runs, the seller MUST NOT decline that buyer's `commitment` for lack of availability.
This does not cover inventory that a hold granted ahead of it (`hold.position`, § 5.6.2)
reserves or took on converting. A firm entry limits a decline to the grounds in § 4.3.2.
Acceptance ends the availability check; booking is downstream (§ 1.1). Frozen when the line
item's `status` becomes `agreed`.
Appendix B, after "require a round trip": add "to resolve (§ 5.6.1)".Why
The draft never says whether a filled-in commitment buys anything. We ask: not until the seller accepts.
commitment is settable: "Resolves without seller assent" (§ 3). Yet the binding version carries both parties' assent (§ 4.1). A buyer built to § 3 reports a buy; a seller built to § 4.1 may decline.
As drafted (§ 5.6.1):
stateDiagram-v2
absent --> populated: composition
populated --> resolved: within bounds, no seller assent
resolved --> agreed: ? undefined. § 3 needs no assent, § 4.1 needs assent
agreed --> [*]: frozen
Proposed:
stateDiagram-v2
absent --> populated: composition
populated --> resolved: resolves under § 3, an offer to buy
resolved --> agreed: seller accepts, assent recorded
resolved --> declined: seller MAY decline
declined --> populated: buyer recomposes
agreed --> [*]: frozen
Acceptance is separate because remaining quantity is not a declared bound: availability is seller-recomputed (§ 3.3; #35), shared across buyers, and not an offered term (#64).
A hold and a firm rate limit a decline in opposite ways. While a hold runs, availability is no ground, except for inventory held ahead of it. Until price_valid_until, only lack of availability, an exclusivity conflict, and terms stated at first offer remain. @EvgenyAndroid proposed the availability limit in our lifecycle change request (#65); the lifecycle PR adds the other two grounds.
With #24, #23, and the parties PR, staleness, requires, and eligibility join the check. A failed check is a rejection, not a decline. Companions: lifecycle, holds, assent.
Knock-on effects
- § 3 and § 7 "require the counterparty to respond" stand, read as resolution, not acceptance.
commitment's buyer keys staysettable; no marker or Appendix B count changes. - § 5.9
deal_id_issuance("Issued at commitment time") gives way todeal_originin the handoff PR, and a deal starts from the agreed line item. - § 5.6.2: the holds PR lets the seller state what a hold reserves, in
hold.held_availability. - Names follow the coming PRs:
commitment_bounds.spendandunit_bounds(pricing),hold.position(holds), and thedeclineentry (signing). The lifecycle PR carries this text. - Buyers reading
settableliterally change behavior.
Would this break an implementation already built to this draft?
Not sure
Alternatives you considered and rejected
requestable, a quantity bound, a mandatory hold (rationale).
You are commenting as
Other — IAB Tech Lab member (Postindustria).
Before you submit
- I have read CONTRIBUTING.md and agree my contribution may be published under this repository's licence.
- This contains no confidential or commercially sensitive information.
Details: Commitment acceptance: full rationale and examples
Revised 2026-11-03: Names follow the coming PRs, and firm-rate grounds point to the lifecycle PR. An availability decline states figures in CommitResult.availability, beside its decline entry. § 3 and Appendix B drop "without seller assent". The holds PR answers the hold quantity question in part.
Analyzed and generated with the help of Claude, fully reviewed by me.
Activity