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). |
bokelley
left a comment
There was a problem hiding this comment.
Approved. The scenario grades allowed_actions rather than guaranteed delivery, so changing the incidental fixture to non_guaranteed removes a false failure for sales-non-guaranteed-only sellers without weakening the behavior under test. The source-only compliance fix and changeset are correctly scoped; all checks are green, with no CodeQL findings or unresolved threads.
bokelley
left a comment
There was a problem hiding this comment.
Correction after checking the changeset frontmatter against the repository playbook: this PR changes a published compliance asset, but .changeset/available-actions-non-guaranteed.md is an empty changeset. Empty changeset padding is explicitly disallowed. Please declare adcontextprotocol as a patch in that changeset; the scenario change itself remains approved.
bokelley
left a comment
There was a problem hiding this comment.
The required adcontextprotocol patch changeset is now present. The compliance fixture change remains correctly scoped and CI can rerun on the updated head.
|
Thanks for merging this! One follow-up on propagation: a fresh graded run against our agent (today, after the merge) still seeds a Could you say when the regenerated cache ships (next npm publish?) or whether the AAO engine can refresh from source sooner? Happy to re-verify the moment it does — the identical fixture fix in the base media_buy flow (#5703) went green against us with no seller change, so we expect the same here. |
|
The regenerated cache is already published. The v3.1.4 Version Packages run (PR #5909, merged 2026-07-19 00:26 UTC — ~4.5 h after this PR's merge) rebuilt The remaining lag is on the Generated by Claude Code |
|
Quick data point while the cache regen is pending: we ran the merged scenario source (packaged cache locally patched with this PR's |
|
(Our comments crossed — thanks for the fast turnaround on the 3.1.4 regen.) That matches what we see: the lag is the |
|
We pulled the v3.1.4 release asset to verify before re-running, and it looks like the regen didn't capture this fix: — while |
|
Your tarball check is correct, and I can confirm it from the repository directly: both What happened: Version Packages PR #5909 was created and built its compliance snapshot before this PR merged at 19:50 UTC. Merging #5909 afterward applied its pre-built What's queued: The changeset is now in the open Version Packages PR #5785, listed under the @bokelley — two things for your call: (1) if adopters need this on the 3.1.x line before 3.2.0 ships, a 3.1.5 patch would need to be cut separately (cherry-pick of the compliance fixture change); (2) otherwise, merging #5785 is the path. What's the priority here? Generated by Claude Code |
|
Thanks for confirming and for the clear explanation — that mechanism makes sense. From our side as an affected adopter: no urgency preference if #5785 / 3.2.0 is close; if it's likely to sit open for a while, a 3.1.5 cherry-pick would let graded runs pick up the fixture sooner. Either way we'll verify the shipped asset as soon as it's out — we've already confirmed the corrected scenario passes end-to-end against our agent, so we expect it to grade clean immediately. |
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