Cadora's evidence pack, step by step: a run finishes green, cadora report packs it into a tamper-evident bundle (report.html, report.json, checksums.txt), cadora sign adds an attributable detached SSH signature, the pack is handed off, and cadora verify on the other side recomputes every hash and checks the signature — 23 file(s) OK, signature VALID, VERIFIED.

Cadora · evidence pack

The audit trail you can hand off

A run finishes green — but green on your machine is a claim until someone else can check it. Cadora packs each run into a portable evidence pack: tamper-evident by checksum, attributable by signature, and verifiable by anyone, offline. This is that pack's journey off your machine.

Surface · CLI + portable packRole · operator / auditorCaptured · fixture run, aidlc-hitl
01

A run completes, green

Every gate cleared and the DAG reads clean — three green nodes, each stamped with its gate and review outcome. The evidence is all there in the archive: per-node cost, duration, gate and integrity verdicts, and who decided what at each human gate. What's missing is a way to carry that proof to someone who wasn't watching.

localhost:8768/runs/pr1-verify
pr1-verifyfixture · aidlc-hitl · 3 nodes
completed
requirements
cleanapprove
design
cleanapprove
construction
gate passed
02

cadora report packs the evidence

One command turns the archived run into a self-contained pack under runs/pr1-verify/report/: report.html to read, report.json for machines, and checksums.txt — the SHA-256 of every archived file plus report.json. That last file is what makes the pack tamper-evident: change one byte anywhere and a hash stops matching.

zsh — cadora report
$ cadora report pr1-verify --archive-dir runs evidence pack for pr1-verify: html runs/pr1-verify/report/report.html json runs/pr1-verify/report/report.json checksums runs/pr1-verify/report/checksums.txt verify: cd runs/pr1-verify && shasum -a 256 -c …/report/checksums.txt
checksums.txt — 23 hashed files, one line each: <sha256>␣␣<path>
5172112d97…requirements/aidlc-docs/inception/requirements/requirements.md
10227a21da…design/aidlc-docs/inception/application-design/application-design.md
cb114f2b6d…design/aidlc-docs/audit.md
a3f90c14e2…report.json
…19 more

The pack is checksummed, not yet signed — anyone can confirm it's unchanged, but not yet who stands behind it. That's the next step.

03

cadora sign makes it attributable

A detached SSH signature over checksums.txt binds the whole pack to a key you already have — no new dependency, just ssh-keygen -Y sign under the hood. Now the pack is tamper-evident and attributable: a verified pack proves both that nothing changed and who signed it.

zsh — cadora sign
# one-time: make a signing key you keep private $ ssh-keygen -t ed25519 -f pack-key -N "" $ cadora sign pr1-verify --key pack-key --identity yves@cadora.dev signed evidence pack for pr1-verify: signature runs/pr1-verify/report/checksums.txt.sig signer ssh-keygen · yves@cadora.dev key SHA256:u4yCokMkI9o7tsmwDYVGM9WBBxkyz8uF53e8y9HJJx8 verify: cadora verify pr1-verify --archive-dir runs

The signature travels beside the pack as checksums.txt.sig and signature.json (the public key plus its fingerprint), so a recipient can verify entirely offline.

04

Hand it off

The pack is a handful of small files and nothing else — no server, no database, no live Cadora. Mail it, attach it to a deliverable, drop it in a ticket. It carries its own proof: the report to read, the checksums to recompute, the signature to attribute.

runs/pr1-verify/report/ — the portable pack
report.htmlhuman view — nodes, gates, cost, review trailread
report.jsonthe same evidence, structured for machinesdata
checksums.txtSHA-256 of every archived file + report.jsonhashes
checksums.txt.sigdetached SSH signature over the checksumssignature
signature.jsonsigner identity, public key, and its fingerprintsigner key

Self-contained by design — report.html embeds its own styles and links to nothing external, so it renders the same on a machine that has never heard of Cadora.

05

cadora verify — on the other side

The recipient runs one command. Cadora recomputes every hash in the pack, then checks the signature against the public key that travels with it. The verdict is two plain lines and a bottom line — VERIFIED only if the hashes hold and the signature checks out; otherwise NOT VERIFIED and a non-zero exit.

zsh — cadora verify · recipient's machine
$ cadora verify pr1-verify --archive-dir runs evidence pack pr1-verify: ✓ hashes 23 file(s) OK ✓ signature VALID — yves@cadora.dev · self-attested — confirm signer key SHA256:u4yCokMkI9o7tsmwDYVGM9WBBxkyz8uF53e8y9HJJx8 out of band => VERIFIED

Self-attested means the signature was checked against the key in the pack — proof it hasn't changed since signing. To bind it to a person, confirm that fingerprint out of band, or verify against an --allowed-signers file you already trust.

tamper-evidentattributableverified

The terminal frames above reproduce real cadora report / sign / verify output, rendered as editable HTML rather than raster captures — lift them into Figma or iterate directly. This is Cadora's audit-grade endgame: a run's proof survives leaving the machine that made it — tamper-evident, attributable, and verifiable by anyone who receives it.