Concepts

Evidence and the ledger

Nothing in Harness is updated in place. Every value carries where it came from and when.

Three times

Each observation carries:

Time Meaning
effective_at When it was true in the business
observed_at When the source saw it
recorded_at When Harness wrote it down

As-of reads use recorded_at, so later evidence with an earlier date cannot change what was known at a given time.

Append-only

Facts, links, outcomes, events, pull evidence and conversation messages are protected by append-only triggers. Erasure of payloads is a separate, recorded operation; the record that something existed remains.

The event chain

Events carry a hash chained to the previous event per business.

amalgament-harness verify ./demo.sqlite demo
HARNESS_AUDIT_KEY=... amalgament-harness anchor ./demo.sqlite checkpoint.json
amalgament-harness verify-anchor ./demo.sqlite checkpoint.json

verify checks the chain. anchor exports an HMAC-signed checkpoint for custody off the host, keyed by the variable --key-env names (HARNESS_AUDIT_KEY by default), and verify-anchor checks one.

Reads name their evidence

A read assembles the value of each permitted fact as of a time, the links in each permitted relation, and the observation IDs behind them. Lists and traversals are bounded and paged with signed, expiring cursors.