Skip to content

Tracking: format_shape registry → canonical promotion queue (multi-placement takeover, roadblock, branded content, etc.) #3666

@bokelley

Description

@bokelley

Context

#3307 lands the 11 v2 canonicals (image, html5, display_tag, image_carousel, video_hosted, video_vast, audio_hosted, audio_daast, sponsored_placement, responsive_creative, agent_placement). They cover atomic creative shapes — they don't cover composed / coordinated / sponsorship shapes that high-end publishers and broadcast networks sell as headline products.

Surfaced during PR #3307 review (Pia Malovrh's adoption-pass): adopters want a clean way to express custom creative structures like multi-placement takeover, roadblock, branded content. Real ad-industry product types that aren't going away.

Decision (revised)

Don't add custom / format_shape; use ext as vehicle (the original recommendation in this issue) — wrong, and reversed. ext-only puts interesting structure in a free-form bag with no schema and no defined semantics. Buyer agents can see the blob but can't interpret it reliably, forcing human-in-the-loop. That regresses from v1's worst case (named formats with their own JSON schema) and breaks v2's load-bearing claim that buyer agents reason structurally without per-seller integration code.

Actual decision (landed in adcp@1cc7e2016):

Adopters with shapes the 11 canonicals don't cover ship via format_kind: \"custom\" with two required structured fields:

  1. format_shape — recognized global pattern from this registry: /schemas/core/format-shape-vocabulary.json. Gives buyer agents a classifier they can reason about ("this is some flavor of multi_placement_takeover").
  2. format_schema — URI+digest reference to a fetchable schema describing the actual params and slots. Same hosting model as platform_extensions (publisher-hosted for open ecosystem, AAO-mirror-translated for walled gardens, immutable per digest, aggressive caching). Buyer agents fetch by uri@digest and validate manifests structurally.

ext stays for genuinely experimental shapes that don't even fit a format_shape entry yet — but that's the rare case, not the default.

This issue tracks the format_shape registry → canonical promotion queue. As format_shape entries see adoption signal, the working group promotes them to first-class canonicals.

Promotion rubric

A format_shape registry entry is promoted to a format_kind canonical when:

  1. At least 2 production adopters ship it via format_kind: \"custom\" + format_schema
  2. 90 consecutive days without a breaking change to the shape adopters converged on
  3. The shape has a defined tracking model (which signals fire, which trackers attach, what the impression contract is)
  4. The working group opens a per-canonical promotion issue, drafts a canonical schema (/schemas/formats/canonical/<name>.json), adds the value to canonical-format-kind.json, lands a fixture, and ships in the next minor release. The format_shape registry entry is retired at that point.

Same governance pattern that produced the 11 canonicals from the v1 audit — adopter-driven, accountable.

Candidate shapes (the queue)

Currently in the format-shape vocabulary registry as format_shape entries:

  • multi_placement_takeover — coordinated buy targeting several placements at once (homepage skin + banner + preroll + sponsorship lockup, sold as a unit). Used by NYT, WSJ, Hulu, premium publishers.
  • roadblock — single advertiser owns all spots in a content unit (every commercial break in a half-hour show, every banner on a section page).
  • branded_content — publisher-produced editorial sponsorship (advertorial, sponsored articles, paid features). Distinct from agent_placement (AI-surface composition) and audio_hosted host-read.
  • cross_screen_sponsorship — synchronized buys across linear TV / CTV / display / audio. Frequency-capped at the user, not the screen.
  • sponsorship_lockup — persistent brand presence (Hulu's commercial-free experience presented by Brand X, podcast network sponsorship lockups).
  • newsletter_sponsorship — email-embedded creative with newsletter-issue-keyed measurement.
  • ar_lens — interactive AR creative (Snap lens, Meta camera filter, TikTok effect).
  • playable — interactive HTML5 mini-game or experience (Unity playable, IAB MRAID 3.0 playable).
  • live_event_sponsorship — sponsorship attached to a specific live broadcast (sports, concert, breaking-news window).

This list is open. Add candidates as they emerge in adopter feedback. Comment on this issue with the shape, the seller(s) using it, and a link to their format_schema URI.

How adopters add new shapes

If a shape isn't in the registry yet:

  1. Ship via format_kind: \"custom\" with a non-canonical format_shape value (validators may soft-warn but don't reject). format_schema is still required.
  2. File a vocabulary PR adding the shape to /schemas/core/format-shape-vocabulary.json with description, typical_use, and tracking_model_hint. Vocabulary PRs are governance-light — same level of review as asset-group-vocabulary.json additions, not a major-version bump.
  3. Once 2+ adopters converge on the shape, the entry becomes a promotion candidate per the rubric above.

What this issue is NOT

  • A spec change. The schema additions live in #3307. This issue is the canonical-promotion roadmap.
  • A commitment to canonicalize any specific shape on a calendar. Promotion is adopter-driven.
  • A complete enumeration. The list will grow as adopters surface novel shapes.

Refs

  • #3307 — v2 creative formats preview branch (where custom + format_shape + format_schema lands)
  • #3305 — v2 RFC
  • adcp@1cc7e2016 — schema additions for custom format_kind
  • v2-overview "Custom formats" section — adopter-facing walkthrough
  • v2-overview "Channels not yet canonicalized" section — adjacent gap (live, OOH, DAI, in-game, addressable TV)

Metadata

Metadata

Assignees

No one assigned

    Labels

    claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions