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.