Skip to content

v3 ref seller: residual storyboard response-shape mismatches #706

@bokelley

Description

@bokelley

The v3 reference seller's storyboard runner job (added in #693, closes #410)
now passes 19/25 active steps but reports overall_status: partial. The
"Assert storyboard passed" gate was downgraded to continue-on-error: true
in #693 so the anti-façade hard gates ("Assert storyboard runner produced
output" + "Assert upstream traffic") continue to fail the job, while the
residual response-shape mismatches don't.

This issue tracks lifting that flag once the four scenarios below pass.

Tracked residual failures

  1. media_buy_seller/refine_products/get_products_refine — upstream
    storyboard YAML bug: the runner sends brief in a refine request, which
    the seller correctly rejects with INVALID_REQUEST. Already covered by
    feat: enhance user linking with Addie emails and timezone-aware outreach adcp#702 — wait for that to land.

  2. media_buy_seller/pending_creatives_to_start/assign_creative_to_package
    update_media_buy raises PACKAGE_NOT_FOUND because the seller mints
    pkg_{order_id}_{idx} package_ids on create, but the mock-server upstream
    stores no line_items, so the validation pass in
    examples/v3_reference_seller/src/platform.py::update_media_buy
    rejects them. Needs either: actually call add_line_item upstream after
    create_order, OR move package_id validation off the upstream line_items
    set (e.g., a local mapping table).

  3. media_buy_seller/inventory_list_targeting/get_after_create
    get_media_buys returns packages: [] for every buy, so the
    property_list / collection_list targeting echoed at create time is not
    readable back. Needs get_media_buys to project per-package state.

  4. media_buy_seller/invalid_transitions/first_cancel and
    media_buy_seller/creative_fate_after_cancellation/update_media_buy_canceled
    both probe update_media_buy to cancel a buy; the seller returns
    UNSUPPORTED_FEATURE because the mock-server has no PATCH endpoint.
    Needs update_media_buy to support at least the cancel/pause
    operations against locally-persisted state.

  5. __spec_conformance__/account_discovery/list_or_sync_accounts
    the seller advertises neither list_accounts nor sync_accounts. AdCP
    3.0.9 §accounts/overview requires every seller agent to expose at least
    one of these. Covered by feat(v3-ref-seller): implement sync_accounts + list_accounts with billing_entity write-only projection guard wired #377.

Out-of-scope dependencies

How to drop the soft gate

Once all five scenarios pass:

  1. Delete the "Assert storyboard passed (soft)" step in
    .github/workflows/ci.yml.
  2. Move the overall_status == 'passing' check back into "Assert
    storyboard runner produced output" (the hard gate).
  3. Remove the residual-failures comment.

The runner result JSON is uploaded as an artifact on every run, so the
landed-state of each scenario is auditable from the workflow artifacts
list.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions