Docs

Evidence packs

Governance Evidence Pack Standard

Purpose#

Describe a portable evidence pack manifest: a set of artifact references (by artifact_id and content_digest), a deterministic digest manifest, and an optional run_id tying the pack to a GovAI evidence run. This supports AI Act–oriented evidence packaging, CI artefact binding narratives, and cross-vendor exchange without embedding binary payloads in JSON.

CI and hosted gates: Customer CI typically materializes evidence_digest_manifest.json plus <run_id>.json, submits events with govai submit-evidence-pack, then verifies digests against GET /bundle-hash with govai verify-evidence-pack (github-action.md). This standard describes the portable pack JSON validators; the govai evidence-pack init CLI scaffolds a minimal customer pack layout—see cli-reference.md.

Export pipeline

From run_id to verifiable audit artefacts for buyers and regulators.

Canonical fields#

FieldTypeDescription
schema_versionstringRequired.
pack_idstringRequired.
tenant_scopestringRequired.
run_idstringOptional. Correlates with GovAI run_id when used together.
artifactsarrayRequired, non-empty.
digest_manifestobjectRequired. See below.
pack_digeststringOptional. If present, must match canonical digest of the pack preimage (excluding pack_digest).

Each artifact:

FieldTypeDescription
artifact_idstringRequired. Unique in the pack.
artifact_typestringRequired. Opaque type label (for example capability_policy).
uristringOptional. Retrieval hint only; validators do not fetch.
content_digeststringRequired. sha256: + 64 hex or 64 hex digits (normalized internally).
evidence_typestringRequired. GOVERNED or REFERENCE.
control_refsarray of stringRequired for GOVERNED: must be non-empty. May be empty for REFERENCE.
ai_act_refsarray of stringOptional; entries must be non-empty strings when present.

digest_manifest:

{
  "entries": [
    { "artifact_id": "...", "content_digest": "sha256:..." }
  ]
}

Entries must match the canonical manifest derived from artifacts (same pairs, sorted by artifact_id).

Validation rules#

  • Banned raw content keys are rejected.
  • artifact_id unique; content_digest must be a valid digest token.
  • GOVERNED artifacts must have non-empty control_refs.
  • digest_manifest must be exactly the canonical manifest implied by artifacts (sorting and digest normalization), ensuring deterministic manifests.
  • When pack_digest is set, it must match the digest of the pack preimage (excluding pack_digest).

Digest rules#

  • digest_manifest canonical form sorts entries by (artifact_id, content_digest).
  • pack_digest is canonical_digest over the pack preimage including canonical digest_manifest and sorted artifacts (by artifact_id).

Example JSON#

See examples/standards/governance_evidence_pack.valid.json.

CLI usage#

python -m aigov_py.standards.cli validate-evidence-pack path/to/pack.json
python -m aigov_py.standards.cli digest evidence-pack path/to/pack.json

Relationship to GovAI runtime and Phase 4#

  • Aligns with digest-first patterns used elsewhere in GovAI (for example artefact-bound CI flows and Phase 4 signing envelope planning) but does not write to the ledger or change export APIs.
  • run_id is optional metadata for correlation with GET /compliance-summary and exports when operators choose to link them.

Non-goals#

  • No embedding of evidence file bytes or transcripts.
  • No verification that content_digest matches external bytes (operators use separate tooling).
  • No Stripe, billing, or tenant identity changes.

← Back to home