Evidence
For Both Executive and Technical ReadersNatural language is hedged. Forcing it into a binary throws away exactly the information that matters. Soft evidence lets the model take the LLM’s confidence as confidence.
01 The Gap
A hedge forced into a fact is a lie.
The LLM reads “the patient appears mildly febrile.” What should it tell the model?
Fever = No // worse: discards a real signal because it was not certain
P(Fever) = 0.7 // keeps the hedge intact, the model receives the observation and the confidence in it
Every upstream source has this shape. A medical device, a sensor-fusion stack, a security alert, an LLM, all of them produce uncertain observations. Forcing each one to commit to a binary before it reaches the model destroys information the model could have used.
A hedge forced into a fact is a lie. The binarisation problem is not a technical inconvenience. It is a category error that corrupts every inference downstream of it.
02 The component
How observations enter the model, uncertain, typed, and calibrated.
Evidence is the Domain Models, Construction layer component that defines how observations enter the model at query time. It sits between the LLM’s Parse stage and the inference engine’s Execute stage, it is the seam between language and probability. Its artifact is the EvidenceBinding: a typed object that carries not just a value but a kind (hard, soft, or virtual) and the observer’s calibrated confidence.
| Field | What it holds |
|---|---|
| Variable | Which node in the model this evidence attaches to |
| Kind | Hard (certain), soft (a probability over states), or virtual (a likelihood, not a state) |
| Value | A certain state, a distribution over states, or a likelihood weight, matching the kind above |
| Source | Sensor, device, LLM, or analyst, who or what observed this |
| Confidence | The observer's calibrated belief, carried into the model rather than rounded off |
The confidence field is never discarded or rounded. The model receives the observer’s uncertainty and propagates it. That is what makes the bounded LLM honest: it is uncertain out loud, and the domain model is where uncertainty is reconciled.
Hard evidence sets a node to a definite value. Soft evidence updates a node proportionally to the observer’s confidence. Rounding a 72% confidence to “yes” overstates certainty; rounding to “no” discards the signal entirely.
03 How it works
The model doesn’t require hard facts. It takes uncertainty directly.
A Bayesian network does not require hard evidence. Two related mechanisms let it take uncertainty directly.
Soft evidence sets a distribution over a variable, “treat Fever as 70% likely”, rather than fixing a state. The LLM emits P(SepticAppearance) = 0.76 instead of SepticAppearance = Yes.
Virtual evidence attaches a likelihood, a strength of belief from an imperfect observer, to a variable, expressing how much that observer’s report should move the posterior. Useful when the observer is calibrated but not omniscient: a security alert, a radiologist’s read, a sensor with known error rates.
Fusion. The LLM’s soft readings join hard measurements, a lactate value, a white-cell count, and the model fuses all of them into one calibrated posterior. The language model’s uncertainty and the instruments’ certainty enter the same model on equal footing. Nothing upstream is forced to round to a yes or no; the fusion happens inside the explicit model that can weigh it.
Each piece of evidence, hard or soft, propagates through the network and shifts every connected variable’s posterior. That propagation is Bayesian updating: the belief state of the domain model changes, and the new posterior is where the reasoning processes take over.
04 The Brains
The seam that makes the LLM/model division of labour work.
Evidence is the boundary that makes this division of labour work. Without soft evidence, the LLM either fabricates certainty or discards signal. With it, the LLM contributes calibrated confidence and the explicit model performs the combination. The boundary only holds because the LLM is uncertain out loud.
There is no .bayes file for Evidence, Evidence defines how observations enter any domain model, not a specific one. The artifact is the EvidenceBinding, which flows into the Execute stage of the Pipeline and becomes the evidence set recorded in the AuditRecord.
bindings = [
SoftEvidence("SepticAppearance", p=0.76), # LLM confidence, preserved
HardEvidence("Lactate", "gt_4"), # instrument certainty
HardEvidence("WBC", "elevated"), # lab result
]
# Model fuses hard + soft natively, no upstream system forced to binarise
result = Inference(net).query(CausalQuery(evidence=bindings, target="Sepsis", rung=2))
result.posterior["Sepsis"] # 0.83
05 Query in plain English
What the LLM hands to the model at every query.
Evidence is what the LLM hands to the model at every query. Here is what that handoff looks like.
SoftEvidence(SepticAppearance, p=0.76), I’m not asserting it as fact. Lactate and WBC enter as hard evidence. The model fuses all three. P(Sepsis | do(Treatment = empirical)) = 0.83.sepsis.bayes given those three EvidenceBindings. The evidence set is recorded in the AuditRecord. The confidence values I assigned are there too, auditable, contestable. I estimated the soft confidence. The model computed the posterior.The audit trail is the EvidenceBinding set in the AuditRecord, not the clinician’s note.
06 Where it sits
Between the Language Interface and the inference engine.
Evidence is the seam between the Language Interface and the inference engine. It sits between the Parse stage of 01 Pipeline: where the LLM extracts observations from natural language, and the Execute stage, where the model receives them as typed EvidenceBinding objects.
Upstream: the LLM’s constrained-decode Parse stage, plus sensors, devices, and analysts. Downstream: the Execute stage, the AuditRecord (which records the evidence set), and every Cognitive Primitive that reasons over observations. Evidence feeds all of them identically, the same EvidenceBinding schema regardless of which primitive receives it.
For Pearl, this is evidence entered on a causal model, uncertain observations conditioning an explicit structure. For Marcus, it keeps the inputs explicit and calibrated rather than collapsed into opaque tokens, the system records how sure it was. For LeCun, it is the perception-to-domain-model interface done honestly: the language layer reports graded belief, and the domain model integrates it.