fix(storyboards): seed per-package products for multi-package create_media_buy#2894
Merged
fix(storyboards): seed per-package products for multi-package create_media_buy#2894
Conversation
Picks up the SDK's spec-shaped request-builders for log_event, create_media_buy, list_creative_formats, si_*, sync_governance (adcp-client#794, #789, #802) and the VALIDATION_ERROR retry-storm guard (adcp-client#758). Closes most of the framework-mode zod-parity gap. Both legacy and framework regress on the bump because adcp-client#794 makes the runner emit every authored package on create_media_buy, exposing per-package products our catalog does not seed. Adjusts CI baselines to the new floor; fixture-seeding follow-up tracked separately. Framework-only delta vs. legacy is now 5 storyboards / 7 step failures, listed in the changeset.
…media_buy After adcp-client#794 makes the runner emit every authored package instead of dropping packages[1+], sellers without matching products in their default catalog hit `PRODUCT_NOT_FOUND: Package 1: Product not found: <id>` and cascading step failures. Wire adcp-client#790's fixture-seeding feature on the six storyboards whose create_media_buy steps author multi-package payloads. Each now declares `controller_seeding: true` + a fixtures block so the runner pre-seeds the per-package products and pricing options via comply_test_controller before phase 1 — and packages[1+].product_id / pricing_option_id resolve regardless of the seller's default catalog. Affected storyboards: - protocols/media-buy/index.yaml - protocols/media-buy/scenarios/delivery_reporting.yaml - protocols/media-buy/scenarios/governance_approved.yaml - specialisms/creative-generative/generative-seller.yaml - specialisms/sales-broadcast-tv/index.yaml - specialisms/sales-guaranteed/index.yaml
The initial bump used a local tarball during validation; the committed lockfile carried that file:// path, breaking CI which can't resolve it. Reinstall from the registry so the lockfile points at npm.
…into bokelley/seed-multi-package-fixtures
) Every use case run-one-storyboard.ts supported is now covered by the published adcp CLI (shipped in @adcp/client 5.12): - Single-storyboard diagnostic run: adcp storyboard run <url> <id> - Single-step debug: adcp storyboard step <url> <id> <step> - JSON + JUnit output native run-storyboards.ts stays — the dual-mode CI matrix and per-storyboard test_kit / /mcp-strict routing it encodes doesn't fit the helper's single-agent-one-config shape. Retirement tracked as an upstream RFC for per-storyboard config on runAgainstLocalAgent.
Storyboards load from @adcp/client's bundled compliance cache (a snapshot synced from this repo on SDK publish). Spec changes in this repo are invisible to the runner until the SDK republishes. Overlay the source tree onto the cache before running so CI validates in-repo spec changes immediately. Fixes CI on fixture-seeding PRs whose baselines assumed the overlay (which previously only existed in local dev).
…rlay My original baselines (42/37) were taken from a local run where I'd overlaid static/compliance/source/ onto the SDK cache. Without that overlay, CI sees 38/32 clean on the bump — matching the fixture-seeding regression documented in the PR. Lower the floor here; the follow-up fixtures PR (adcp#2894) lifts it back up.
…into bokelley/seed-multi-package-fixtures
…ackage-fixtures # Conflicts: # .github/workflows/training-agent-storyboards.yml
protocols/governance/index.yaml pre-existed this PR and seeds outdoor_video_q2 as a guaranteed/video_15s/\$12 product. Three new fixtures in this PR (delivery_reporting, governance_approved, creative-generative) diverged (non_guaranteed/video_30s/\$15), so the SDK's seed store refused the replay with seed_product.outdoor_video_q2: INVALID_PARAMS ... diverges from the previously seeded fixture on every storyboard reached after governance/index.yaml had run. Match the canonical seed shape (guaranteed / video_15s / fixed_price 12.0) across the three PR-added fixtures. The storyboards' create_media_buy packages only reference pricing_option_id, so delivery_type + format_id don't affect the flow — this is purely a seed-body alignment.
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
After
@adcp/client5.12 (adcp-client#794) makes the storyboard runner emit every authored package oncreate_media_buyinstead of silently droppingpackages[1+], sellers without matching products in their default catalog hitPRODUCT_NOT_FOUND: Package 1: Product not found: <id>and cascading step failures in their conformance runs.Wires adcp-client#790's fixture-seeding feature on the six storyboards whose
create_media_buysteps author multi-package payloads. Each now declarescontroller_seeding: true+ afixtures:block so the runner pre-seeds the per-package products and pricing options viacomply_test_controllerbefore phase 1.Affected storyboards and the products they now seed:
media_buy_sellersports_preroll_q2,lifestyle_display_q2cpm_guaranteed,cpm_standardmedia_buy_seller/delivery_reportingoutdoor_display_q2,outdoor_video_q2cpm_standard(both)media_buy_seller/governance_approvedoutdoor_display_q2,outdoor_video_q2cpm_standard(both)creative_generative/selleroutdoor_display_q2,outdoor_video_q2cpm_guaranteed,cpm_standardsales_broadcast_tvprimetime_30s_mf,late_fringe_15s_mfunit_primetime_30,unit_fringe_15sales_guaranteedsports_preroll_q2_guaranteed,outdoor_ctv_q2_guaranteedcpm_guaranteed_fixed(both)All pricing uses
fixed_pricerather thanfloor_priceso the non-auction bid-price requirement doesn't trip storyboards that omitbid_pricein theircreate_media_buysample_request.Validation
Overlaid the edited YAMLs into
@adcp/client's compliance cache locally and re-ran viaadcp storyboard run. Seed phase fires end-to-end — e.g. forsales_broadcast_tv:create_media_buyno longer throwsPRODUCT_NOT_FOUND. Downstreamget_delivery/check_buy_statusfailures are pre-existing (media_buy_id context-resolution) and tracked separately.Test plan
adcp storyboard runwith overlaid cache🤖 Generated with Claude Code