Problem
refs_resolve compares a source ref set against a target set drawn from a single step's response. On media_buy_seller's list_formats step, if the seller paginates list_creative_formats and the runner reads only the first page, valid format_ids referenced by products but defined on later pages will grade as missing — a false positive.
Resolution options
A. Spec clarification. Require that when list_creative_formats is called during compliance, the seller MUST return every format referenced by any product returned by get_products in a single response, regardless of normal pagination policy. Simple; couples compliance-run behavior to a storyboard assertion; probably needs AdCP spec language.
B. Runner follows pagination. When target.path evaluates to an incomplete set and the response carries pagination metadata (next_cursor, etc.), the runner calls list_creative_formats until exhausted, then performs refs_resolve against the aggregated set. Cleaner from the seller's side; adds runner complexity + latency budget.
C. Document the limitation and degrade gracefully. If pagination metadata is present, refs_resolve adds an observation noting that the target set may be incomplete and demotes missing refs to observations instead of failures. Simplest; weakest enforcement.
Recommendation
Option A for v1 (land alongside adcp-client#710 canonicalization fix). List_creative_formats responses are small enough in practice that a compliance-context "return everything referenced by products" rule is reasonable and unambiguous. Revisit if real sellers push back.
Context
Surfaced by protocol review on adcontextprotocol/adcp#2601.
Problem
refs_resolvecompares a source ref set against a target set drawn from a single step's response. Onmedia_buy_seller'slist_formatsstep, if the seller paginateslist_creative_formatsand the runner reads only the first page, valid format_ids referenced by products but defined on later pages will grade as missing — a false positive.Resolution options
A. Spec clarification. Require that when
list_creative_formatsis called during compliance, the seller MUST return every format referenced by any product returned byget_productsin a single response, regardless of normal pagination policy. Simple; couples compliance-run behavior to a storyboard assertion; probably needs AdCP spec language.B. Runner follows pagination. When target.path evaluates to an incomplete set and the response carries pagination metadata (
next_cursor, etc.), the runner callslist_creative_formatsuntil exhausted, then performs refs_resolve against the aggregated set. Cleaner from the seller's side; adds runner complexity + latency budget.C. Document the limitation and degrade gracefully. If pagination metadata is present, refs_resolve adds an observation noting that the target set may be incomplete and demotes missing refs to observations instead of failures. Simplest; weakest enforcement.
Recommendation
Option A for v1 (land alongside adcp-client#710 canonicalization fix). List_creative_formats responses are small enough in practice that a compliance-context "return everything referenced by products" rule is reasonable and unambiguous. Revisit if real sellers push back.
Context
Surfaced by protocol review on adcontextprotocol/adcp#2601.