Skip to content

Governance: framework-mapping registry + generate_governance_report projection (AIGP / EU AI Act / GDPR / NIST / ISO 42001 / MRC / TAG / DBCFM) #3959

Description

@bokelley

Draft WG Issue: Framework-mapping registry and governance-report projection

Suggested title: Governance: framework-mapping registry + generate_governance_report projection (AIGP / EU AI Act / GDPR / NIST AI RMF)

Suggested labels: governance, rfc-track, discussion


Background

A question raised in conversations with IAPP that doesn't have a clean answer in the spec today: how does a privacy/compliance professional verify an AdCP campaign against the frameworks they already use (AIGP, EU AI Act, GDPR, NIST AI RMF, ISO 42001, MRC, TAG, …)?

The audit trail exists today via get_plan_audit_logs (campaign governance, 3.0 experimental). What's missing is the projection from raw audit entries into per-requirement evidence checklists that an external compliance reviewer can act on.

This issue proposes:

  1. A new sibling registry — static/registry/frameworks/ — for framework-mapping specs
  2. An SDK helper generateGovernanceReport() that joins audit logs to a framework spec
  3. A gap analysis of where the protocol does not yet carry the data a full AIGP/NIST projection would require

This is intentionally not an RFC. The mechanical pieces (framework registry, projection helper) are straightforward. The architectural pieces (agent self-declaration, consent context, lawful basis, incident hooks) need WG discussion before anyone commits to a spec.

What we have today

Framework requirement AdCP surface
Audit logging (AI Act Art. 12, GDPR Art. 30) get_plan_audit_logs.entries[], plan_hash (JCS-canonicalized)
Human oversight (AI Act Art. 14, GDPR Art. 22) human_review_required, escalations[], drift_metrics
Special-category data (GDPR Art. 9, AI Act Art. 10) 10 restricted_attributes + signal declarations
Annex III high-risk verticals eu_ai_act_annex_iii.json registry policy + 13 sibling regulations
Data subject contestation (Art. 13/22) brand.data_subject_contestation
Oversight-erosion detection drift_metrics (escalation rate, auto-approval rate, human override rate)

This is enough surface to support EU AI Act Annex III and GDPR Articles 9, 12, 13, 14, 22, 30 projections today.

Proposed: framework-mapping registry

static/registry/
  policies/          (existing — runtime enforcement)
  policy-categories/
  attributes/
  frameworks/        (new — post-hoc reporting checklists)
    eu_ai_act.json
    gdpr.json
    aigp.json        (IAPP partnership candidate)
    nist_ai_rmf.json
    iso_42001.json
    colorado_ai_act.json
    mrc.json
    tag.json
    dbcfm.json

Tier 1 frameworks (initial registry): EU AI Act, GDPR, AIGP, NIST AI RMF, ISO/IEC 42001, Colorado AI Act, MRC, TAG, DBCFM.

Tier 2 (defer to v2): CCPA/CPRA + state privacy bundle, WFA Global Media Charter, OECD AI Principles, UK GDPR, LGPD.

Each framework file declares versioned requirements:

{
  "framework_id": "eu_ai_act",
  "version": "1.0.0",
  "name": "EU AI Act (Regulation (EU) 2024/1689)",
  "requirements": [
    {
      "requirement_id": "art_14_human_oversight",
      "framework_section": "Art. 14",
      "requirement_text": "...",
      "protocol_scope": "in",
      "evidence_sources": [
        {"kind": "policy_evaluated", "policy_id": "eu_ai_act_annex_iii"},
        {"kind": "audit_entry", "query": {"type": "check", "mode": "advisory_with_human_review"}}
      ],
      "classifier": {"satisfied_when": "evidence.length > 0 AND drift_metrics.escalation_rate >= thresholds.escalation_rate_min"}
    }
  ]
}

Same publication bar as policies/ (versioned, sourced, exemplars required, CI-checked).

Bidirectional linking — framework_references[] on PolicyEntry

Today policy entries reference frameworks only in prose (eu_ai_act_annex_iii.json mentions Art. 10/12/13/14/22 in the policy body; us_fha_targeting.json cites 42 U.S.C. 3604(c) the same way). The PolicyEntry schema has no structured field for this.

If we add frameworks/ without back-references, the mapping drifts. Proposed addition to PolicyEntry:

{
  "policy_id": "eu_ai_act_annex_iii",
  // ...
  "framework_references": [
    {"framework_id": "eu_ai_act", "requirement_ids": ["art_10_data_governance", "art_12_logging", "art_14_human_oversight"]},
    {"framework_id": "gdpr", "requirement_ids": ["art_9_special_category", "art_22_automated_decisions"]}
  ]
}

CI gate: every framework_references entry resolves against an actual frameworks/*.json requirement; every framework requirement's evidence_sources resolves against an actual policies/*.json. The two registries cross-validate.

Side benefit: enables "what policies satisfy AIGP §4.2.1?" queries without grepping prose.

Proposed: generate_governance_report (SDK helper, not a protocol task)

Lives in @adcp/sdk and adcp Python. Takes (auditLog, frameworkId), returns:

{
  "framework": "eu_ai_act",
  "framework_version": "1.0.0",
  "plan_id": "...",
  "plan_hash": "...",
  "results": [
    {
      "requirement_id": "art_14_human_oversight",
      "status": "satisfied" | "partial" | "gap" | "not_applicable" | "out_of_protocol_scope",
      "evidence": [...],
      "narrative": "..."
    }
  ]
}

Why not a protocol task: the buyer already has the audit log, the framework spec is a static published artifact, and the join is local. Making it a task would force every governance agent to ship projection logic and re-deploy when frameworks version. SDK-side projection lets framework registry updates flow without agent redeploys.

Optional: AAO hosts the same code behind adcontextprotocol.org/governance-report for buyers who don't import the SDK.

Gap analysis — what we'd need to add for full AIGP/NIST coverage

The gaps below are blockers for AIGP §4 and NIST AI RMF Govern/Map/Measure/Manage projections, not for EU AI Act / GDPR.

Easy fixes (field additions)

Gap Fix Framework relevance
Lawful basis declaration Add lawful_basis enum to sync_plans GDPR Art. 6, AIGP §3
Consent context pass-through Add consent_context block (TCF / GPP / GPC) to plan + check_governance GDPR, ePrivacy, AIGP §3
Cross-border transfer declaration Add data_transfers[] to plan or agent declaration GDPR Ch. V, AIGP §4

Architectural (WG discussion needed)

Gap Why it's architectural
Governance-agent self-declaration — model identity, training data, red-team artifacts, accountable contact AIGP §4 and NIST AI RMF Govern/Map require the AI system to declare what it is. adagents.json says who an agent represents, not what it is. Same gap David Porzelt's DBCFM analysis hit from a different angle (German law: who's accountable). Probably needs a new agent.json or extension to adagents.json.
Incident / breach notification hook No protocol event for "something went wrong, notify these parties." Required by GDPR Art. 33, NIST Manage. Would need a new event type and notification flow.
Bias / fairness testing artifacts NIST AI RMF wants pointers to bias-testing results. Currently nothing. Probably stays out-of-protocol-scope but needs a declarative pointer field.
Lifecycle decommissioning "Agent retired, what happens to plans?" — not in spec.

Two-track proposal

Track 1 — ship now (3.1 / 3.2):

  • framework_references[] field on PolicyEntry + CI cross-validator
  • static/registry/frameworks/: EU AI Act, GDPR, MRC, TAG, DBCFM (we already have most of the source material)
  • generateGovernanceReport() SDK helper in @adcp/sdk and adcp Python
  • Optional hosted renderer at AAO

Track 2 — spec work (3.2 / 3.3):

Asks for WG

  1. Concept ack: is frameworks/ the right home, or should this fold into policies/? (My read: separate — different lifecycle, many-to-many to policies, includes out-of-scope items.)
  2. Agent self-declaration: appetite for adding this as a 3.2 item? Where does it live — extension to adagents.json, new agent.json, or a new task?
  3. External partnerships: AIGP is IAPP's IP — joint authorship is an AAO-side decision, not WG, but flagging here so the WG sees the path. MRC and TAG mappings are similar (their checklists, our projection).

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.governanceIssue concerns the governance protocol domainneeds-wg-reviewBlocked on a working-group decision — surface in WG meeting agendasrfcProtocol 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