compliance(media-buy): base media_buy_seller flow should be runnable by sales-non-guaranteed-only sellers#5703
Merged
bokelley merged 1 commit intoJun 26, 2026
Conversation
…le by sales-non-guaranteed-only sellers) The base media_buy_seller flow (protocols/media-buy/index.yaml) seeded guaranteed-only product fixtures and its create_buy step hardcoded a guaranteed buy. A seller declaring only specialisms: ["sales-non-guaranteed"] correctly rejects a guaranteed buy (DELIVERY_MODE_NOT_SUPPORTED), so create_buy failed and the dependent creative_sync / delivery_monitoring steps cascaded — the base lifecycle was unrunnable for the entire non-guaranteed-only seller class. Switch the base lifecycle to the universal non-guaranteed (auction) path: fixtures + the create_buy packages now use delivery_type=non_guaranteed with floor-priced pricing options. The guaranteed lifecycle (human IO approval, proposal_finalize) remains covered by the sales-guaranteed specialism bundle, which carries its own guaranteed fixtures — consistent with that bundle's existing pattern of seeding non-guaranteed products first for the shared seller scenarios. The packaged cache under dist/compliance/ is generated from this source and should be regenerated by the build. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
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.
bokelley
approved these changes
Jun 26, 2026
bokelley
left a comment
Contributor
There was a problem hiding this comment.
Reviewed for triage cleanup: green, scoped, and no 3.2-triggering changeset.
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.
Problem
The base
media_buy_sellerflow (static/compliance/source/protocols/media-buy/index.yaml) is unrunnable by a seller that declares onlyspecialisms: ["sales-non-guaranteed"].fixtures.productsare guaranteed-only (sports_preroll_q2,lifestyle_display_q2, bothdelivery_type: guaranteed), andcreate_buystep hardcodes a guaranteed buy (those products +cpm_guaranteed).A non-guaranteed-only seller correctly rejects a guaranteed buy (per
enums/delivery-type.json+enums/specialism.json,sales-non-guaranteed= "Non-guaranteed auction-based media buys") with a terminalDELIVERY_MODE_NOT_SUPPORTED. Socreate_buyfails and the dependentcreative_sync/delivery_monitoringsteps cascade asprerequisite_failed— the base lifecycle is unrunnable for that entire seller class, even though the lifecycle it tests (discover → create → deliver) is delivery-type-agnostic.Change
Switch the base lifecycle to the universal non_guaranteed (auction) path: the fixtures + the
create_buypackages now usedelivery_type: non_guaranteedwith floor-priced pricing options. Non-guaranteed is the lowest-common-denominator delivery type; the guaranteed lifecycle (human IO approval,proposal_finalize) is already covered by thesales-guaranteedspecialism bundle, which carries its own guaranteed fixtures.This is consistent with the existing pattern in
specialisms/sales-guaranteed/index.yaml, whose fixtures already seed non-guaranteed products first for the shared seller scenarios, with the note that "a fixture set that contains only guaranteed products will fail those four shared scenarios." This PR applies the same reasoning to the base protocol flow.Reproduction
Against any live
sales-non-guaranteedseller:get_adcp_capabilities→specialismsincludessales-non-guaranteed; running the basemedia_buy_sellerflow →create_buyreturnsDELIVERY_MODE_NOT_SUPPORTED(terminal) andcreative_sync/delivery_monitoringcascade.For maintainer review
dist/compliance/is generated from this source; I wasn't able to run the workspace build standalone, so the cache regen is left for your build/CI.Only the source YAML + a changeset are touched.