--compliance <framework> maps the assembled AIBOM onto a named AI-governance framework’s
controls. For each control it decides met / gap / manual and attaches the component
evidence behind the verdict, projecting the result into the CycloneDX attestation model.
Usage
airom fs --help lists the shipped
frameworks.
The three verdicts
Severity/score is a fixed function of the state, never judgment at scan time, so output is deterministic.
A control declares exactly one mapping directive:
evidence_of: <expr>, gap_if: <expr>, or
manual: true. <expr> is a subset of the --fail-on grammar — a
component kind, *, or a risk selector, joined by |/& — so “the AIBOM inventories the AI
methods” maps to the presence of model/framework components, and “security is evaluated”
maps to the artifact-risk overlay via gap_if: risk.
How it appears in output
- CycloneDX
- Report (Markdown)
- Native (json / yaml)
The spec-native home — two blocks:This evidence-linked conformance is something a tool that drops evidence on export cannot
reproduce.
definitions.standards[]— the framework and itsrequirements[](controls).declarations— AIROM as a first-partyassessor, oneclaim+attestation.map[]entry per control, with a gradedconformance.score(omitted for manual). Evidence points at the componentbom-refs.
Compliance as CycloneDX attestations
Gating in CI
--fail-on gates on a gap — a manual control is not a failure, a met is a pass:
Fail CI on any compliance gap
Frameworks
nist-ai-rmf— NIST AI Risk Management Framework 1.0. The inventory/documentation subcategories (MAP) are auto-evaluated from the AIBOM, security/resilience (MEASURE-2.7) maps to the risk overlay, and the governance subcategories (GOVERN, MANAGE) aremanual.owasp-agentic— OWASP Agentic AI, Threats and Mitigations. These threats are overwhelmingly runtime/behavioral (agent memory, tools, privileges, goals), which a static scan cannot observe, so nearly all aremanual. The one AIROM speaks to directly is T11 (Unexpected RCE and Code Attacks), mapped to the artifact-risk overlay — the honest breadth ofmanualmarks where static analysis stops.
The mapping stays deterministic and offline — the frameworks are static data, no LLM, no
network. Adding a framework is an embedded-YAML PR; adding a control is one entry.
Where to next
Exit codes & --fail-on
The gate grammar, including the compliance selectors.
Risk detection
The artifact-risk overlay that gives the security controls their teeth.