Skip to content

[Change] § 3, § 5.6.1, Appendix B — A resolved commitment is an offer until the seller accepts #67

Open

Description

@KonstantinMirin

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
Loading

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
Loading

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 stay settable; no marker or Appendix B count changes.
  • § 5.9 deal_id_issuance ("Issued at commitment time") gives way to deal_origin in 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.spend and unit_bounds (pricing), hold.position (holds), and the decline entry (signing). The lifecycle PR carries this text.
  • Buyers reading settable literally 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions