Veritas Overview
Veritas is the WarmHub component for reputation-weighted consensus. It takes opinions that different sources express about your assertions, discounts each opinion by how trustworthy its source has proven to be, and writes back a single consolidated readout — a Consensus assertion — that you can query like any other thing.
Veritas is installed as a component. Once installed, four shapes appear in your repo: Certainty, Support, Opposition, and Consensus. The first three are inputs you write; Consensus is the output Veritas writes back.
The opinion model
Section titled “The opinion model”Every Veritas input and output is a subjective-logic opinion: a four-number tuple describing what a source believes about a binary proposition.
| Field | Meaning |
|---|---|
belief | Evidence that the proposition is true. |
disbelief | Evidence that the proposition is false. |
uncertainty | Residual ignorance — the portion of probability mass not yet committed to either side. |
alpha | Optional base rate (prior). Defaults to 0.5 when omitted. |
belief + disbelief + uncertainty must equal 1. A vacuous opinion is (0, 0, 1) — no evidence either way. A near-dogmatic opinion has uncertainty close to zero.
Trust is wagered, not declared
Section titled “Trust is wagered, not declared”A Certainty is the primitive bet. When a source writes a Certainty about an assertion, the source is wagering its reputation: if the Certainty turns out to disagree with other Certainties on the same assertion, the source’s reputation may move.
Reputation is itself an opinion — (belief, disbelief, uncertainty, alpha) describing how trustworthy a source has proven to be in a given scope. Veritas tracks reputation per shape for Certainty and per directional shape pair for Support / Opposition, so a source’s track record on one assertion type does not automatically carry over to another. Veritas maintains this state behind the scenes and uses it to discount each incoming Certainty before consolidating.
The discount turns a raw Certainty into a weighted certainty — what the source believes, multiplied by how much you should trust the source. A confident statement from a high-reputation source counts for more than the same statement from an unknown source.
Support and opposition
Section titled “Support and opposition”Beyond direct certainties, Veritas also models relationships between assertions:
- A
Supportopinion says “belief in assertion A is evidence for assertion B.” - An
Oppositionopinion says “belief in assertion A is evidence against assertion B.”
Both shapes are written about a Pair collection of two assertions, where the pair’s direction matters: the first member is the antecedent and the second is the consequent. Support and opposition pathways are independent — disbelief on a support pathway means “the support relationship does not hold,” not “the opposite relationship holds.”
Veritas consolidates each pathway separately — multiple Support opinions about the same pair are fused into one support readout, and multiple Opposition opinions are fused into an opposition readout. Each pathway’s consolidated opinion is reputation-weighted in the same way Certainties are.
Consensus
Section titled “Consensus”Consensus is the only shape Veritas writes back to your repo. It appears in two places:
- About a target assertion, consolidating that assertion’s native
Certaintyopinions — Veritas’s reputation-weighted answer to “what do we believe about this assertion?” - About a
Pair, whenSupportand/orOppositionopinions exist for that pair — consolidating each pathway’s opinions independently. (See Writing opinions — Reading the Consensus for the read path and a current limitation around distinguishing the support and opposition rows.)
Consensus is recomputed whenever a new, revised, or retracted input lands. For a fixed set of inputs and reputations, the readout is order-independent and deterministic.
When to use Veritas
Section titled “When to use Veritas”Veritas is the right fit when:
- Multiple sources express opinions about the same assertion and you need a single consolidated answer.
- You want sources to be trusted in proportion to their track record, not equally.
- Some assertions support or contradict others, and you want those relationships consolidated alongside your direct opinions (Veritas writes per-pair
ConsensusforSupport/Oppositionopinions today; propagation of those relations into the consequent assertion’s ownConsensusis not yet implemented). - The underlying claims are binary propositions — true/false statements suitable for subjective-logic opinions.
It is not the right fit when assertions describe magnitudes, categories, or other non-binary values — keep using regular assertions and aggregate them yourself.
Where the readout shows up
Section titled “Where the readout shows up”Consensus assertions are queryable through the same surfaces as any other assertion. wh thing about <target> returns them alongside the raw Certainties; pass --shape Consensus to filter to just the consolidated readouts. The SDK and HTTP API treat them identically.
Next steps
Section titled “Next steps”- Install Veritas — install the component and see what gets created in your repo.
- Writing opinions — practical examples for Certainty, Support, Opposition, and reading Consensus.
Hit a problem or have a question? Get in touch.