From 1279a5b3971551d5064dd642b88b4ff21e53a3a1 Mon Sep 17 00:00:00 2001 From: fgranata <220887501+fgranata@users.noreply.github.com> Date: Fri, 26 Jun 2026 20:02:23 +0200 Subject: [PATCH] compliance(media-buy): available_actions uses a non-guaranteed fixture (runnable by sales-non-guaranteed-only sellers) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The available_actions scenario seeded a guaranteed-only product fixture, so its create_buy_from_product step failed with a terminal DELIVERY_MODE_NOT_SUPPORTED for sellers declaring only specialisms: ["sales-non-guaranteed"], cascading the whole available-actions enforcement flow (read_persisted_buy_actions + enforce_available_actions all prerequisite_failed). The allowed_actions behavior this scenario grades is delivery-type-agnostic, so the fixture switches to non_guaranteed (fixed_price → floor_price). Same fix as the base media_buy_seller flow; the create steps reference the product/pricing by id, unchanged. The packaged dist/compliance/ cache is generated from this source. Co-Authored-By: Claude Opus 4.8 --- .changeset/available-actions-non-guaranteed.md | 6 ++++++ .../protocols/media-buy/scenarios/available_actions.yaml | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 .changeset/available-actions-non-guaranteed.md diff --git a/.changeset/available-actions-non-guaranteed.md b/.changeset/available-actions-non-guaranteed.md new file mode 100644 index 0000000000..7978d2de15 --- /dev/null +++ b/.changeset/available-actions-non-guaranteed.md @@ -0,0 +1,6 @@ +--- +--- + +compliance(media-buy): the `available_actions` scenario uses a non-guaranteed product fixture so `sales-non-guaranteed`-only sellers can run it. + +`available_actions.yaml` seeded a guaranteed-only product, so its `create_buy_from_product` step (and the whole available-actions enforcement flow that follows) failed with a terminal `DELIVERY_MODE_NOT_SUPPORTED` for sellers that declare only `specialisms: ["sales-non-guaranteed"]`. The `allowed_actions` behavior the scenario actually grades is delivery-type-agnostic, so the fixture is switched to `non_guaranteed` (floor-priced) — the same fix applied to the base `media_buy_seller` flow. The packaged `dist/compliance/` cache is generated from this source. diff --git a/static/compliance/source/protocols/media-buy/scenarios/available_actions.yaml b/static/compliance/source/protocols/media-buy/scenarios/available_actions.yaml index 6c0b4bf09a..3098c942d6 100644 --- a/static/compliance/source/protocols/media-buy/scenarios/available_actions.yaml +++ b/static/compliance/source/protocols/media-buy/scenarios/available_actions.yaml @@ -62,7 +62,12 @@ fixtures: - product_id: "available_actions_display" name: "Available Actions Display Package" description: "Display inventory fixture used to verify product allowed actions become buy available actions." - delivery_type: "guaranteed" + # Non-guaranteed so this scenario is runnable by sales-non-guaranteed-only + # sellers (a guaranteed-only fixture made create_buy_from_product fail with + # DELIVERY_MODE_NOT_SUPPORTED, cascading the whole available-actions flow). + # The allowed_actions below — what this scenario actually grades — are + # delivery-type-agnostic. Mirrors the base media-buy flow fix. + delivery_type: "non_guaranteed" channels: ["display"] format_ids: - id: "display_300x250" @@ -91,7 +96,7 @@ fixtures: pricing_option_id: "available_actions_cpm" pricing_model: "cpm" currency: "USD" - fixed_price: 8.0 + floor_price: 8.0 phases: - id: discover_product_action_template