Skip to content

bug(v3-ref-seller / storyboard): 7 get_products_brief steps fail PERMISSION_DENIED — fixture seed or allowlist policy regression? #703

@bokelley

Description

@bokelley

Surfaced by #693 (which made the storyboard CI gate actually assert on results).

Failures

Seven media_buy_seller/*/get_products_brief steps fail with identical error text:

PERMISSION_DENIED: Buyer agent is not authorized for this seller.
The seller's commercial allowlist did not authorize this credential.
Resolve out-of-band via the seller's onboarding contact;
this is not a request-side error the buyer can correct.

Affected scenarios:

  • media_buy_seller/refine_products/get_products_brief
  • media_buy_seller/measurement_terms_rejected/get_products_brief
  • media_buy_seller/pending_creatives_to_start/get_products_brief
  • media_buy_seller/inventory_list_targeting/get_products_brief
  • media_buy_seller/inventory_list_no_match/get_products_brief
  • media_buy_seller/invalid_transitions/get_products_brief
  • media_buy_seller/creative_fate_after_cancellation/get_products_brief

The shared text + shared step name across 7 unrelated scenarios strongly suggests one of:

Hypotheses

  1. Storyboard fixture seed missing. The runner is presenting a buyer-agent credential that the v3 ref seller's PgBuyerAgentRegistry doesn't carry. Either a seed/migration step was removed, the storyboard's expected buyer-agent isn't being inserted at CI bootstrap, or the test controller skipped a setup hook.

  2. Allowlist policy regression. The v3 ref seller is correctly rejecting an unauthorized credential the storyboard intended to be authorized. This would point at a recent change to commercial-allowlist enforcement in the seller (PR fix(decisioning): Tier 2 codes → spec-conformant PERMISSION_DENIED (#375) #393 / Tier 2 work).

  3. Test-controller config drift. The storyboard's commercial-identity Tier 2 gate is expecting a credential shape (e.g. X-AdCP-Authorization header, OAuth client id, signed request) that doesn't match what the seller's auth middleware extracts.

Run

ci run 25732467897 / job 75560889145

Full storyboard report artifact: v3-storyboard-result-1.zip.

How to triage

  1. Pull the v3-storyboard-result-1.zip artifact from the linked run.
  2. Inspect the request headers + extracted credential the seller saw on a failing get_products_brief call.
  3. Cross-reference against the buyer-agent rows the v3 ref seller has in its PgBuyerAgentRegistry after CI bootstrap (`docker compose exec ... psql`).
  4. If the credential isn't in the registry — fixture seed gap.
  5. If it's in the registry but status != 'active' — allowlist regression.
  6. If the credential isn't even being extracted from the request — auth middleware drift.

Why this blocks #693

#693 is correctly diagnosing that the storyboard gate was cosmetic. These 7 failures are exactly the kind of thing the gate is meant to surface. Until they're resolved, the storyboard CI job stays red and #693 either:

  • can't merge cleanly, OR
  • merges and turns main red on every PR.

Companion issues for the other storyboard failure clusters from the same run:

Acceptance

  • All 7 get_products_brief steps pass the storyboard
  • Root cause documented in the fix PR (fixture seed / allowlist policy / middleware drift)
  • If it's a fixture issue, the seed step is wired such that it runs deterministically before every storyboard CI invocation

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions