Decision records · Where each statement is checked
D-030 How is each § 4 and § 5 field statement checked, as a schema, a rule on payloads, or an obligation on a party's behavior?
What the schemas do
A statement about one line item's or proposal's fields, or about two versions, is a rule owned by the smallest object it mentions. A statement about delivery, disclosure, or how a seller treats a request is an obligation. A statement the schema already says maps to the schema.
Options
Why
Rules on a line item: plcmt for video ads, environments that match the channel, the OMID condition on third-party measurement, exclusion types within exclusions_accepted.types, list_ref and terms_ref pinned and resolved or frozen at agreed, a consumer skipping an unknown channel (type rules § 9), and the requestable materials_due and committed_metrics[], which compare two versions. Rules on a proposal: negotiation_history[] is append-only. Rules on HoldStatus: the hold transitions none → requested → held → expired, released, or converted. "Each property MUST carry domains, apps or both" is the property option's schema, and offering one inventory "through more than one" mechanism is the selectable structure's list. The rest are obligations of the seller: serving only its channel, delivering only to impressions that match placement, rejecting an app entry whose platform it can't determine or an unaccepted exclusion type, never presenting best_effort as a guarantee, never disclosing a buyer's exclusions, and never requiring proposal_template_id.
What we ask the specification to state
Put each cross-field requirement in the section of the object that holds all its fields, and mark seller behavior apart from requirements on the document.
The specification lines it rests on
Each line is quoted as the record pins it. Expand an item to read the quote.
main
§ 5.6.2, paragraph 1: the value list L312 at 44dfaaf
expired|released|converted§ 4.1, a requirement L192 at 44dfaaf
Entries MUST NOT be edited or removed
§ 5.4, a requirement L247 at 44dfaaf
A buyer MAY request a later date
§ 5.7, a requirement L320 at 44dfaaf
Seller declares a ceiling; a buyer MAY request above it
§ 5.9, a requirement L339 at 44dfaaf
A seller MAY offer the same inventory through more than one
With the open PRs
§ 5.6.2, paragraph 1: the value list L305 on main at 981a74e
expired|released|converted§ 4.1, a requirement L185 on main at 981a74e
Entries MUST NOT be edited or removed
§ 4.1, a requirement L197 in #74
proposal_template_idMUST NOT be required for a buyer to transact.§ 5.1.1, a requirement L248 in #119
The seller MUST serve a line item only on impressions of its
channel.§ 5.1.1, a requirement L247 in #119
A consumer MUST skip a line item whose
channelit does not recognise, and MUST NOT reject the proposal because of it.§ 5.2, a requirement L225 in #17
Each property MUST carry
domains,appsor both§ 5.2, a requirement
plcmtis REQUIRED for video ads.The integration of the open PRs wrote this text, to resolve a conflict or as its lock records, so no commit on GitHub holds it.
§ 5.2.1, a requirement L280 in #119
Each
environments.available[]value MUST match at least one impression to which 5.1.1 gives the line item'schannel.§ 5.2.2, a requirement L263 in #120
The seller MUST NOT deliver the line item to an impression that does not match a key that is present.
§ 5.2.2, a sentence L272 in #120
An impression matches
api[]when it supports every listed framework,playmethod[]when its playback method is one of the listed values, andrefreshwhen the slot renders each creative for at leastmin_interval_sseconds before it refreshes, or does not refresh.§ 5.2.2, a requirement L265 in #120
Unless
api[]includes OMID 1.0 (7), a line item whosecommitted_metrics[]includesviewable_rateand whoseenvironments.available[]includesapp_mobileorctvSHOULD NOT offer ameasurement_sourcevendor other than the seller.§ 5.4, a requirement L240 on main at 981a74e
A buyer MAY request a later date
§ 5.5, a requirement L288 in #71
A seller MUST reject an entry whose platform it cannot determine, rather than apply it across stores.
§ 5.5, a requirement L294 in #71
A buyer MUST NOT supply an exclusion type absent from
exclusions_accepted.types.§ 5.5, a requirement L295 in #71
A seller MUST reject it deterministically rather than ignore it.
§ 5.5, a requirement L297 in #71
A seller MUST NOT present
best_effortenforcement as a guarantee.§ 5.5, a requirement L298 in #71
list_refMUST be hash-pinned, and resolved into the stored record atagreed, as forcatalog_ref(§ 2.2).§ 5.7, a requirement L313 on main at 981a74e
Seller declares a ceiling; a buyer MAY request above it
§ 5.8, a requirement L335 in #75
terms_refMUST be hash-pinned and frozen atagreed.§ 5.8, a requirement L372 in #71
A seller MUST NOT disclose a buyer's
exclusionsto any party other than that buyer.§ 5.9, a requirement L332 on main at 981a74e
A seller MAY offer the same inventory through more than one