ADR-0116: Audit hash chain, seals and outbox
- Status: accepted
- Date: 2026-10-30
- French version: ../ADR-0116-audit-chaine.md
Context
Kit section 11: unsampled durable critical audit.
Decision
hash = sha256(prev_hash + canonical JSON) per tenant; seals, outbox, legal holds, evidence access log. Every mutation writes a chained event.
Consequences
WORM is claimed only when the storage proves it.
Evidence
services/control-plane/src/eai/audit.pysql/postgres/V150__audit_outbox.sqlsql/postgres/V151__audit_seals.sqlsql/postgres/V152__audit_legal_holds.sqlsql/postgres/V153__audit_access_log.sqlservices/control-plane/src/eai/domains/evidence/seals.pyservices/control-plane/tests/test_audit_mutation_coverage.py