# Evidence Locker Attestation Contract (v1 · frozen 2025-11-20) Scope: Evidence Bundle v1 produced by Evidence Locker and consumed by Concelier, Excititor, Export Center, CLI, and Policy Engine. ## Predicates & subjects - **Subject**: OCI manifest digest (`sha256:`) of the bundle, plus optional replay pack digest. - **Predicates (DSSE/In-Toto)** - `stellaops.evidence.bundle.v1`: declares bundle layout (manifests, CAS paths, replay log offsets). - `stellaops.evidence.transparency.v1`: optional Rekor log inclusion proof (UUID, log index, root hash at inclusion). - `stellaops.evidence.integrity.v1`: hashes for each payload (SBOMs, VEX, policy packs, telemetry snapshots), keyed by logical path. ## Required claim set - `bundle_id` (UUID v4) - `produced_at` (UTC ISO-8601) - `producer` (`evidence-locker:`) - `subject_digest` (OCI digest string) - `hashes` (map: logical path → sha256) - `sbom` (array of SPDX/CycloneDX digests and mediaTypes) - `vex` (array of VEX doc digests and schema versions) - `replay_manifest` (optional; digest + sequence number) - `transparency` (optional; Rekor UUID, logIndex, rootHash) - `signing_profile` (`sovereign-default` | `fips` | `gost` | `pq-experimental`) ## Bundling & signing rules - DSSE envelope using the module’s configured crypto provider; keys must be short-lived (<24h) and recorded in provider registry. - Hash list and subject digest MUST match the on-disk CAS objects; deterministic sort by logical path. - Rekor entry is optional; when absent, set `transparency=null` and add `transparency_reason="offline"` to provenance note. ## Verification plan - Verify DSSE signature against provider registry (per profile) and check key expiry. - Recompute sha256 for every CAS object; fail if any mismatch. - If `transparency` present, verify inclusion proof against bundled Rekor root; fail closed on mismatch. - Emit verification report JSON and store beside bundle as `verify.json` (deterministic key order). ## Fixtures - Sample bundle + report: `docs/samples/evidence-locker/bundle-v1-sample.tar.gz` (sha256 TBD at publish time). - Sample attestation envelope: `docs/samples/evidence-locker/attestation-v1-sample.json`. ## Ownership - Primary: Evidence Locker Guild. - Reviewers: Concelier Core Guild, Excititor Guild, Export Center Guild, Policy Guild. This contract is authoritative for Sprint 110 and blocks CONCELIER-ATTEST-73-001/002 and EXCITITOR-ATTEST-01-003/73-001/73-002.