compliance(media-buy): available_actions should be runnable by sales-non-guaranteed-only sellers#5731
Conversation
…e (runnable by sales-non-guaranteed-only sellers) 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 <noreply@anthropic.com>
There was a problem hiding this comment.
The automated review encountered an issue (possibly reached max turns, timed out, or failed to post the final gh pr review). A human reviewer should take this PR.
This is an automated message from the Argus AI review workflow.
|
Gentle nudge on this one. The sibling fix for the base On the current graded cache (3.1.1, Happy to rebase if it's drifted from |
|
@bokelley checking in on this one — the sibling base-flow fix (#5703) merged on 2026-06-26, but this |
|
@bokelley — one more check-in on this one. On the current graded 3.1.x cache it remains the last blocker for the guaranteed-fixture cluster on cc @EmmaLouise2018 @nastassiafulconis — in case Brian's queue is deep: this is a two-line compliance-fixture change (guaranteed → non_guaranteed seed, sibling of merged #5703), CI is green, and it needs no seller-side coordination — any maintainer can land it. While I have you: #5783 is in the same boat — it's the contract-documentation PR Brian green-lit in #5337 ("Go ahead with the contract PR"), scoped exactly to his implementation notes there, all checks green since 2026-07-01. Landing both closes out the whole runner-contract thread (#5337 can then close too). |
Problem
Follows the same root cause as the base
media_buy_sellerflow fix (recently merged):available_actions.yamlseeds a guaranteed-only product fixture (available_actions_display,delivery_type: guaranteed). A seller declaring onlyspecialisms: ["sales-non-guaranteed"]correctly rejects a guaranteed buy with a terminalDELIVERY_MODE_NOT_SUPPORTED, socreate_buy_from_productfails and the whole enforcement flow (read_persisted_buy_actions,enforce_available_actions) cascades asprerequisite_failed.Change
Switch the fixture to
non_guaranteed(fixed_price→floor_price). Theallowed_actionsbehavior this scenario actually grades (self-serve vs requires-approval action enforcement) is delivery-type-agnostic, so nothing about the test's intent changes. The create steps reference the product/pricing by id, unchanged.Reproduction
Against a live
sales-non-guaranteedseller,media_buy_seller/available_actions→create_buy_from_productreturnsDELIVERY_MODE_NOT_SUPPORTED(terminal) → downstream stepsprerequisite_failed.Scope note for maintainers
This is the second incidental guaranteed-only fixture (after the base flow). I found 8 other media-buy scenarios that also seed
delivery_type: guaranteed(billing_finality_delivery,create_media_buy_async,measurement_accountability,vendor_metric_accountability,delivery_reporting,canonical_formats,get_products_async,governance_approved). I deliberately did not touch those — some likely test guaranteed-specific behavior on purpose (e.g.governance_approved's IO-approval, the async arms) and should stay guaranteed + be capability-gated rather than flipped. Happy to follow up per your guidance on which are incidental vs intentional.Source-only change; the packaged
dist/compliance/cache is generated by the build.🤖 Generated with Claude Code