Skip to content

epic: regulator-readable audit export (provenance_audit_log schema) #4445

@bokelley

Description

@bokelley

Problem (commercial, not compliance)

A publisher facing an Art 50 or CalAG inquiry currently responds in weeks — engineering ticket to query impression logs, separate query for provenance claims, manual reconciliation with creative-policy state at serve time, lawyer assembling a narrative. The compliance team's resource constraint is response time under regulatory deadlines.

A provenance_audit_log schema that aggregates, for a given media buy or impression cohort:

  • what was claimed (provenance object)
  • by whom (declared_by / signed claim)
  • with what signature (provenance_signature, when implemented)
  • what was verified (governance agent's get_creative_features response)
  • what was served (served_disclosure receipt — see #TBD)
  • against what creative-policy state at serve time

…cuts the response from weeks to hours. That's the commercial lever: AdCP adoption becomes "cut regulatory response time from N weeks to N hours," which moves the procurement conversation from ad ops to legal/risk, where the larger dollars sit.

Why this is an epic, not a sprint ticket

This is roadmap signaling. The right time to spec it concretely is after the dependencies land:

  • Depends on #TBD signed provenance claims — without signatures, the export is just compiled JSON, not legally useful evidence.
  • Depends on #TBD served-disclosure receipt — without post-serve evidence, the export is pre-serve intent only.
  • Depends on #TBD provenance history — for chain-of-custody audit questions ("who else touched this?").

Strawman shape (informational only — for roadmap publication, not implementation)

{
  "audit_export_id": "audit_xyz...",
  "scope": {
    "media_buy_id": "mb_abc...",
    "time_range": { "start": "2026-04-01", "end": "2026-04-30" },
    "jurisdictions": [{ "country": "DE", "regulation": "eu_ai_act_article_50" }]
  },
  "creatives": [
    {
      "creative_id": "cr_123",
      "provenance": { /* full object */ },
      "provenance_signature": { /* JWS, verified */ },
      "provenance_history": [ /* chain */ ],
      "creative_policy_at_serve": { /* policy snapshot */ },
      "verification": {
        "agent_url": "https://verifier.example.com",
        "feature_id": "ai_detection_v2",
        "result": "confirmed",
        "confidence": 0.92,
        "called_at": "2026-05-12T13:00:00Z"
      },
      "impressions": {
        "total": 142893,
        "with_served_disclosure": 142893,
        "rendered_per_guidance": 142841,
        "discrepancies": 52
      },
      "discrepancy_samples": [
        {
          "impression_id": "imp_...",
          "expected_persistence": "continuous",
          "rendered_duration_ms": 8000,
          "impression_duration_ms": 15000
        }
      ]
    }
  ],
  "export_signed_by": { /* publisher's signature over the entire export */ },
  "exported_at": "2026-05-12T15:00:00Z"
}

The structured-discrepancy section is the audit value: a regulator doesn't want a screenshot, they want a sampleable, queryable record.

Goals for the roadmap entry

  1. Publish the strawman publicly now so legal/risk procurement conversations can anticipate it.
  2. Block detailed spec on dependency landings — signed claims, served-disclosure receipt, provenance history all need to land first.
  3. Recruit a tier-1 publisher and a compliance-team buyer as design partners when spec work starts. This is the surface they'll actually use; design without them is wasted.

Out of scope

  • Specifying retention windows or jurisdictional storage requirements. Publisher policy, not protocol.
  • Defining the regulator-facing API. The export is a file (signed JSON), not an endpoint. Regulators don't poll us.
  • Real-time streaming variants. The use case is "respond to inquiry within hours"; daily-batch is sufficient.

Refs

Priority

Roadmap (epic). Post-GA. The commercial lever, not the compliance fix.

Metadata

Metadata

Assignees

No one assigned

    Labels

    creativeepicMajor deliverable — auto-adds to roadmap boardgovernanceIssue concerns the governance protocol domainschemaJSON 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