Problem
AdCP 3.2 beta currently has contradictory VAST-version contracts:
formats/canonical/video_vast.json defines singular params.vast_version.
docs/creative/channels/video.mdx shows plural
params.vast_versions: ["3.0", "4.0", "4.1", "4.2"].
- The same video documentation later says format requirements use singular
vast_version and requires document, asset, format, and seller capability to
match.
get_adcp_capabilities.execution.creative_specs.vast_versions is plural and
seller-wide.
- A VAST asset correctly declares one exact
vast_version.
Because canonical format schemas are permissive, the plural documentation
example can validate while the schema silently ignores the field. An
implementation following the schema can expose only one accepted version per
format option; an implementation following the docs can expose an unenforced
list. This prevents interoperable version resolution.
References:
Proposed resolution
Use different cardinality at the two layers:
- Asset: singular
vast_version — the exact version the supplied VAST URL
or inline document declares.
- Product format option: plural
vast_versions[] — the accepted set for
that product/player/execution path.
- Agent capabilities: plural
vast_versions[] — the seller-wide ceiling,
never sufficient by itself to prove one product accepts every version.
Deprecate singular format-option vast_version as a one-element alias if
needed for 3.x compatibility. Do not relabel or synthesize an asset at a newer
version merely because the destination supports it.
Normative compatibility rule
A VAST asset is version-compatible only when:
asset.vast_version
∈ product.format_option.params.vast_versions
∩ seller.execution.creative_specs.vast_versions
When a pre-binding creative has multiple VAST source variants, candidate
versions are intersected with those two accepted sets. The buyer selects one,
or a seller with an explicit deterministic-resolution capability returns the
selected version. Highest-compatible is a useful default only after the
intersection is known.
VAST_VERSION_MISMATCH should report:
- the asset's declared version;
- the product-accepted versions;
- the seller-wide versions; and
- the selected format option.
Version roster
The single enum source remains authoritative: 2.0, 3.0, 4.0, 4.1, 4.2, and
4.3 in the current 3.2 beta. Product and capability arrays must reference it
rather than restating version strings or ranges.
Acceptance criteria
Compatibility
Additive with a deprecated singular alias; otherwise changing the format param
name needs explicit 3.x migration handling.
Problem
AdCP 3.2 beta currently has contradictory VAST-version contracts:
formats/canonical/video_vast.jsondefines singularparams.vast_version.docs/creative/channels/video.mdxshows pluralparams.vast_versions: ["3.0", "4.0", "4.1", "4.2"].vast_versionand requires document, asset, format, and seller capability tomatch.
get_adcp_capabilities.execution.creative_specs.vast_versionsis plural andseller-wide.
vast_version.Because canonical format schemas are permissive, the plural documentation
example can validate while the schema silently ignores the field. An
implementation following the schema can expose only one accepted version per
format option; an implementation following the docs can expose an unenforced
list. This prevents interoperable version resolution.
References:
video_vast.jsonvideo.mdxvast-asset.jsonvast-version.jsonProposed resolution
Use different cardinality at the two layers:
vast_version— the exact version the supplied VAST URLor inline document declares.
vast_versions[]— the accepted set forthat product/player/execution path.
vast_versions[]— the seller-wide ceiling,never sufficient by itself to prove one product accepts every version.
Deprecate singular format-option
vast_versionas a one-element alias ifneeded for 3.x compatibility. Do not relabel or synthesize an asset at a newer
version merely because the destination supports it.
Normative compatibility rule
A VAST asset is version-compatible only when:
When a pre-binding creative has multiple VAST source variants, candidate
versions are intersected with those two accepted sets. The buyer selects one,
or a seller with an explicit deterministic-resolution capability returns the
selected version. Highest-compatible is a useful default only after the
intersection is known.
VAST_VERSION_MISMATCHshould report:Version roster
The single enum source remains authoritative: 2.0, 3.0, 4.0, 4.1, 4.2, and
4.3 in the current 3.2 beta. Product and capability arrays must reference it
rather than restating version strings or ranges.
Acceptance criteria
singular asset version vs. plural accepted versions.
sibling-option duplication.
VAST_VERSION_MISMATCHreturns all three relevant version sets/values.accepts only 3.0/4.0.
Compatibility
Additive with a deprecated singular alias; otherwise changing the format param
name needs explicit 3.x migration handling.