EvidenceLocker

Status: the evidence-locker-web and evidence-locker-worker deployables are RETIRED (2026-09-05). Nothing below describes a running host.

Successor: the consolidated Evidence service — ../evidence/architecture.md.

EvidenceLocker is no longer a service. Its capability was consolidated into the Evidence family (ADR-039 D14) and its source moved with it:

Where things went

You were looking forRead instead
architecture, database, HTTP surface, authorization../evidence/architecture.md
capsule sealing and RFC 3161 anchoring../evidence/architecture.md§5
tenant isolation, residency and legal holds../evidence/architecture.md§6
the evidence-pack and export formatsthis directory — the formats moved unchanged

Everything below this line is the pre-consolidation documentation. It remains accurate about bundle packaging, export formats, evidence-pack schemas and retention semantics, all of which moved unchanged. Treat any statement about hosts, containers, ports, compose keys or gateway routes as history.


Status: Implemented Source: src/EvidenceLocker/ Owner: Platform Team

Purpose

EvidenceLocker provides sealed, immutable storage for vulnerability-scan evidence and audit logs. It guarantees tamper-evident evidence chains for compliance and forensic analysis through content-addressable storage and cryptographic sealing (Merkle root + DSSE).

Audience: compliance and forensics operators who store, hold, and replay release evidence, and service authors integrating decision capsules, verdict attestations, or portable/air-gapped bundle export.

Components

Services:

Libraries:

API Surface

All routes require Authority OAuth2 bearer auth and a resolved tenant (RequireTenant()). The service FallbackPolicy requires evidence:read, so every route is at minimum read-gated. Scope policies map to: evidence:read → EvidenceRead, evidence:create → EvidenceCreate, evidence:hold → EvidenceHold, export.operator → ExportOperator, export.viewer → ExportViewer (constants in StellaOpsScopes; defined in Program.cs and the *Endpoints.cs files).

Evidence snapshots / gate artifacts (Api/EvidenceCoreEndpoints.cs, consolidated Evidence host):

EVD-10a retired evidence-locker-web. Every route below is served by the consolidated Evidence host beneath /api/evidence/v1; the unprefixed predecessor forms are gone. POST /evidence (gate-artifact store) was withdrawn, not carried — it had no consumers. Its read side, GET /evidence/score, survives.

Decision Capsules (Api/Capsules/CapsuleEndpoints.cs, group /api/v1/evidence/capsules):

Bundle export jobs (Api/ExportEndpoints.cs, group /api/v1/bundles):

Verdict attestations (Api/VerdictEndpoints.cs, group /api/v1/verdicts):

Evidence & Audit adapter (Api/EvidenceAuditEndpoints.cs, group /api/v1/evidence, all evidence:read):

Evidence Threads / Artifact Canonical Record (Api/EvidenceThreadEndpoints.cs, group /api/v1/evidence/thread, evidence:read):

EU regulatory artifact ledger (Api/RegulatoryArtifactLedgerEndpoints.cs, group /api/v1/regulatory/artifact-ledger, evidence:read):

Operational endpoints (anonymous): GET /healthz, GET /readyz, GET /health/ready (legacy), GET /buildinfo.json, and GET /openapi.

Configuration

Configuration binds to the EvidenceLocker section (EvidenceLockerOptions.SectionName); there is no etc/evidence-locker.yaml.sample shipped in this repo. Sealing is synchronous on the write path (no immediate-vs-batch policy toggle).

Key settings (see StellaOps.EvidenceLocker.Core/Configuration/EvidenceLockerOptions.cs):

Dependencies

Current Status

Implemented with WebService and Worker components. Supports sealed evidence storage with cryptographic verification (Merkle root + DSSE), decision-capsule create/seal/verify/export/replay, verdict attestations, an EU regulatory artifact ledger, evidence-thread (Artifact Canonical Record) reads, and portable/air-gapped bundle download. Bundle export jobs and capsule export integrate with the Export Center scopes (export.operator / export.viewer). The Decision Capsule pipeline enforces PII rejection (CapsulePiiGuard) and data residency on write/read. Verdict-attestation DSSE verification is currently fail-closed (trust roots not yet wired). The /api/v1/evidence/audit slice is deprecated in favour of Timeline’s unified audit store.