Skip to content

Creative retention contract: define seller/creative-agent obligations for unassigned creatives #2260

@bokelley

Description

@bokelley

Problem

AdCP does not define how long a seller or creative agent must retain creatives that are not assigned to any active package or buy. The only retention language in the spec applies to generative variant manifests (sales-agent-creative-capabilities.mdx:88 — 90-day SHOULD), not to library creatives themselves.

Because archive is buyer-initiated only (specification.mdx:154-182), sellers today can legally purge unassigned creatives at any time. A buyer agent reusing a previously-approved creative on a new buy has no guarantee it still exists.

Questions to resolve

  1. Minimum retention floor — how long must a creative in each status (approved, rejected, unassigned) be retained? Proposed default: approved creatives retained ≥90 days after the last assignment ends, or until buyer archives.
  2. Who holds the obligation — seller? creative agent? both? Answer likely differs depending on whether the creative lives in an external CMP vs. the sales agent's own library.
  3. Inline creative fate on buy rejection — if an inline creative is submitted with create_media_buy and the buy is rejected (see sub-issue on inline semantics), does retention start from the rejection timestamp, or is the creative never considered to have entered the library?
  4. Purge notification — if a seller purges a creative before buyer archives it, is there an obligation to notify? (See webhook sub-issue.)

Context

Surfaced by #2254 as part of the broader creative lifecycle gap discussion. This is a 3.1 concern: with agents running autonomously, undefined retention makes creative reuse unreliable.

Affected spec areas

  • docs/creative/creative-libraries.mdx
  • docs/creative/specification.mdx
  • docs/creative/sales-agent-creative-capabilities.mdx

Relates to #2254, epic lineage #1612-#1616.

Metadata

Metadata

Assignees

No one assigned

    Labels

    claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.rfcProtocol change — auto-adds to roadmap board

    Type

    No type

    Projects

    Status

    No status

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions