diff --git a/.changeset/fix-storyboard-uuid-idempotency-keys.md b/.changeset/fix-storyboard-uuid-idempotency-keys.md new file mode 100644 index 0000000000..2cfd290585 --- /dev/null +++ b/.changeset/fix-storyboard-uuid-idempotency-keys.md @@ -0,0 +1,7 @@ +--- +--- + +Replace 15 hardcoded idempotency_key literals across 9 media-buy storyboard scenarios +with `$generate:uuid_v4#` patterns, following the precedent set in #4218. +Also renames 3 pre-existing aliases in governance_denied and invalid_transitions that +did not follow the established `media_buy_seller___` convention. diff --git a/static/compliance/source/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml b/static/compliance/source/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml index 4c9fe67900..b11c249bf2 100644 --- a/static/compliance/source/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +++ b/static/compliance/source/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml @@ -114,7 +114,7 @@ phases: brand: domain: "acmeoutdoor.example" operator: "pinnacle-agency.example" - idempotency_key: "creative-fate-setup-create-buy-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_creative_fate_after_cancellation_setup_create_buy" start_time: "2026-09-01T00:00:00Z" end_time: "2026-09-30T23:59:59Z" packages: @@ -175,7 +175,7 @@ phases: assignments: - creative_id: "acme_reuse_banner_001" package_id: "$context.package_id" - idempotency_key: "creative-fate-setup-sync-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_creative_fate_after_cancellation_setup_sync_creative_with_assignment" context: correlation_id: "creative_fate--sync_creative_with_assignment" context_outputs: @@ -257,7 +257,7 @@ phases: media_buy_id: "$context.media_buy_id" canceled: true cancellation_reason: "Creative-fate scenario: releasing assignment to verify library persistence." - idempotency_key: "creative-fate-cancel-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_creative_fate_after_cancellation_cancel_buy_update_media_buy_canceled" context: correlation_id: "creative_fate--update_media_buy_canceled" validations: @@ -340,7 +340,7 @@ phases: brand: domain: "acmeoutdoor.example" operator: "pinnacle-agency.example" - idempotency_key: "creative-fate-second-buy-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_creative_fate_after_cancellation_reuse_creative_on_new_buy_create_second_buy" start_time: "2026-10-01T00:00:00Z" end_time: "2026-10-31T23:59:59Z" packages: @@ -406,7 +406,7 @@ phases: assignments: - creative_id: "acme_reuse_banner_001" package_id: "$context.second_package_id" - idempotency_key: "creative-fate-reassign-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_creative_fate_after_cancellation_reuse_creative_on_new_buy_reassign_creative" context: correlation_id: "creative_fate--reassign_creative" validations: diff --git a/static/compliance/source/protocols/media-buy/scenarios/governance_approved.yaml b/static/compliance/source/protocols/media-buy/scenarios/governance_approved.yaml index d6c7396d39..c56401e76b 100644 --- a/static/compliance/source/protocols/media-buy/scenarios/governance_approved.yaml +++ b/static/compliance/source/protocols/media-buy/scenarios/governance_approved.yaml @@ -84,7 +84,7 @@ phases: expected: | The governance agent acknowledges the plan with a plan_id. sample_request: - idempotency_key: "comply-gov-approved-sync-plans-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_governance_approved_governance_plan_setup_sync_plans" plans: - plan_id: "comply-gov-approved-plan" brand: diff --git a/static/compliance/source/protocols/media-buy/scenarios/governance_conditions.yaml b/static/compliance/source/protocols/media-buy/scenarios/governance_conditions.yaml index f545f6a786..90d0685afc 100644 --- a/static/compliance/source/protocols/media-buy/scenarios/governance_conditions.yaml +++ b/static/compliance/source/protocols/media-buy/scenarios/governance_conditions.yaml @@ -61,7 +61,7 @@ phases: expected: | The governance agent acknowledges the plan with a plan_id. sample_request: - idempotency_key: "comply-gov-conditions-sync-plans-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_governance_conditions_governance_plan_setup_sync_plans" plans: - plan_id: "comply-gov-conditions-plan" brand: diff --git a/static/compliance/source/protocols/media-buy/scenarios/governance_denied.yaml b/static/compliance/source/protocols/media-buy/scenarios/governance_denied.yaml index 7d068839a3..617438f975 100644 --- a/static/compliance/source/protocols/media-buy/scenarios/governance_denied.yaml +++ b/static/compliance/source/protocols/media-buy/scenarios/governance_denied.yaml @@ -61,7 +61,7 @@ phases: expected: | The governance agent acknowledges the plan with a plan_id. sample_request: - idempotency_key: "comply-gov-denied-sync-plans-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_governance_denied_governance_plan_setup_sync_plans" plans: - plan_id: "comply-gov-denied-plan" brand: @@ -188,7 +188,7 @@ phases: domain: "acmeoutdoor.example" operator: "pinnacle-agency.example" sandbox: true - idempotency_key: "$generate:uuid_v4#governance_denied_create_media_buy" + idempotency_key: "$generate:uuid_v4#media_buy_seller_governance_denied_buy_denied_create_media_buy_denied" start_time: "2026-04-01T00:00:00Z" end_time: "2026-06-30T23:59:59Z" packages: diff --git a/static/compliance/source/protocols/media-buy/scenarios/governance_denied_recovery.yaml b/static/compliance/source/protocols/media-buy/scenarios/governance_denied_recovery.yaml index 8f03d7bb14..3588a39214 100644 --- a/static/compliance/source/protocols/media-buy/scenarios/governance_denied_recovery.yaml +++ b/static/compliance/source/protocols/media-buy/scenarios/governance_denied_recovery.yaml @@ -61,7 +61,7 @@ phases: expected: | The governance agent acknowledges the plan. sample_request: - idempotency_key: "comply-gov-recovery-sync-plans-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_governance_denied_recovery_governance_plan_setup_sync_plans" plans: - plan_id: "comply-gov-recovery-plan" brand: @@ -184,7 +184,7 @@ phases: brand: domain: "acmeoutdoor.example" operator: "pinnacle-agency.example" - idempotency_key: "gov-recovery-initial-denied-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_governance_denied_recovery_buy_denied_create_media_buy_denied" start_time: "2026-04-01T00:00:00Z" end_time: "2026-06-30T23:59:59Z" packages: @@ -229,7 +229,7 @@ phases: brand: domain: "acmeoutdoor.example" operator: "pinnacle-agency.example" - idempotency_key: "gov-recovery-retry-approved-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_governance_denied_recovery_buy_retried_create_media_buy_retry" start_time: "2026-04-01T00:00:00Z" end_time: "2026-06-30T23:59:59Z" packages: diff --git a/static/compliance/source/protocols/media-buy/scenarios/invalid_transitions.yaml b/static/compliance/source/protocols/media-buy/scenarios/invalid_transitions.yaml index 18d18f1e0e..c908df9e75 100644 --- a/static/compliance/source/protocols/media-buy/scenarios/invalid_transitions.yaml +++ b/static/compliance/source/protocols/media-buy/scenarios/invalid_transitions.yaml @@ -73,7 +73,7 @@ phases: operator: "pinnacle-agency.example" media_buy_id: "does-not-exist-invalid-transitions-v1" paused: true - idempotency_key: "$generate:uuid_v4#update_unknown_media_buy" + idempotency_key: "$generate:uuid_v4#media_buy_seller_invalid_transitions_unknown_media_buy_update_unknown_media_buy" context: correlation_id: "invalid_transitions--update_unknown_media_buy" validations: @@ -140,7 +140,7 @@ phases: brand: domain: "acmeoutdoor.example" operator: "pinnacle-agency.example" - idempotency_key: "invalid-transitions-setup-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_invalid_transitions_setup_create_buy" start_time: "2026-08-01T00:00:00Z" end_time: "2026-08-31T23:59:59Z" packages: @@ -191,7 +191,7 @@ phases: domain: "acmeoutdoor.example" operator: "pinnacle-agency.example" media_buy_id: "$context.media_buy_id" - idempotency_key: "$generate:uuid_v4#update_unknown_package" + idempotency_key: "$generate:uuid_v4#media_buy_seller_invalid_transitions_unknown_package_update_unknown_package" packages: - package_id: "does-not-exist-package-invalid-transitions-v1" paused: true diff --git a/static/compliance/source/protocols/media-buy/scenarios/inventory_list_no_match.yaml b/static/compliance/source/protocols/media-buy/scenarios/inventory_list_no_match.yaml index 8f5f4eb301..da5e751faa 100644 --- a/static/compliance/source/protocols/media-buy/scenarios/inventory_list_no_match.yaml +++ b/static/compliance/source/protocols/media-buy/scenarios/inventory_list_no_match.yaml @@ -116,7 +116,7 @@ phases: brand: domain: "acmeoutdoor.example" operator: "pinnacle-agency.example" - idempotency_key: "inventory-list-no-match-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_inventory_list_no_match_no_match_attempt_create_buy_no_match" start_time: "2026-07-01T00:00:00Z" end_time: "2026-09-30T23:59:59Z" packages: diff --git a/static/compliance/source/protocols/media-buy/scenarios/inventory_list_targeting.yaml b/static/compliance/source/protocols/media-buy/scenarios/inventory_list_targeting.yaml index 9502c04168..185f7a8713 100644 --- a/static/compliance/source/protocols/media-buy/scenarios/inventory_list_targeting.yaml +++ b/static/compliance/source/protocols/media-buy/scenarios/inventory_list_targeting.yaml @@ -114,7 +114,7 @@ phases: domain: "acmeoutdoor.example" operator: "pinnacle-agency.example" sandbox: true - idempotency_key: "inventory-list-targeting-create-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_inventory_list_targeting_create_with_both_lists_create_buy_with_lists" start_time: "2026-07-01T00:00:00Z" end_time: "2026-09-30T23:59:59Z" packages: diff --git a/static/compliance/source/protocols/media-buy/scenarios/pending_creatives_to_start.yaml b/static/compliance/source/protocols/media-buy/scenarios/pending_creatives_to_start.yaml index 9bf1a639a0..daed0b1a41 100644 --- a/static/compliance/source/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +++ b/static/compliance/source/protocols/media-buy/scenarios/pending_creatives_to_start.yaml @@ -103,7 +103,7 @@ phases: brand: domain: "acmeoutdoor.example" operator: "pinnacle-agency.example" - idempotency_key: "pending-creatives-transition-v1" + idempotency_key: "$generate:uuid_v4#media_buy_seller_pending_creatives_to_start_create_without_creatives_create_buy_no_creatives" start_time: "2026-08-01T00:00:00Z" end_time: "2026-08-31T23:59:59Z" packages: