Overview / Audit
One append-only line per decision, allow or refuse. Each line carries the hash of the line before it, so editing, deleting or reordering any entry breaks the chain from that point on.
Publish the head hash somewhere you do not control, and any later rewrite is detectable.
The verifier is not special. Anyone holding the file can run it.
python -m cleared.cli verify
Edit any line and run it again: it reports the first broken entry and why.
What it does not do. A chain detects changes within a log. It does not stop someone replacing the entire log from genesis. That needs the head hash anchored somewhere external, which this demo does not do.
Phone numbers are masked in the log itself, not just on this page.
Live calls add intent and dispatched entries before the terminal one,
so a call lost mid-flight can never be dialled twice.
| # | Ref | Account | Decision | Reason / outcome | Recorded | prev → hash |
|---|---|---|---|---|---|---|
| 0 | aud_26cff37a | A-1001 | allow | promise_to_pay | 2026-08-28 13:30:00 | 0000000000 → 41f9160f24 |
| 1 | aud_8ce3400a | A-1002 | block | OUTSIDE_CALL_WINDOW | 2026-08-28 13:30:00 | 41f9160f24 → f1a1f08fdf |
| 2 | aud_02ab9627 | A-1003 | block | NO_CONSENT | 2026-08-28 13:30:00 | f1a1f08fdf → 6523acbcff |
| 3 | aud_e95ff827 | A-1004 | block | ON_SUPPRESSION_LIST | 2026-08-28 13:30:00 | 6523acbcff → 60df5b17ac |
| 4 | aud_98654e5a | A-1005 | allow | opt_out | 2026-08-28 13:30:00 | 60df5b17ac → 8a3a03ebcb |
| 5 | aud_edfd6351 | A-1006 | allow | no_answer | 2026-08-28 13:30:00 | 8a3a03ebcb → b76fd9d475 |
| 6 | aud_80358dda | A-1007 | allow | dispute | 2026-08-28 13:30:00 | b76fd9d475 → 1ba6097630 |