feat(creative): add VAST audio canonical format - #7099
Conversation
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated schema paths require human/CODEOWNERS review.
This PR adds the audio_vast canonical format as a clean additive Normative change. The reviewer found no blocking or Medium findings: the minor changeset is correct, schema↔docs coherence holds (counts move 14→15 consistently), oneOf branches are const-discriminated, and both positive and negative fixtures are covered. One non-blocking follow-up noted: the creative-agent preview-renderer and training-agent product-factory don't yet support audio_vast, but this degrades gracefully to a placeholder with no crash (unclaimed feature scope).
Despite the clean diff, this PR touches gated paths under static/schemas/source/** (16 files, incl. new audio_vast.json) which sit behind a hard, deterministic approval gate. review_decision is REVIEW_REQUIRED, not APPROVED, so decision-table row 2 fires: the gate is not satisfied and the outcome must be escalate.
Escalation reasons:
- Modifies/adds files under gated path
static/schemas/source/**(protocol source of truth) — requires human/CODEOWNERS review;review_decisionis currentlyREVIEW_REQUIRED.
Why human review
- Gated paths touched (static/schemas/source/** — 16 files including new audio_vast.json) and review_decision is REVIEW_REQUIRED, not APPROVED — human/CODEOWNERS approval required before merge.
- This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/core/assets/pixel-tracker-asset.json (modified) matches
static/schemas/source/**; static/schemas/source/core/assets/vast-asset.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/canonical-format-kind.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/canonical-format-option.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/canonical-projection-ref.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/creative-manifest.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/creative-representation.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/product-format-declaration.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/vast-media-file-requirements.json (modified) matchesstatic/schemas/source/**; static/schemas/source/creative/asset-types/index.json (modified) matchesstatic/schemas/source/**; static/schemas/source/enums/representation-selection-strategy.json (modified) matchesstatic/schemas/source/**; static/schemas/source/enums/vast-tracking-event.json (modified) matchesstatic/schemas/source/**; static/schemas/source/formats/canonical/_base.json (modified) matchesstatic/schemas/source/**; static/schemas/source/formats/canonical/audio_vast.json (added) matchesstatic/schemas/source/**; static/schemas/source/formats/canonical/coordinated_placements.json (modified) matchesstatic/schemas/source/**; static/schemas/source/media-buy/build-creative-request.json (modified) matchesstatic/schemas/source/**) and the current GitHub review decision is 'REVIEW_REQUIRED', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
b757f3b to
5996637
Compare
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated paths touched without required approval.
This PR modifies 15+ files under static/schemas/source/** (plus adds audio_vast.json), which sits under a hard, deterministic approval gate (gated_paths: true). The current GitHub review_decision is REVIEW_REQUIRED, not APPROVED, so per decision-table row 2 the gate is not satisfied and Ladon cannot auto-approve regardless of how clean the diff is.
The reviewer's delta pass found no critical/high/medium findings — the schema refactor (audio_vast media_file_requirements from allOf(ref+not) to bare $ref with constraints lifted to top-level not.anyOf, mutex preserved), the coordinated_placements oneOf branch removal, the changeset scoping, and docs coherence all check out. But a clean diff does not lift the gate; only a human/CODEOWNERS approval does.
Escalation reasons
- Touches
static/schemas/source/**(16 files including newaudio_vast.json) under a hard approval gate, andreview_decisionisREVIEW_REQUIRED, notAPPROVED— human/CODEOWNERS approval required before merge.
Note: this is consistent with the prior escalate decision; the gate condition still holds because approval has not yet been recorded.
Why human review
- Touches static/schemas/source/** (16 files including new audio_vast.json) under a hard, deterministic approval gate and review_decision is REVIEW_REQUIRED, not APPROVED — human/CODEOWNERS approval required before merge.
- This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/core/assets/pixel-tracker-asset.json (modified) matches
static/schemas/source/**; static/schemas/source/core/assets/vast-asset.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/canonical-format-kind.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/canonical-format-option.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/canonical-projection-ref.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/creative-manifest.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/creative-representation.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/product-format-declaration.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/vast-media-file-requirements.json (modified) matchesstatic/schemas/source/**; static/schemas/source/creative/asset-types/index.json (modified) matchesstatic/schemas/source/**; static/schemas/source/enums/representation-selection-strategy.json (modified) matchesstatic/schemas/source/**; static/schemas/source/enums/vast-tracking-event.json (modified) matchesstatic/schemas/source/**; static/schemas/source/formats/canonical/_base.json (modified) matchesstatic/schemas/source/**; static/schemas/source/formats/canonical/audio_vast.json (added) matchesstatic/schemas/source/**; static/schemas/source/media-buy/build-creative-request.json (modified) matchesstatic/schemas/source/**) and the current GitHub review decision is 'REVIEW_REQUIRED', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated schema paths require human/CODEOWNERS approval.
This PR modifies files under static/schemas/source/**, which are under a hard, non-overridable approval gate (gated_paths: true). The current GitHub review decision is REVIEW_REQUIRED, not APPROVED, so per decision-table row 2 the gate is not satisfied and the PR cannot be auto-approved regardless of how clean the diff is.
The reviewer's delta pass found no Critical/High/Medium findings: the audio_vast.json media_file_requirements refactor (bare $ref plus hoisted top-level not.anyOf) is semantically equivalent to the prior inline allOf constraints and valid draft-07 — the vast_version/vast_versions mutex, the audio/* MIME rule (contains+not+pattern correctly inverting the old items.pattern), and the no-visual-dimensions rule are all preserved. Removal of audio_vast from the coordinated_placements inline oneOf is net-zero vs main, tracked in lockstep by the negative-fixture removal and premium-display menu assertions, with audio_vast still reachable via format_option_ref. Schema↔docs coherence, changeset scope, and oneOf discriminator checks raised no concerns.
Prior decision was escalate for the same reason (unsatisfied gated-paths gate). No new critical/high/medium evidence exists, but the gate itself still stands because review_decision remains REVIEW_REQUIRED. A human/CODEOWNERS approval is required before this can merge.
Why human review
- Gated paths touched under
static/schemas/source/**(16 files including the newformats/canonical/audio_vast.json) andreview_decisionisREVIEW_REQUIRED, notAPPROVED— human/CODEOWNERS approval is required before merge (decision-table row 2). - This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/core/assets/pixel-tracker-asset.json (modified) matches
static/schemas/source/**; static/schemas/source/core/assets/vast-asset.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/canonical-format-kind.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/canonical-format-option.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/canonical-projection-ref.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/creative-manifest.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/creative-representation.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/product-format-declaration.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/vast-media-file-requirements.json (modified) matchesstatic/schemas/source/**; static/schemas/source/creative/asset-types/index.json (modified) matchesstatic/schemas/source/**; static/schemas/source/enums/representation-selection-strategy.json (modified) matchesstatic/schemas/source/**; static/schemas/source/enums/vast-tracking-event.json (modified) matchesstatic/schemas/source/**; static/schemas/source/formats/canonical/_base.json (modified) matchesstatic/schemas/source/**; static/schemas/source/formats/canonical/audio_vast.json (added) matchesstatic/schemas/source/**; static/schemas/source/media-buy/build-creative-request.json (modified) matchesstatic/schemas/source/**) and the current GitHub review decision is 'REVIEW_REQUIRED', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
Summary
audio_vastcanonical for VAST-tag-delivered audio, alongsideaudio_hostedand retainedaudio_daasthighest_compatible_vastsupportDAI lifecycle semantics and DAAST deprecation are intentionally out of scope.
Closes #6825
Standards basis
Validation
npm run test:schemas(914 schemas/examples, 183 contract tests, premium-display and geo suites)npm run typecheck