Skip to content

RFC: unified disclosures[] with type discrimination (AI + sponsored + health + political + financial) #4444

@bokelley

Description

@bokelley

Problem

AI provenance isn't the only mandatory label on a creative. #ad / sponsored / native disclosures, health and financial product disclosures, political ad disclosures all want the same position real estate (overlay, footer, subtitle, end_card). The current disclosure object is AI-only.

The downstream effect: publishers will end up reconciling AI render guidance against three other disclosure regimes outside the schema, ad-hoc, per publisher. The user gets a messy stack of labels with no coordination — or worse, mutually-occluding labels.

A disclosures[] array with type discrimination means publishers get one coherent rendering instruction with explicit composition rules, instead of four uncoordinated ones.

Proposed wire shape (strawman)

Replace the AI-only provenance.disclosure with a top-level disclosures[] array on creative manifests / assets. provenance.disclosure becomes one entry with type: ai_provenance:

{
  "disclosures": [
    {
      "type": "ai_provenance",
      "required": true,
      "jurisdictions": [
        { "country": "DE", "regulation": "eu_ai_act_article_50", "label_text": "KI-generiert" }
      ],
      "render_guidance": { "persistence": "continuous", "positions": ["overlay", "subtitle"] }
    },
    {
      "type": "sponsored",
      "required": true,
      "label_text": "Sponsored",
      "render_guidance": { "persistence": "continuous", "positions": ["overlay", "footer"] }
    },
    {
      "type": "political",
      "required": true,
      "jurisdictions": [
        { "country": "US", "regulation": "fec_paid_for_by", "label_text": "Paid for by Acme PAC. Not authorized by any candidate." }
      ],
      "render_guidance": { "persistence": "continuous", "positions": ["overlay"] }
    }
  ]
}

Composition rules

  • Independent persistence per disclosure: most-restrictive-wins applies within a single type, not across types.
  • Position collision policy: when two disclosures both want overlay, publisher's renderer applies a documented stacking order. Strawman: political > ai_provenance > sponsored > health > financial. Open to discussion.
  • Type vocabulary is closed: enum, not open string, so renderers can implement compositional logic deterministically.
  • Backward compatibility: spec keeps provenance.disclosure readable for one major version, emits a warning when both old and new shapes are present.

Why this is an RFC, not a workplan ticket

Two strategic questions before this should land in a PR:

  1. Should AdCP own this taxonomy at all? IAB Tech Lab has prior art on sponsored disclosure. The argument for AdCP owning it: we already have AI provenance, the same renderer reads both, and a unified container is more useful to publishers than two coexisting standards. The argument against: forking IAB territory invites a political fight we don't need pre-GA.

  2. If we own it, do we drive the IAB conversation or wait for it? The unified container is a natural place for IAB to contribute sponsored-disclosure prior art rather than fork. But the contribution conversation needs a constituency call. Tier-1 publisher and an IAB Tech Lab participant should be in the room before this turns into a PR.

Both questions are working-group territory. Tagged needs-wg-review.

Out of scope (for this RFC)

  • Specifying the exact label text per regulation for non-AI types. The pattern from provenance.disclosure.jurisdictions[].regulation is reused; jurisdictional analysis is still the deployer's job.
  • Migration path for existing provenance.disclosure consumers. Will be handled in the migration RFC if this lands.

Refs

  • PR docs(provenance): frame provenance as transport, not compliance #4437 — frames provenance as the AI slice of a broader disclosure problem
  • IAB Tech Lab native ad disclosure guidelines — prior art for the sponsored type
  • FEC paid-for-by requirements — prior art for the political type
  • Memory: brand identity vs org-membership — pattern for keeping schema honest about what it can and cannot evaluate

Priority

Post-GA. RFC stage. Needs WG decision on the two strategic questions before moving to implementation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    creativeneeds-wg-reviewBlocked on a working-group decision — surface in WG meeting agendasrfcProtocol change — auto-adds to roadmap boardschemaJSON Schema source-of-truth: definitions, codegen artifacts, validation, hygienespec / protocol

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions