Skip to content

feat(creative): add VAST audio canonical format - #7099

Merged
bokelley merged 2 commits into
mainfrom
issue-6825-for-3-2
Aug 31, 2026
Merged

feat(creative): add VAST audio canonical format#7099
bokelley merged 2 commits into
mainfrom
issue-6825-for-3-2

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Summary

  • add the audio_vast canonical for VAST-tag-delivered audio, alongside audio_hosted and retained audio_daast
  • reuse the shared VAST asset/version/tracking contracts with audio MIME constraints, exact manifest versioning, and highest_compatible_vast support
  • document VAST 4.1+ as the standards-conformant audio profile while allowing explicitly seller-advertised older versions for legacy interoperability
  • add a complete product/manifest example, training-agent validation, and cross-surface regression coverage

DAI 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)
  • precommit suite (1,056 general tests; 7,699 server tests, 30 skipped)
  • current 3.2 compliance matrix across all seven tenants
  • frozen 3.0 compatibility matrix across all seven tenants
  • npm run typecheck
  • changeset protocol-scope and version-sync checks
  • independent protocol, product, and code review

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_decision is currently REVIEW_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) matches static/schemas/source/**; static/schemas/source/core/canonical-format-kind.json (modified) matches static/schemas/source/**; static/schemas/source/core/canonical-format-option.json (modified) matches static/schemas/source/**; static/schemas/source/core/canonical-projection-ref.json (modified) matches static/schemas/source/**; static/schemas/source/core/creative-manifest.json (modified) matches static/schemas/source/**; static/schemas/source/core/creative-representation.json (modified) matches static/schemas/source/**; static/schemas/source/core/product-format-declaration.json (modified) matches static/schemas/source/**; static/schemas/source/core/vast-media-file-requirements.json (modified) matches static/schemas/source/**; static/schemas/source/creative/asset-types/index.json (modified) matches static/schemas/source/**; static/schemas/source/enums/representation-selection-strategy.json (modified) matches static/schemas/source/**; static/schemas/source/enums/vast-tracking-event.json (modified) matches static/schemas/source/**; static/schemas/source/formats/canonical/_base.json (modified) matches static/schemas/source/**; static/schemas/source/formats/canonical/audio_vast.json (added) matches static/schemas/source/**; static/schemas/source/formats/canonical/coordinated_placements.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/build-creative-request.json (modified) matches static/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.

@aao-secretariat aao-secretariat Bot added the ladon/needs-human-review Ladon has escalated this PR for human review. label Aug 30, 2026
@bokelley
bokelley force-pushed the issue-6825-for-3-2 branch from b757f3b to 5996637 Compare August 30, 2026 22:26

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 new audio_vast.json) under a hard approval gate, and review_decision is REVIEW_REQUIRED, not APPROVED — 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) matches static/schemas/source/**; static/schemas/source/core/canonical-format-kind.json (modified) matches static/schemas/source/**; static/schemas/source/core/canonical-format-option.json (modified) matches static/schemas/source/**; static/schemas/source/core/canonical-projection-ref.json (modified) matches static/schemas/source/**; static/schemas/source/core/creative-manifest.json (modified) matches static/schemas/source/**; static/schemas/source/core/creative-representation.json (modified) matches static/schemas/source/**; static/schemas/source/core/product-format-declaration.json (modified) matches static/schemas/source/**; static/schemas/source/core/vast-media-file-requirements.json (modified) matches static/schemas/source/**; static/schemas/source/creative/asset-types/index.json (modified) matches static/schemas/source/**; static/schemas/source/enums/representation-selection-strategy.json (modified) matches static/schemas/source/**; static/schemas/source/enums/vast-tracking-event.json (modified) matches static/schemas/source/**; static/schemas/source/formats/canonical/_base.json (modified) matches static/schemas/source/**; static/schemas/source/formats/canonical/audio_vast.json (added) matches static/schemas/source/**; static/schemas/source/media-buy/build-creative-request.json (modified) matches static/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.

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 new formats/canonical/audio_vast.json) and review_decision is REVIEW_REQUIRED, not APPROVED — 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) matches static/schemas/source/**; static/schemas/source/core/canonical-format-kind.json (modified) matches static/schemas/source/**; static/schemas/source/core/canonical-format-option.json (modified) matches static/schemas/source/**; static/schemas/source/core/canonical-projection-ref.json (modified) matches static/schemas/source/**; static/schemas/source/core/creative-manifest.json (modified) matches static/schemas/source/**; static/schemas/source/core/creative-representation.json (modified) matches static/schemas/source/**; static/schemas/source/core/product-format-declaration.json (modified) matches static/schemas/source/**; static/schemas/source/core/vast-media-file-requirements.json (modified) matches static/schemas/source/**; static/schemas/source/creative/asset-types/index.json (modified) matches static/schemas/source/**; static/schemas/source/enums/representation-selection-strategy.json (modified) matches static/schemas/source/**; static/schemas/source/enums/vast-tracking-event.json (modified) matches static/schemas/source/**; static/schemas/source/formats/canonical/_base.json (modified) matches static/schemas/source/**; static/schemas/source/formats/canonical/audio_vast.json (added) matches static/schemas/source/**; static/schemas/source/media-buy/build-creative-request.json (modified) matches static/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.

@bokelley
bokelley enabled auto-merge (squash) August 30, 2026 22:34
@bokelley
bokelley disabled auto-merge August 31, 2026 10:19
@bokelley
bokelley merged commit 51ffa95 into main Aug 31, 2026
60 checks passed
@bokelley
bokelley deleted the issue-6825-for-3-2 branch August 31, 2026 10:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ladon/needs-human-review Ladon has escalated this PR for human review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

spec(creative): add audio_vast canonical format (VAST-delivered audio)

1 participant