Federal AI Identity Governance — Governed Path

AI system identity records bound to the drift engine and the ATO reciprocity model — the FMP-managed path

Author

Michael Stratton

Published

June 1, 2026

Federal AI Identity Governance — Governed Path

This path extends the manual path with the Federal Modernization Program’s governance substrate. The same scripts run; the same findings are produced. What changes is that each finding is routed through the drift engine (the program decision), and reconciled against the ATO reciprocity model (the program decision). The result is a continuous governance loop, not an annual manual exercise.

Note

The manual path is not a prerequisite. You can activate the governed path directly. However, the manual path is a useful baseline read if this is the first time your agency has applied identity governance to its AI inventory.


Prerequisites

In addition to the manual path prerequisites:

  • The Federal Modernization Program substrate deployed with the ai-inventory-governance SaaS adapter activated (see §Activation below), or the Federal Modernization Program installed locally with src/fmp/governance/ai_inventory/ package
  • sailpoint-machine-identity adapter slot promoted from reserved to active if SailPoint ISC is in scope (the program decision Option B)

What the governed path adds

Manual path Governed path addition
CSV scan → findings report Findings ingested as Finding objects into the Federal Modernization Program drift engine
ATO gap flagged in report ATO gap cross-walked against the program decision reciprocity records; finding routed to AO
Unowned system listed Owner assignment workflow triggered via the program decision governance review queue
Annual manual re-scan Annual inventory vintage triggers automatic re-scan; delta findings surfaced
Shadow AI: manual lookup Shadow AI compared against the Federal Modernization Program machine-identity registry automatically

Activation

Option B — Local Python package

from fmp.governance.ai_inventory import scan_inventory

result = scan_inventory(
    "data/2025_individually_reported_AI_use_cases.csv",
    known_registry_ids={"ACAS", "ADVANA"},
)
print(result.summary)
# Route findings to drift engine
from fmp.governance.drift_core import gate
decision = gate(result.findings)

Drift engine integration

Findings from the AI inventory scan are Finding objects (drift_core.py) that pass through the standard drift gate:

P1 findings → HALT gate → governance review queue (never auto-remediated)
P2 findings → per-policy remediation → bureau identity governance coordinator

The six AI drift classes extend the the program decision taxonomy:

Drift class Severity Auto-remediate Routes to
DRIFT-COMPLIANCE::ai-agentic-ungoverned P1 Never AO + ISSO
DRIFT-IDENTITY::ai-shadow P1 Never Security team + AO
DRIFT-COMPLIANCE::ai-ato-gap P2 Never AO + bureau ISSO
DRIFT-IDENTITY::ai-no-agency-bureau P2 Per-policy Identity workflow
DRIFT-IDENTITY::ai-unowned P2 Never Bureau IdM coordinator
DRIFT-COMPLIANCE::ai-pii-no-pia P2 Never Privacy officer

ATO reciprocity cross-walk (the program decision)

The governed path cross-walks each system_name_ato value against the Federal Modernization Program’s ATO reciprocity registry (FMP_140, the program decision):

  • Match found: the system inherits the platform ATO; no ATO gap finding
  • Match not found + have_ato = Yes: candidate for reciprocity registration
  • No match + have_ato = No: DRIFT-COMPLIANCE::ai-ato-gap P2 finding

For OPM HRIT-platform-hosted AI systems, the single-ATO model from the program decision means most agency deployments inherit the OPM ATO — the number of genuine ATO gaps in that vertical should be close to zero.


Annual inventory refresh cycle

When OMB publishes the next-vintage inventory:

  1. The ai-inventory-governance adapter ingests the new CSV automatically
  2. Computes delta vs. prior vintage:
    • New live entries → new identity-subject records
    • Retired entries → deprovisioning workflow triggered
    • ATO status changes → reciprocity registry updated
  3. Net-new P1 findings are surfaced immediately; P2 findings join the next governance review cycle

The inventory_vintage field in ScanResult records the year; a staleness warning fires if the vintage is more than 13 months old (FMP_196 §6).


OSCAL evidence output

The to_json method on ScanResult produces an ODR-compatible evidence payload. Map to NIST 800-53 Rev 5 controls:

Evidence source Controls
ATO gap findings CA-7 (continuous monitoring), CA-8 (penetration testing prep)
Unowned findings IA-4 (identifier management), AC-2 (account management)
PII/PIA findings PT-2 (PIA), AR-2 (privacy impact and risk assessment)
Agentic ungoverned AC-2, IA-2, SI-7 (software integrity)
Shadow AI CM-8 (system component inventory), CA-7
Agency/bureau gap IA-4, AC-2

Tip

Offering this to OMB / other agencies: The standalone PowerShell script (Invoke-AIInventoryScan.ps1) is designed to be shared. An agency running only the manual path produces the same findings as the governed path — the difference is what happens next. The governed path automates disposition; the manual path leaves it to the operator. Both are valid starting points.

See inbox/drafts/omb-ai-governance-comment.md for the proposed OMB schema-extension letter that accompanies this kit.


Normative references

  • src/fmp/canon/specs/Spec4-AI-D1.1-AISystemIdentityRecord.md — FMP_196 AI System Identity Record schema
  • src/fmp/canon/specs/Spec4-AI-D1.2-AISystemJMLLifecycle.md — FMP_197 AI System JML Lifecycle
  • the program decision — Federal AI Use Case Governance
  • the program decision — AI System JML Lifecycle
Back to top