Skip to content

RFC: preserve one-of creative delivery variants for late seller binding #6762

Description

@bokelley

Problem

Creative material is often ingested before the destination seller, product, or
player is known. One logical creative can arrive with several equivalent
delivery representations. A CM360 tag sheet is a concrete example:

  • display: iframe/JavaScript, JavaScript, Standard, and Internal Redirect;
  • video/audio: VAST 2.0, 3.0, and 4.0 pre-fetch URLs.

The correct representation depends on the eventual product's format option and
execution path. Discarding alternatives at parse time makes later assignment
impossible; creating unrelated creative IDs loses logical identity,
provenance, revision correlation, and reporting continuity.

The current CreativeAsset contract selects one format_kind (and optionally
one format_option_ref) with one assets object. Arrays inside asset slots are
cardinality for formats such as carousels, not one_of delivery alternatives.
There is no protocol object or normative workflow for preserving equivalent
representations and selecting one after seller discovery.

References:

Proposed direction

Define a first-class, explicitly one_of delivery-variant set for pre-binding
creative intake. Each variant should carry:

{
  "variant_id": "cm360-vast-3",
  "format_kind": "video_vast",
  "format_option_ref": null,
  "assets": { "vast_tag": { "asset_type": "vast", "...": "..." } },
  "source": {
    "system": "cm360",
    "source_variant": "VAST 3.0 pre-fetch"
  }
}

The exact envelope could be delivery_variants[] on a creative-source object,
or a new creative-library object that compiles to an ordinary seller-bound
CreativeAsset. It should not overload repeatable asset groups.

Resolution workflow

  1. Ingest and preserve all valid source variants without executing them.
  2. Discover seller and product format options.
  3. Compute compatible variants using canonical kind, format-option
    requirements, seller capabilities, and asset metadata.
  4. Select exactly one representation for a seller-bound sync/assignment.
  5. Read back selected_variant_id, or return structured rejection reasons for
    every candidate when there is no compatible variant.

The protocol should decide whether selection is always buyer-side or may be
delegated to a seller that advertises deterministic variant resolution. Silent
seller guessing must not be the default.

Non-goals

  • Creative rotation or A/B testing. Variants here are equivalent trafficking
    representations, not content intended to rotate.
  • Treating a higher VAST version as universally better. Version compatibility
    is product/player-bound.
  • Inventing vendor macro replacements during ingestion.

Acceptance criteria

  • One logical creative can preserve multiple equivalent delivery
    representations under stable variant IDs.
  • Variant sets have explicit one_of semantics distinct from repeatable
    asset cardinality.
  • A seller-bound creative identifies the selected source variant.
  • Resolution failures return per-variant structured reasons.
  • Provenance and revision identity survive selection.
  • Worked examples cover a CM360 display row and VAST 2/3/4 alternatives.
  • Compliance vectors prove that unsupported alternatives are retained but
    never silently trafficked.

Compatibility and versioning

This can be additive if introduced as a pre-binding creative-source/library
object that compiles to today's CreativeAsset. Adding alternatives directly
to the seller-bound CreativeAsset union may require a larger versioning
discussion.

Metadata

Metadata

Assignees

No one assigned

    Labels

    claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.creativeneeds-wg-reviewBlocked on a working-group decision — surface in WG meeting agendasrfcProtocol change — auto-adds to roadmap boardspec / protocol

    Type

    No type

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions