Container Registry and Software Supply Chain Platform  ·  View 11 of 33  ·  3 · Data

Evidence Data Model

The entities a decision reads, and the two columns that cannot be null.

Editable source SVG draw.io All views
repository repository_id PK project FK -> tenant class release|dev quota_bytes immutable_tags artifact digest PK sha256 repository_id FK media_type size_bytes first_pushed_at attestation attestation_id PK subject_digest FK predicate_type generator superseded_by signature signature_id PK attestation_id FK signer_identity issuer cert_not_after tag_history tag_event_id PK repository_id FK tag digest FK actor occurred_at sbom_component component_id PK subject_digest FK purl version licence layer_digest promotion promotion_id PK attestation_id FK from_env to_env approver bundle_version inclusion_proof proof_id PK signature_id FK log_index tree_size signed_entry_ts finding finding_id PK subject_digest FK component_id FK advisory_id FK severity state first_observed_at advisory advisory_id PK CVE|GHSA feed_agreement severity_osv severity_distro amended_at policy_bundle bundle_version PK environment rego_digest signed_by effective_from suppression suppression_id PK finding_id FK justification approver expires_at NOT NULL exception exception_id PK scope owner justification expires_at NOT NULL admission_decision decision_id PK subject_digest bundle_version FK verdict reason_codes evidence_digests 1 : N 1 : N N : 1 1 : N 1 : 1 1 : 1 subtype 1 : N 1 : N 1 : N 0 : N 1 : N 1 : N Evidence Data Model expires_at is NOT NULL on both suppression and exception. A grant without an expiry cannot be written. v 1.0 · owner Data Architecture · date 2026-09

Decisions

  • digest is the primary key of artifact; nothing keys on a tag
  • attestation carries superseded_by rather than being updated, which is how append-only survives corrections
  • admission_decision records the bundle version and the evidence digests read, so any past decision is reproducible

Constraints that carry policy

  • expires_at is NOT NULL on suppression and on exception — a grant without an expiry cannot be written
  • advisory holds severity from each feed separately, so disagreement is representable rather than averaged away
  • finding is never deleted; a withdrawal is a state change

Deliberately omitted

  • Tenant and project tables — see the isolation view
  • Cost attribution tables — phase 3