Skip to content

media_buy_seller: format_id round-trip (substitution observer) + creative_fate_after_cancellation sync_creatives shape #2848

@bokelley

Description

@bokelley

Problem

Two related media-buy-seller storyboards fail cleanly in both dispatch paths:

media_buy_seller

× Returned format_id round-trips verbatim — the agent cannot substitute
  a different format in response to the filter

The substitution-observer invariant: when a buyer sends a format_id in a product-discovery filter, the seller's response MUST echo the same format_id verbatim (not substitute a semantically-similar one). Training-agent product factory currently re-derives format_ids from its own catalog rather than preserving the filter input.

media_buy_seller/creative_fate_after_cancellation

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

Storyboard sends a sync_creatives call during the 'after-cancellation' probe without a creatives array — either the storyboard's sample_request is missing the field, or the handler should tolerate empty/missing creatives as a no-op read for this probe.

Why this matters for 3.0

Format-id substitution is a trust primitive: if a seller silently swaps formats, buyers can't reason about what they're actually buying. Related to #2651 (substitution-safety observation) and #2654 (phase_fragment for repeated substitution phases).

The creative-fate probe exercises the 'creative lifecycle is decoupled from media buy lifecycle' invariant — a core 3.0 contract.

Priority

3.0-nice-to-have. Substitution is a tier-1 trust guarantee but this specific failure is a handler fix, not a spec gap.

Related

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