Umbrella-GovOps is a data-contract project: its public surface is the set of versioned artifacts it publishes, not a running service. This document is a field-by-field reference for every artifact, with examples drawn from the repository.
The four first-class artifacts and how they relate:
GovernanceDomain ──groups──▶ Control ──cites via metadata.ucid──▶ UCID (in Crosswalk)
│ │
└──checks[] produce evidence──▶ EvidenceBundle.checks[]
│
Beacon receipts ──embedded──▶ EvidenceBundle.receipts[]
See also schema-catalog.md for the authoritative schema paths and actions.md for the governance action vocabulary.
A UCID is a stable, citable identifier for one normative AI-governance
obligation, independent of any single framework. UCIDs are pivots, not
controls: one UCID maps to N regulatory citations, M implementing controls,
and K runtime Beacon receipts. The registry source of truth is
crosswalks/unified-control-id.yaml;
governance and lifecycle are documented in
UCID-REGISTRY.md.
UCID-<DOMAIN>-<TOPIC>-<NNN>
| Segment | Rule |
|---|---|
DOMAIN |
Uppercase token, e.g. DATA, OVERSIGHT, LOG, SEC, SUPPLYCHAIN. |
TOPIC |
Optional uppercase/digit segment(s), e.g. BIAS, ROBUST, SBOM. |
NNN |
Three-digit zero-padded sequence within (DOMAIN, TOPIC), starting at 001. |
Canonical regex used by the test suite:
^UCID-[A-Z][A-Z0-9]{1,11}(-[A-Z0-9]{1,16})*-[0-9]{3}$. A UCID id is allocated
forever — never reused for a different concept, even after deprecation.
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | The UCID. Matches the syntax above; unique across the registry. |
title |
string | yes | Human-readable obligation summary. |
status |
enum | recommended | provisional | stable | deprecated | superseded. |
created |
date | recommended | ISO-8601 allocation date. |
proposer |
string | recommended | GitHub handle of the proposer. |
nist_ai_rmf |
string[] | one-of | NIST AI RMF subcategory citations (e.g. MEASURE-2.11). |
eu_ai_act |
object | one-of | { articles: [...], annex_iv: [...] }. |
iso_42001 |
string[] | one-of | ISO/IEC 42001 clause citations (e.g. A.7.4). |
implementing_controls |
string[] | yes | Control ids that implement this UCID. Each must resolve to a control file. |
planned_controls |
string[] | no | Control ids planned but not yet authored (must NOT have a file). |
superseded_by / split_into / merged_into |
string[] | conditional | Lifecycle pointers (see UCID-REGISTRY.md §4). |
At least one of
nist_ai_rmf/eu_ai_act/iso_42001MUST be present — a UCID with no framework citation is just a control id and defeats the pivot. The unit suite enforces this.
- id: UCID-DATA-BIAS-001
title: Dataset bias examination
status: provisional
created: 2026-04-12
proposer: bobrapp
nist_ai_rmf: [MEASURE-2.11, MAP-2.3, MANAGE-2.3]
eu_ai_act:
articles: ["10(2)(f)", "10(3)"]
annex_iv: ["2(d)", "2(g)"]
iso_42001: ["A.7.4"]
implementing_controls: [DG-002]A Control is the concrete, runnable obligation: it binds to a UCID, maps to
framework citations it satisfies, and declares at least one check. Controls
live at domains/<domain>/controls/<ID>_<slug>.yaml.
| Field | Type | Required | Description |
|---|---|---|---|
apiVersion |
const | yes | govops.aigovops.org/v1. |
kind |
const | yes | Control. |
metadata.id |
string | yes | ^[A-Z]{2,4}-[0-9]{3,6}$, e.g. DG-002. |
metadata.ucid |
string | yes | The UCID this control implements; must exist in the registry. |
metadata.name |
string | yes | Human-readable control name. |
metadata.owner |
string | yes | @handle. |
metadata.severity |
enum | yes | low | medium | high | critical. |
metadata.status |
enum | yes | draft | shadow | enforced | deprecated. |
satisfies |
object | recommended | Framework citation map (nist_ai_rmf, eu_ai_act, iso_42001), ≥ 1 property. |
applies_to |
object | no | Scoping: risk_tier, modality. |
inputs |
array | no | Declared input paths (path, required). |
checks |
array | yes (≥ 1) | Runnable checks; each has id, name, runner. |
checks[].runner |
enum | yes | pytest | python | opa | rego | shell | container. |
checks[].evidence_outputs |
array | no | Declared output artifacts (type, path). |
on_fail |
object | no | action, notify, open_poam. |
exceptions_allowed_from |
string | no | Path to an exceptions directory. |
apiVersion: govops.aigovops.org/v1
kind: Control
metadata:
id: DG-002
ucid: UCID-DATA-BIAS-001
name: Bias evaluation on training and evaluation datasets
owner: "@bobrapp"
severity: high
status: draft
checks:
- id: DG-002.C1
name: Demographic parity ratio within threshold
runner: pytest
script: domains/data-governance/checks/bias_metrics_test.py::test_demographic_parity
on_fail:
action: block_merge
open_poam: trueA GovernanceDomain groups related controls and declares domain-level
applicability and SLOs. One domain.yaml per domains/<domain>/.
| Field | Type | Required | Description |
|---|---|---|---|
apiVersion / kind |
const | yes | govops.aigovops.org/v1 / GovernanceDomain. |
metadata.id |
string | yes | ^[a-z][a-z0-9-]+$, e.g. data-governance. |
metadata.name |
string | yes | Display name. |
metadata.owner |
string | yes | @handle. |
metadata.description |
string | no | Free text. |
risk_tier_applicability |
enum[] | no | Subset of unacceptable | high | limited | minimal | gpai. |
slos |
array | no | { metric, target } objectives. |
An EvidenceBundle is the signed manifest emitted by
umbrella-conformance bundle. It records the check matrix and embeds the
Beacon receipts that back each check. It is wrapped in an in-toto Statement v1
/ DSSE envelope and signed via cosign sign-blob.
| Field | Type | Required | Description |
|---|---|---|---|
apiVersion / kind |
const | yes | govops.aigovops.org/v1 / EvidenceBundle. |
metadata.generatedAt |
date-time | yes | UTC timestamp (...Z). |
metadata.tool |
string | yes | umbrella-conformance/<version>. |
metadata.repo |
string | no | Repository name. |
metadata.commit_sha |
string | no | ^[0-9a-f]{7,64}$. |
checks[] |
array | yes | One entry per conformance check. |
checks[].name |
string | yes | Check name (see actions.md). |
checks[].status |
enum | yes | pass | warn | fail. |
checks[].details |
string[] | no | Human-readable findings. |
checks[].ucid |
string | no | UCID this check evidences (for coverage gating). |
checks[].evidence_refs |
string[] | no | Receipt ids backing this result. |
receipts[] |
array | no | Embedded Beacon receipts (verbatim). |
receipts[].id |
string | yes | Receipt id; matches evidence_refs[]. |
receipts[].format |
enum | yes | foundation | runtime. |
receipts[].payload |
object | yes | The signed receipt JSON, unmutated. |
receipts[].issued_at |
date-time | no | Issuance timestamp for freshness. |
Verifiers MUST re-verify each embedded receipt independently of the outer DSSE
signature (run beacon-verify).
policies/orchestration.yaml is the root orchestration document. It is not yet
schema-enforced but follows a stable shape: metadata (name, version,
signing_identity), defaults, scope, and an ordered list of phases
(ingest → classify → domain-checks → crosswalk → bundle → report). These
phases map directly to the flows and the
actions vocabulary.
systems/SYS-*.yaml describes a governed AI system under evaluation: intended
purpose, EU AI Act risk classification, modalities, protected attributes,
artifacts, and human-oversight mode. Controls scope to systems via
applies_to.