Dinand Tinholt · Experiments

Lab tools · decision-head · audit log

Lab tool · reads logs in your browser

Audit Row Reader

Drop one or more decision-head audit logs here and read them as a trail. Each line shows the answer to one question and how sure the reading was. Rotated files verify as one series, and the page names the first row, or the first file boundary, that stops matching its seal.

Runs in this browser tab. The page has no server, and the logs you drop or paste never leave this machine. The fonts are its one network request. Your screen settings stay in this browser.

The log

nothing loaded

Drop audit.jsonl files here with their .chain seals. Several rotated files read as one series, ordered by their first timestamp.

A generated sample log; no deployed system wrote it. tools/make_sample.py writes it in the documented row format.

Keeping the seal

where the .chain file should live

A seal helps only if the account that writes the log cannot also rewrite the seal. decision-head's 2026-10-06 security review lists the audit log as an asset that "must be complete, attributable and free of secrets and documents". It also says the files the service writes "are operator-controlled but not integrity-checked", and that without a chain "a tampered or truncated log is also undetectable".

Anything running under the service's account can edit both files when they sit side by side. That covers the service, a script, and an agent with shell access. So the seal goes somewhere that account cannot write.

Quotes from the decision-head repository: docs/security-review-2026-10-06.md (threat model, asset A4 and boundary TB4; finding 8); docs/audit-log.md ("What the audit log does not record"). The storage advice is this build's.