Skip to content

refs_resolve: pagination of list_creative_formats target #712

Description

@bokelley

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions