Skip to content

Storyboard YAML: creative_fate_after_cancellation reassign step resolves $context.creative_id to undefined, stripping required creatives[] #2850

Description

@bokelley

Problem

static/compliance/source/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml step reuse_creative_on_new_buy/reassign_creative (lines 382–402) references $context.creative_id in both creatives[0].creative_id and assignments[0].creative_id.

That context key is populated by sync_creative_with_assignment via path: creatives[0].creative_id against the seller's sync_creatives response. Sellers whose response envelope doesn't surface creatives[0].creative_id at exactly that path cause the resolver to drop the item, leaving creatives: undefined — which fails @adcp/client's zod pre-flight with:

Request validation failed for sync_creatives: creatives: Invalid input: expected array, received undefined

…before the request ever reaches the agent.

Current (lines 387–389 + 398–400)

creatives:
  - creative_id: "$context.creative_id"
    name: "Reassigned creative"

Fix

Substitute the literal acme_reuse_banner_001 (the buyer-supplied id set in sync_creative_with_assignment) — buyer-authoritative and doesn't need to round-trip through a response. Matches the narrative at lines 369–371 ("Reference the original creative by creative_id only") and hardens the scenario against envelope variance across sellers:

creatives:
  - creative_id: "acme_reuse_banner_001"
    name: "Reassigned creative"

Mirror the same change in assignments[0].creative_id on line 400.

Filed from the training-agent compliance audit — parallel investigation at #2832.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions