SOP-07 — Daily self-audit and timestamp anchoring
Owner: Owner-operator (Document Owner and Records Owner for every SOP; no delegate exists). Version 2026-10-08 · effective 2026-09-20 · reviewed every 180 days · last reviewed 2026-10-08 · next review due 2027-04-06.
Purpose
Prove each day that the registry has not been altered and that each day's receipts existed by that day.
Scope
All non-withdrawn registry rows; the daily archive digest.
Procedure
- Daily job (armed by Sentinel if missing after 11:00 UTC): recompute SHA-256 of every stored body and compare with the registry hash; any mismatch is a Class B incident.
- Build the day's archive: the sorted list of the day's receipt hashes and its digest; submit the digest to OpenTimestamps calendars; store the .ots proof when returned; re-submit on later days until a Bitcoin attestation exists.
- Publish the run at /audit (Daily Replay) with counts, mismatches, the archive digest and the proof state. A proof pending is shown as pending, never as attested.
- Serve the proof per hash at /api/public-record/archive-hash/prove/{sha256}; anyone may verify with an OpenTimestamps client.
- Known-answer drill (weekly, plus on demand): draw one row at random from each held file (LEIE entity, SAM firm, state entity, OFAC non-individual, UFLPA), build an ordinary receipt for the printed name, and publish at /case-studies whether that row printed (found / NOT FOUND / source did not answer) with receipt id and hash. A NOT FOUND or pipeline error opens a Corrections ticket. Draws skip names that read as individuals even where the file labels the row an entity; any such name already drawn is withheld on the public page (SOP-05).
Records this procedure produces — and who keeps them current
| Record | Where | Updated by | Update trigger | Retention | Public |
|---|
| Self-audit run | db.self_audit_runs | system | daily | indefinite | True |
| Day archive + .ots proof | db.archive_days | system | daily; re-submission until attested | indefinite | True |
| Known-answer drill run | db.known_answer_runs | system | weekly + on demand | indefinite | True |
Evidence
/audit · /verify · /case-studies
Change log
| Date | Change |
|---|
| 2026-10-06 | Written as SOP. |
| 2026-10-06 | Known-answer drill added to this SOP (it ran since 2026-10-06 without a written procedure). First production run drew a state row labelled 'entity' whose name reads as an individual → draws now skip person-like names; such names are withheld on /case-studies. |
| 2026-10-08 | Each daily self-audit entry now carries a detached Ed25519 signature over its entry_hash under the platform key (DID document, SOP-11); /api/audit/verify checks chain and signatures and counts earlier unsigned entries as predating the key. |
Quality Manual · All SOPs · Records Register