Skip to content

feat(compliance): add optional audio build phase to creative_template storyboard#4019

Merged
bokelley merged 1 commit intomainfrom
claude/issue-4015-audio-storyboard-variant
May 3, 2026
Merged

feat(compliance): add optional audio build phase to creative_template storyboard#4019
bokelley merged 1 commit intomainfrom
claude/issue-4015-audio-storyboard-variant

Conversation

@bokelley
Copy link
Copy Markdown
Contributor

@bokelley bokelley commented May 3, 2026

Closes #4015

Summary

Audio-creative platforms (TTS services, voice generation agents, mix/master pipelines) could not pass the creative_template storyboard because its build phase sends image inputs and expects display-tag output. They validated via manual round-trip + SDK tests only — no formal compliance signal.

This PR adds an optional audio_build phase with a single build_audio_creative step that exercises build_creative with audio inputs (script text, voice descriptor, click URL) and validates that the output carries a creative manifest with assets. Both sync returns and task-envelope async returns (submitted → working → completed) are valid under the existing comply_scenario: creative_flow gate.

Files changed:

  • static/compliance/source/specialisms/creative-template/index.yaml — new audio_build phase appended
  • static/compliance/source/test-kits/acme-outdoor.yamlsupports_audio_formats flag + assets.audio reference block

Non-breaking justification

Additive scenario only: no existing phases or steps are modified. The new phase is marked optional: true and gated by skip_if: "!test_kit.supports_audio_formats", which defaults to false in acme-outdoor.yaml. Display-only template agents grade the phase not_applicable with zero behavior change. Per the conformance-harness patch-eligibility rules in the playbook, additive storyboard scenarios are non-breaking.

Pre-PR review

  • code-reviewer: approved (1 nit — test-kit assets.audio comment clarified; 1 blocker fixed — added optional: true to phase)
  • ad-tech-protocol-expert: approved — asset_type: "text" without sub-discriminator is consistent with existing headline pattern in the same storyboard; audio asset type is registered in static/schemas/source/creative/asset-types/index.json; click_url key name matches existing display build steps; skip_if scope is correct (static test-kit flag, not runtime response data); changeset correctly uses --empty

Note (nit, not blocking): The validations block cannot assert a specific output audio asset key because the key name is format-defined, not protocol-defined. The expected prose is normative on this: "A creative manifest with an audio asset (asset_type: audio) and a resolvable URL." A runner that supports key-agnostic anyOf(asset_type: audio) scanning could enforce this at the harness level as a follow-up.

Triage-managed PR. This bot does not currently iterate on
review comments or PR conversation threads (only on the source
issue). To unblock:

  • Push fixup commits directly: gh pr checkout <num>
    fix → push.
  • Or re-trigger: comment /triage execute on the source
    issue.

See #3121
for context.

Session: https://claude.ai/code/session_013KNxYsZtapmfcVndMGx1Tw


Generated by Claude Code

… storyboard (#4015)

Adds an optional `audio_build` phase to the `creative_template` specialism
storyboard. Audio-creative platforms (TTS services, voice generation agents,
mix/master pipelines) could not pass the existing storyboard because the
`build` phase sends image inputs and expects display-tag output; they validated
via manual round-trip only.

The new phase exercises `build_creative` with audio inputs (script and voice
text assets, click_url) and validates that the output carries a creative
manifest with assets. Both sync returns and task-envelope async returns are
valid under `comply_scenario: creative_flow`.

The phase is marked `optional: true` and gated by
`skip_if: "!test_kit.supports_audio_formats"`. Display-only template agents
(the majority today) leave the flag `false` in the test kit and the runner
grades the phase `not_applicable`. Audio platform adopters flip it to `true`.

Also adds `supports_audio_formats: false` and an `assets.audio` reference
block to `acme-outdoor.yaml` for adopters authoring audio format specs.

Non-breaking: additive scenario per conformance-harness patch-eligibility
rules in the playbook.

https://claude.ai/code/session_013KNxYsZtapmfcVndMGx1Tw
@bokelley bokelley added the claude-triaged Issue has been triaged by the Claude Code triage routine. Remove to re-triage. label May 3, 2026
@bokelley bokelley marked this pull request as ready for review May 3, 2026 23:32
@bokelley bokelley merged commit d1dbc5e into main May 3, 2026
19 checks passed
@bokelley bokelley deleted the claude/issue-4015-audio-storyboard-variant branch May 3, 2026 23:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

claude-triaged Issue has been triaged by the Claude Code triage routine. Remove to re-triage.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

creative_template storyboard: add audio variant (TTS / mix / master pattern)

2 participants