You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#4620 made the publisher's adagents.json catalog the authoritative answer to "what formats does this property support." Implementing the consumer side surfaced a gap that #4620 didn't need to resolve: a publisher-declared format is not necessarily a format any authorized sales agent can actually deliver, and the protocol has no way to express the difference.
I don't see a mechanism for this today — if one exists, point me at it and this becomes a docs ask rather than a spec one.
The gap
Two different questions get the same answer shape:
adagents.json#/formats[] — the publisher declares this unit exists and is sellable. Canonical format_kind + params, property-scoped via applies_to_property_ids / applies_to_property_tags, optionally bound to placements.
What a sales agent can execute — this can physically traffic. Determined by the agent's ad server: the placements it has access to, and the creative types those placements accept.
An ad-server placement accepts a size or creative type the publisher never declared. Trafficable, undeclared.
One publisher, several authorized agents, different ad-server footprints — so the deliverable subset differs per agent, while the declared set is shared.
Why it bites
A buyer resolving list_creative_formats(publisher_domain=...) gets a superset of what any one agent can fulfil. The failure shows up late — a rejected create_media_buy, or a creative that validates against the declaration and then has nowhere to serve.
Multi-publisher products have no defined eligibility rule. A product spanning two publisher domains: is the eligible format set the union of their declared catalogs, or the intersection? The spec doesn't say, and the two readings are meaningfully different for a curator or network product. This one is answerable independently of everything else above, and probably should be.
Questions
Q1 — Multi-publisher eligibility (normative). Union or intersection for a product spanning multiple publisher domains? Placement-bound formats make this sharper: if placements[] binds formats to property_ids / property_tags, is eligibility computed at the property level and then unioned, or is the publisher-level catalog the unit?
Q2 — Who owns the deliverability delta? Three readings, and I'd like the WG to pick one rather than leave it to implementations:
(a) Out of protocol scope. The publisher catalog is advisory — "what exists" — and the purchasable set is whatever appears in a product's format_options[]. Cheap, and mostly matches what implementations will do anyway, but it needs to be stated normatively in the docs, because Property-scoped format declarations — authoritative source for 'what formats does <property> support' #4620's framing ("authoritative source") reads as purchasable today.
(b) Declare it per agent in adagents.json. An authorized_agents[] entry carries a supported/unsupported format subset. Keeps one file authoritative; makes the publisher responsible for maintaining facts about someone else's ad server, which seems wrong.
(c) Report it agent-side.list_creative_formats responses distinguish publisher-declared from sellable-by-this-agent, so the agent answers for its own capability and the publisher still owns the declaration.
My read is (a) + (c): make the advisory/purchasable boundary normative in docs, and give the agent-side response enough provenance that a buyer agent can tell "the publisher says this exists" from "I can sell you this." That keeps the catalog authoritative for what it's genuinely authoritative about, and puts deliverability with the party that knows it.
Q3 — Provenance on format results. Related to (c) and useful regardless: should list_creative_formats results carry where each entry came from — publisher-hosted adagents.json, AAO mirror, or agent/product declaration? #4620 specced the resolution order (publisher-hosted → AAO mirror → fail-closed) but the result doesn't say which rung answered. A buyer treating a community-mirrored catalog the same as a publisher-hosted one is trusting a different thing.
Two smaller asks from the same implementation
Commercial terms are not format facts. Encoding a premium publisher's spec sheets, the material that most wanted to end up in the format schema was commercial: creative lead times, swap limits, approval SLAs. Those belong at product/negotiation level — they change per deal, and baking them into a format declaration laminates one seller's current manual process into a structural contract buyers validate against. Encoders reach for the format schema because it is the only structured place on offer. Worth a normative "format declarations describe the creative, not the terms of trade" line in the canonical-formats docs.
Classification convergence. Two independent expert encodings of the same publisher's spec material, by people who knew the spec, initially disagreed: one misclassification (a docking-video unit encoded as custom when its buyer deliverable was plain video_hosted), two source conflicts silently resolved in opposite directions, one format missed entirely. #5972 §5 documents the two boundaries that matter (multi_state_display vs responsive_creative; anything tag-delivered is display_tag regardless of behavioral richness) in prose, which is necessary and not sufficient — prose guidance did not converge two experts. Worth conformance fixtures: a set of realistic publisher spec descriptions with their expected canonical classification, so independent encoders and codegen consumers can check themselves. #4591 (conformance storyboard track) is closed — is there a home for classification fixtures, or should that be its own issue?
If classification stays this divergent, the catalog's authority erodes for a subtler reason than deliverability: two agents encode the same publisher unit two ways, and buyers can't tell it's the same unit.
Summary
#4620 made the publisher's
adagents.jsoncatalog the authoritative answer to "what formats does this property support." Implementing the consumer side surfaced a gap that #4620 didn't need to resolve: a publisher-declared format is not necessarily a format any authorized sales agent can actually deliver, and the protocol has no way to express the difference.I don't see a mechanism for this today — if one exists, point me at it and this becomes a docs ask rather than a spec one.
The gap
Two different questions get the same answer shape:
adagents.json#/formats[]— the publisher declares this unit exists and is sellable. Canonicalformat_kind+params, property-scoped viaapplies_to_property_ids/applies_to_property_tags, optionally bound to placements.These diverge routinely, in both directions:
Why it bites
list_creative_formats(publisher_domain=...)gets a superset of what any one agent can fulfil. The failure shows up late — a rejectedcreate_media_buy, or a creative that validates against the declaration and then has nowhere to serve.format_options[], we are back to N copies of the same truth with drift — the exact problem Property-scoped format declarations — authoritative source for 'what formats does <property> support' #4620 set out to fix.Questions
Q1 — Multi-publisher eligibility (normative). Union or intersection for a product spanning multiple publisher domains? Placement-bound formats make this sharper: if
placements[]binds formats toproperty_ids/property_tags, is eligibility computed at the property level and then unioned, or is the publisher-level catalog the unit?Q2 — Who owns the deliverability delta? Three readings, and I'd like the WG to pick one rather than leave it to implementations:
format_options[]. Cheap, and mostly matches what implementations will do anyway, but it needs to be stated normatively in the docs, because Property-scoped format declarations — authoritative source for 'what formats does <property> support' #4620's framing ("authoritative source") reads as purchasable today.adagents.json. Anauthorized_agents[]entry carries a supported/unsupported format subset. Keeps one file authoritative; makes the publisher responsible for maintaining facts about someone else's ad server, which seems wrong.list_creative_formatsresponses distinguish publisher-declared from sellable-by-this-agent, so the agent answers for its own capability and the publisher still owns the declaration.My read is (a) + (c): make the advisory/purchasable boundary normative in docs, and give the agent-side response enough provenance that a buyer agent can tell "the publisher says this exists" from "I can sell you this." That keeps the catalog authoritative for what it's genuinely authoritative about, and puts deliverability with the party that knows it.
Q3 — Provenance on format results. Related to (c) and useful regardless: should
list_creative_formatsresults carry where each entry came from — publisher-hostedadagents.json, AAO mirror, or agent/product declaration? #4620 specced the resolution order (publisher-hosted → AAO mirror → fail-closed) but the result doesn't say which rung answered. A buyer treating a community-mirrored catalog the same as a publisher-hosted one is trusting a different thing.Two smaller asks from the same implementation
Commercial terms are not format facts. Encoding a premium publisher's spec sheets, the material that most wanted to end up in the format schema was commercial: creative lead times, swap limits, approval SLAs. Those belong at product/negotiation level — they change per deal, and baking them into a format declaration laminates one seller's current manual process into a structural contract buyers validate against. Encoders reach for the format schema because it is the only structured place on offer. Worth a normative "format declarations describe the creative, not the terms of trade" line in the canonical-formats docs.
Classification convergence. Two independent expert encodings of the same publisher's spec material, by people who knew the spec, initially disagreed: one misclassification (a docking-video unit encoded as
customwhen its buyer deliverable was plainvideo_hosted), two source conflicts silently resolved in opposite directions, one format missed entirely. #5972 §5 documents the two boundaries that matter (multi_state_displayvsresponsive_creative; anything tag-delivered isdisplay_tagregardless of behavioral richness) in prose, which is necessary and not sufficient — prose guidance did not converge two experts. Worth conformance fixtures: a set of realistic publisher spec descriptions with their expected canonical classification, so independent encoders and codegen consumers can check themselves. #4591 (conformance storyboard track) is closed — is there a home for classification fixtures, or should that be its own issue?If classification stays this divergent, the catalog's authority erodes for a subtler reason than deliverability: two agents encode the same publisher unit two ways, and buyers can't tell it's the same unit.
Related
multi_state_display/page_takeover; the format category where declared-but-not-trafficable is most common