Release notes — EvidenceLocker append-only bundle storage

Sprint: SPRINT_20260501_050_EvidenceLocker_append_only_storage Audit finding: Pass-2 audit Group L finding L1 (post-seal mutation of evidence bundles). Status: Pre-prod breaking change. Existing dev databases must be reset.

Summary

EvidenceLocker enforces strict append-only storage for sealed evidence bundles. The four mutation methods that previously walked a single bundle row through Pending → Assembling → Sealed (SetBundleAssemblyAsync, MarkBundleSealedAsync, UpdateStorageKeyAsync, UpdatePortableStorageKeyAsync) are removed. A bundle row is now written exactly once at seal time via a single SealBundleAsync call. Re-seals (e.g. portable bundle materialisation) write a new sealed row whose supersedes column points at the predecessor; the predecessor’s superseded_by field is the only field permitted to mutate post-insert and is set via a SECURITY DEFINER SQL function.

What changed

Database schema

Repository contract

Service-layer changes

Domain model

Breaking changes

Operational notes

Tests

References