Risk, legal & compliance

Prove what your AI decided two years ago

A regulator, an auditor, or your own legal team asks why the system approved something in 2024. By then the prompt has changed eleven times and the model's been deprecated. If the decision only lives in a system that keeps moving, you don't actually have an answer.

A run from March 2024, inspected today. The blueprint version that produced it has since been retired twice — but the run pinned its own version, its own evidence hashes, and its own reviewer sign-off, so it still explains itself exactly as it did the day it ran.

Sound familiar?

The prompt that produced it no longer exists

Someone edited the system prompt eleven times since that decision was made. Reconstructing what it actually saw means archaeology through commit history, if you're lucky enough to have any.

The model changed too

The vendor deprecated the model version. Even with the old prompt in hand, running it again today gives a different answer — so "just re-run it" isn't actually a defence.

Nobody logged which documents it actually read

The knowledge base has been updated dozens of times since. There's no way to know which version of which guideline was live when the decision was made two years ago.

Why the usual fixes don't move the number

Screenshotting the answer at the time

A screenshot proves what was shown, not what was read or why. It has no chunk hashes, no model version, no reviewer — nothing a regulator can actually verify against.

A separate logging pipeline bolted on afterward

A second system that records what the first system did will eventually disagree with it — a dropped log line, a timestamp mismatch — and that disagreement is exactly what an audit finds first.

Versioning the knowledge base as a whole

Snapshotting an entire corpus every time anything changes is expensive and still doesn't tell you which chunks a specific decision actually used, only what existed nearby.

"We'll figure it out if we ever get audited"

By the time the letter arrives, the prompt has changed, the model has been deprecated, and the person who built it has left. This is a decision made once, at build time, or not at all.

How we solve it

01Every run pins its own version

The blueprint version, the as_of date, and every instruction module applied are written onto the run itself — not referenced from a system that keeps moving.

blueprint_version: v1.2as_of: 2024-03-11instructions_applied[]

02Evidence is pinned by content hash

Not a link to a document that might get edited or deleted — the exact hash of the exact chunk that was read, so the evidence itself can be verified byte-for-byte.

content_hash per chunkbyte-exact, not a pointer

03The reviewer's decision lives on the same record

Approval, correction, and reviewer identity are fields on the run — not a separate sign-off system that can drift out of sync with what was actually decided.

review.statusreview.reviewerone record, not two systems

What you get on every document

Explainable without freezing anything

The blueprint keeps shipping new releases and the knowledge base keeps syncing — old runs stay exactly as explainable as the day they ran.

Re-run and diff, on demand

Compare a two-year-old decision against what today's rules would produce with one click — a real diff, not a guess about what probably changed.

as_of, not "whatever was live"

Bitemporal documents mean a run's evidence reflects the rules in force on the date that mattered — the application date, the incident date — not the day someone happened to run it.

One record a non-technical auditor can read

The run viewer renders evidence, citations, and reviewer sign-off as a single readable trail — not a JSON blob someone has to translate for legal.

The obvious objections

Build your first agent with Inteleto