Skip to content

Bundle schema reference

Bundle schema version: 1.0.0

Top-level document produced by every run / evaluate invocation. All timestamps are ISO 8601 UTC. All enum values serialize as their string form.

{
  "bundle_version": "1.0.0",
  "bundle_id": "bundle-20260410-payments-api-2026.04.10-ab12cd34",
  "generated_at": "2026-04-10T12:20:00Z",
  "application": {
    "name": "payments-api",
    "repository": "acme/payments-api",
    "environment": "production",
    "owner_team": "payments-core"
  },
  "release": {
    "release_id": "2026.04.10",
    "commit_sha": "abc123...",
    "branch": "main",
    "pipeline_run_id": "gha-93821",
    "build_id": "build-2041",
    "artifact_digest": "sha256:...",
    "tag": "v2026.04.10"
  },
  "evidence": [ /* NormalizedEvidence[] */ ],
  "control_evaluations": [ /* ControlEvaluation[] */ ],
  "gaps": [ /* Gap[] */ ],
  "summary": { /* Summary */ }
}

NormalizedEvidence

Field Type Notes
evidence_id string Unique within the bundle.
evidence_type enum See EvidenceType.
source EvidenceSource origin system (name, kind, version, uri).
producer string Human-readable tool or actor.
subject_type enum repository, commit, pull_request, workflow_run, build, artifact, release, application.
subject_ref string Stable identifier for the subject.
status enum passed, failed, completed, generated, missing, invalid, unknown.
confidence enum high, medium, low. Manual evidence is downgraded automatically.
release_id, commit_sha string Anchors the evidence to the release context.
generated_at, collected_at datetime ISO 8601 UTC.
raw RawEvidenceRef? artifact_path + integrity_hash for audit.
findings_count { string: int } Aggregated counters (e.g. severity breakdown).
summary string One-line description suitable for reports.
metadata object Opaque payload preserved for auditors.
manual bool true for attestations; influences confidence.

ControlEvaluation

Field Type Notes
control_id, control_name, framework string Maps to the control catalog.
evaluation_status enum met, partial, missing, waived, not_applicable.
criticality enum critical, high, medium, low. Drives release gate.
evidence_refs string[] IDs of NormalizedEvidence satisfying the control.
missing_required_evidence_types enum[] What is still missing as required.
missing_recommended_evidence_types enum[] Non-blocking gaps.
confidence enum Lowest supporting confidence, downgraded if any supporting evidence is manual.
rationale string Human-readable explanation of the verdict.
evaluated_at datetime When the engine ran.
exception_refs string[] Reserved for Phase 2 exception workflow.

Gap

Field Type Notes
control_id string Control whose evidence is missing or weak.
evidence_type enum? Specific evidence type, when known.
criticality enum Inherited from the control (or low for recommended-only gaps).
description string Why the evidence is considered missing.
remediation string How to satisfy the gap.

Summary

Field Type Notes
evidence_coverage_score 0–100 Ratio of earned/total weight across required + recommended evidence.
confidence_score 0–100 Average of confidence across satisfied evaluations.
release_status enum ready, conditional, not_ready.
missing_critical_evidence string[] control_id:evidence_type pairs for critical/high gaps.
total_controls / controls_met / controls_partial / controls_missing / controls_waived / controls_not_applicable int Counters validated against total_controls.

Invariants enforced by the schema

  • every ControlEvaluation.evidence_refs entry must match an existing NormalizedEvidence.evidence_id in the bundle,
  • Summary control counters must sum to total_controls,
  • commit_sha is normalized to lowercase hex; non-hex input is rejected,
  • manual evidence cannot carry confidence = high (downgraded to medium),
  • RawEvidenceRef requires at least one of artifact_path or artifact_uri,
  • ControlDefinition must declare at least one required or recommended evidence type.