Decision records · Value formats
D-005 Is a committed metric's value a rate or a quantity, and is a rate such as viewable_rate, completion_rate, or match_rate_expected a fraction from 0 to 1 or a percentage?
What the schemas do
A rate is a number from 0 to 1, so 70 % is 0.7; any other committed metric, such as audience impacts for DOOH, is a number that is never negative.
Options
Why
A fraction has no unit and multiplies directly, as a derived figure needs. With bounds of 0 and 1, the common mistake of sending 70 for 70 % fails validation instead of passing as a 7000 % rate; with bounds of 0 and 100, a value of 0.7 meant as 70 % would pass silently. Only a rate is a proportion, though. The text names two rates, viewable_rate and completion_rate, and for DOOH "an audience-modelled metric", which counts an audience, so a committed value is a fraction while its metric is one of the two rates, and a number that is never negative for any other metric, since a modelled audience need not be whole. A metric the text doesn't name, such as DOOH audience impacts, is written as a namespaced term (D-014), as example.com:audience_impacts, and its value is such a number; a rate a vendor names that way can't be bounded, since nothing says it is a rate. A value means nothing without its metric, which says whether it is a rate, so an entry with a value gives its metric. match_rate_expected is a rate by its name. The § 3.1 delta_pct is a percentage by its name, so it isn't a fraction. This record first read every committed value as a fraction, which was too broad: it rejected a DOOH line item committing 1,200,000 audience impacts. It was corrected on 2026-10-28 to type the value by its metric.
What we ask the specification to state
State, for each metric, whether its value is a rate or a quantity. A rate, such as viewable_rate, completion_rate, or match_rate_expected, is a fraction from 0 to 1, for example 0.7 for 70 %; a quantity, such as audience impacts for DOOH, is a number that is never negative and need not be whole. Also state that an entry with a value gives its metric.
The specification lines it rests on
Each line is quoted as the record pins it. Expand an item to read the quote.
main
§ 5.7, the
committed_metrics[]row L320 at 44dfaafcommitted_metrics[]| Array[Object] | requestable |{ metric, value, basis }tuples —viewable_ratefor display,completion_ratefor video/audio/CTV, an audience-modelled metric for DOOH. Seller declares a ceiling; a buyer MAY request above it§ 5.3, the
buyer_suppliedrow L236 at 44dfaafbuyer_supplied| Object | supplied |{ segments_allowed, suppression_allowed, match_rate_expected, segments[], suppression_list }.match_rate_expectedis the seller's stated expectation;segments[]andsuppression_listare buyer-populated
With the open PRs
§ 5.7, the
committed_metrics[]row L313 on main at 981a74ecommitted_metrics[]| Array[Object] | requestable |{ metric, value, basis }tuples —viewable_ratefor display,completion_ratefor video/audio/CTV, an audience-modelled metric for DOOH. Seller declares a ceiling; a buyer MAY request above it§ 5.3, the
buyer_suppliedrow L229 on main at 981a74ebuyer_supplied| Object | supplied |{ segments_allowed, suppression_allowed, match_rate_expected, segments[], suppression_list }.match_rate_expectedis the seller's stated expectation;segments[]andsuppression_listare buyer-populated
What it shapes
main: Fraction, Measure, LineItem.buyer_supplied, LineItem.committed_metrics
With the open PRs: Fraction, Measure, LineItem.buyer_supplied, LineItem.committed_metrics