Evidence

Verified against commit 942a18727c on 2026-09-26 (UTC). Re-verify: grep -nE "^ (evidence-web|evidence-worker|attestor-tileproxy|tsa):" devops/release/bundle/docker-compose.yml and ls src/Evidence src/Evidence/__Libraries src/EvidenceLocker/__Libraries.

Service rows (host project, image, database and role, compose file, bundle presence, Doctor registration) are generated in docs/architecture/service-inventory.md; where this page and the inventory differ, the inventory is authoritative.

The consolidated evidence and attestation service (ADR-039 D14): sign-off evidence is attested, anchored in a local transparency log, sealed into capsules and bundles, time-stamped, held and exported from one family with one database. Signer is not part of this family.

Start here: architecture.md.

Deployables

RoleSourceImageComposeRelease bundle
evidence-websrc/Evidence/StellaOps.Evidence.WebService/stellaops/evidence-webdevops/compose/docker-compose.evidence.yml (included by docker-compose.stella-ops.yml)yes
evidence-workersrc/Evidence/StellaOps.Evidence.Worker/stellaops/evidence-workersameyes
attestor-tileproxysrc/Attestor/StellaOps.Attestor.TileProxy/stellaops/attestor-tileproxydevops/compose/docker-compose.stella-services.ymlyes
tsadevops/docker/tsa/ (openssl RFC 3161 responder)stellaops/tsadevops/compose/docker-compose.stella-services.ymlyes

attestor-tileproxy and tsa are family members by ownership, not by compose key: the tile proxy is its own small ASP.NET host, tsa is an openssl container, and neither has a database.

Database

API surface

The canonical prefix is /api/evidence/v1, plus absolute controller routes under /api/v1, /anchors, /proofs and /verify. The published route set is pinned in src/Evidence/__Tests/StellaOps.Evidence.WebService.Tests/Fixtures/consolidated-route-inventory.tsv.

CapabilityWhere it lives
DSSE attestation submit, verify and retrievalStellaOps.Attestor.Application, .Verify
Local transparency log, checkpoints and inclusion proofsStellaOps.Attestor.Infrastructure/Rekor/
Proof chains, merkle spines, receipts, content-addressed storeStellaOps.Attestor.ProofChain
Sealed evidence capsules, bundles, exports, legal holds, evidence threads, regulatory artifact ledgerStellaOps.EvidenceLocker*
RFC 3161 existence-time anchoring at sealStellaOps.EvidenceLocker.Infrastructure/Signing/
Predicate schema registry and standard predicatesStellaOps.Attestor.StandardPredicates
Identity watchlistStellaOps.Attestor.Watchlist
Timestamp Assurance: web checks, tenant API and worker schedulesStellaOps.Evidence.TimestampAssurance*

All libraries above are under src/Evidence/__Libraries/. Shared contract, export, import and timestamping libraries remain under src/EvidenceLocker/__Libraries/, and the encrypted-backup tool is src/EvidenceLocker/__Apps/StellaOps.EvidenceLocker.BackupCli/.

Doctor checks

evidence-web serves GET /doctor/evidence/checks behind ops.health: the family checks (doctor.evidence.database.*, doctor.evidence.data-integrity.*, doctor.evidence.retention.*), the SDK standard checks and the Timestamp Assurance checks (doctor.evidence.timestamp.*). The full list is in architecture §7.

Retention

Retention classes, cleanup budgets and custody boundaries: retention-classification.md. RFC-15 Q-38 added migration 011_evidence_counsel_retention_reclamation.sql and the counsel-retention reclamation worker (architecture §2).

Retired predecessors

WasReplaced byRecord
attestor hostevidence-web / evidence-worker (2026-09-05)../attestor/README.md
evidence-locker-web / evidence-locker-workerevidence-web / evidence-worker (2026-09-05); hosts frozen under src/__Obsoleted/EvidenceLocker/archived dossier: docs-archive/modules/evidence-locker/

Operating

Subordinate documents

DocumentStatus
architecture.mdcurrent
retention-classification.mdand its verification JSONcurrent (retention programme record)
native-package-verification.mddesign record, not re-verified 2026-09-26
locker/export-format.md, locker/bundle-packaging.md, locker/bundle-packaging.schema.json, locker/evidence-bundle-v1.md, locker/verify-offline.md, locker/schemas/, locker/samples/current format contracts; routes updated to /api/evidence/v1
locker/attestation-contract.md, locker/attestation-scope-note.md, locker/promotion-evidence-contract.md, locker/replay-payload-contract.mdcontracts; routes updated, otherwise design record, not re-verified 2026-09-26
locker/portable-audit-pack-contract.mdand the other locker/portable-audit-pack-*.md pagesdesign record, not re-verified 2026-09-26 (the CLI runbook describes target behaviour)
locker/dora-roi-retention.md, locker/eu-regulatory-persistence.md, locker/legacy-capsule-erasure-policy.mdcurrent for semantics; schema authority note added (the consolidated baseline is the migration authority)
locker/encrypted-backup-restore.mdcurrent (BackupCli under src/EvidenceLocker/__Apps/)
locker/incident-mode.md, locker/compliance-checklist.mddesign record, not re-verified 2026-09-26
locker/guides/evidence-locker.md, locker/guides/evidence-pack-schema.mdguides; the pack assembly/replay routes are marked not served
api-reference.md, openapi/v1.jsongenerated 2026-09-27 from the consolidated host’s /openapi/v1.json (in-process capture; see docs/changelog/openapi/2026-09-27-pcd84-openapi-captures-regenerated.md)
EvidenceLocker host-era README.md, architecture.md, api-reference.md, openapi/v1.json, CHANGELOG.md, eb-gaps-161-007-plan.mdarchived at docs-archive/modules/evidence-locker/