Promotion Evidence Contract

Purpose

This contract defines the evidence payload that promotion gates consume. It freezes ownership boundaries and required fields for deterministic and offline-capable release decisions.

Ownership Boundaries

CapabilityOwning moduleNotes
Evidence storage and retrievalEvidenceLockerStores immutable evidence; does not decide allow/deny.
DSSE signingSignerProduces signed envelopes and signer metadata.
Transparency logging and proof materialAttestorProduces Rekor UUID/log index/proof references and verifies proofs.
PASS/FAIL policy decisioningPolicy EngineEvaluates gate logic and emits decision outputs.
Promotion orchestrationRelease OrchestratorConsumes evidence + policy outputs to progress promotion state.

Canonical Promotion Gate Input

The promotion gate input MUST be serializable as canonical JSON with stable key order and UTC timestamps.

{
  "artifact": {
    "artifactId": "string",
    "digest": "sha256:..."
  },
  "evidence": {
    "evidenceScore": "lowercase-hex-sha256",
    "bundleId": "guid",
    "bundleDigest": "sha256:..."
  },
  "sbom": {
    "canonicalDigest": "sha256:...",
    "format": "cyclonedx|spdx"
  },
  "attestations": [
    {
      "predicateType": "string",
      "dsseDigest": "sha256:...",
      "signerKeyId": "string"
    }
  ],
  "transparency": {
    "rekorUuid": "string",
    "logIndex": 0,
    "proofRef": "cas://..."
  },
  "vex": {
    "mergedDigest": "sha256:...",
    "statusSummary": "affected|not_affected|under_investigation|mixed"
  },
  "inToto": {
    "layoutDigest": "sha256:...",
    "linkDigests": ["sha256:..."]
  }
}

EvidenceLocker API Mapping

EndpointContract fields populated
POST /evidenceartifact.*, evidence.evidenceScore
GET /evidence/score?artifact_id=...evidence.evidenceScore
POST /evidence/snapshotevidence.bundleId, evidence.bundleDigest
GET /evidence/{bundleId}sbom.*, attestations[], vex.*, inToto.*
POST /evidence/verifytransparency.* verification status and proof linkage
GET /evidence/{bundleId}/portableOffline bundle material for air-gapped verification

Determinism Requirements

Offline Verification Requirements

Implementation References