Skip to content

[v13 rc.11] Storyboard get_products forces legacy-only wire #2495

Description

@bokelley

Summary

@adcp/sdk@13.0.0-rc.11 still forces storyboard get_products calls onto the legacy-only creative wire for negotiated AdCP 3.1 runs. This hides the transitional dual format_ids + format_options response that the rc.11 DecisioningPlatform runtime now emits by default.

This is the remaining storyboard-runner reproduction from #2491; the rc.11 server-runtime and explicit legacy-client fixes otherwise supersede the downstream rc.10 workarounds.

Reproduction

In dist/lib/testing/storyboard/task-map.{js,mjs}:

const callParams = legacyMethodName ? withLegacyCreativeWireHint(params) : params;

For a 3.1 client, gradesLegacyCreativeWire() selects getProductsLegacy, so an otherwise ambiguous get_products request receives ext.adcp.creative_wire = "legacy".

Against the AdCP training agent's media_buy_seller/canonical_formats scenario, unpatched rc.11 fails the first product assertion:

Expected "image", got undefined

because the response contains only format_ids and omits the expected canonical format_options declaration.

Expected

Do not inject the legacy-only wire hint for storyboard get_products. Keep explicit legacy routing for the other creative lifecycle tasks:

const callParams = legacyMethodName && taskName !== "get_products"
  ? withLegacyCreativeWireHint(params)
  : params;

With that change, the canonical-formats scenario passes 15/15 steps, and both the current 3.1 matrix and released 3.0.22 compatibility matrix pass across all seven tenants.

Downstream

adcontextprotocol/adcp#6307 carries an exact-version-gated CJS/ESM patch and removal ledger entry for rc.11.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions