feat(schema): add VAST 4.3 to the VAST version enum - #6141
Open
aleksUIX wants to merge 1 commit into
Open
Conversation
IAB Tech Lab released VAST 4.3 in December 2022, but vast-version.json stopped at 4.2. A creative manifest declaring a 4.3 tag fails validation today, so buyers trafficking 4.3 must declare a version their document does not carry. vast_version mirrors the version attribute on a VAST document's root element, and the enum already carries 2.0 and 3.0, so the roster is the published-version list rather than a curated feature set. core/requirements/vast-asset-requirements.json and formats/canonical/video_vast.json restated the version list inline, which is what let it drift. Both now $ref the shared enum, per the Enum Consolidation rule in docs/spec-guidelines.md. VAST 4.3 ships no XSD of its own; vast_4.2.xsd remains authoritative for 4.3 documents. The enum $comment records this so document-level validators do not reject version="4.3" for want of a 4.3 schema. VAST 4.4 is deliberately excluded: vast_4.4.xsd is annotated "DRAFT for working group discussion" and is not a published specification.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
enums/vast-version.jsontops out at4.2. IAB Tech Lab released VAST 4.3 in December 2022, so a creative manifest that declares the version its document actually carries fails validation today:(ajv, built
core/assets/vast-asset.json, asset{asset_type: "vast", delivery_type: "url", url: "...", vast_version: "4.3"}.)The practical effect is that a buyer trafficking a 4.3 tag has to declare
"4.2". That is a data-integrity problem on its own, and it becomes a correctness problem for any seller that compares the declaredvast_versionagainst theversionattribute on the document root.Why this clears the enum-membership bar
docs/spec-guidelines.mdtreats adding an enum value as a curation decision, with a dialect test that cosmetic or additive-optional differences do not pass. VAST 4.3 is a thin release, so that question is fair to ask.It clears the bar for a different reason than feature weight:
2.0and3.0. If the roster were curated by feature materiality, deprecated versions would not be members. It is the published-version list.vast_versionmirrors theversionattribute a VAST document declares on its root element. It is not a dialect selector, so the value has to exist to be declarable at all.InteractiveCreativeFilecontent may be an inlinedata:URI in 4.3, which a strict 4.2 consumer can mis-handle.Change
enums/vast-version.json: add"4.3". Description and$commentrecord two things implementers get wrong.core/requirements/vast-asset-requirements.jsonandformats/canonical/video_vast.jsonrestated the version list inline. Both now$refthe shared enum, per the Enum Consolidation rule indocs/spec-guidelines.md. The duplication is what let the list drift for four years.creative/asset-types/index.json(pluslastUpdated),index.json,docs/creative/asset-types.mdx,docs/protocol/get_adcp_capabilities.mdx(field table + example).VAST 4.3 ships no XSD of its own. IAB's
vast_4.2.xsdremains the authoritative schema for 4.3 documents. The$commentsays so explicitly, so a document-level validator does not rejectversion="4.3"for want of a 4.3 schema.VAST 4.4 is deliberately excluded.
vast_4.4.xsdexists in the IAB VAST repository but is annotated "DRAFT for working group discussion". A draft version in a normative enum would let buyers declare a version whose semantics can still change. The$commentrecords the condition for adding it later.Relationship to #5820
#5820 (open) specifies a
documentvalidation level that checks the tag's declared version against the asset'svast_version. Without this enum change, a valid 4.3 tag forces a mis-declaration and then trips that check, so this PR is a prerequisite for it rather than an overlap. The two do not touch the same files.Deliberate non-changes
creative_specs.vast_versionsinget-adcp-capabilities-response.jsonis an open^[0-9]+\.[0-9]+$pattern, not this enum. A seller can advertise a version that buyers cannot express in a manifest. Tightening it to$refthe enum would break anyone currently advertising a value outside the roster, so it is worth a separate decision. Happy to follow up if reviewers want it aligned.server/src/shared/formats.tshardcodesvast_versions: ['3.0','4.0','4.1','4.2']on four reference formats. That is a seller's declared acceptance list, and capping at 4.2 is a legitimate seller choice, so it is left alone rather than pulling server code into a schema PR.registries/v1-canonical-mapping.jsonstill maps>=4.0tovast_version: "4.2", which stays correct under its lowest-common-denominator note.Verification
build-schemasclean,$refresolves to an absolute URL indist/schemas/latest/. Passing:schema-validation(20/20),json-schema-validation(284/284),canonical-fixture-validation(15/15),canonical-format-conventions,mcp-schema-projection(7/7),composed-schema-validation(139/139),example-validation-simple(55/55),migration-validation,precommit:server-unit(5106 passed).Two local failures were verified pre-existing by re-running on a clean
mainwith the branch stashed:tests/sdk-safe-fetch.test.ts(local MCP discovery) andserver/src/utils/otel-logs.tsTS2561.snippet-validationreports 37 failures on this branch and 37 on cleanmain.