Corroboration and conflict
Detection first groups claims by exact value equality.
Corroborating duplicates merge their evidence, deduplicated by assertion and
span, and are soft-deleted as duplicate claim rows. Their validity windows
are not closed: another source agreeing with a claim does not mean the claim
stopped being true.
For relationships, the ordinary slot includes both endpoints. A
rel_set
slot additionally compares the different objects for one subject and
predicate. That cross-object check is used when cardinality is one or
unknown. A predicate explicitly allowing many values, or an event-like
predicate, does not create that form of cross-object conflict.
Truth slots are materialized answers
ATruthSlot contains the current values and the metadata needed to interpret
them:
A slot’s top-ranked value is not automatically an unambiguous fact. Inspect
the value status, conflict state, rationale, and staleness together.
Slots support attributes, individual relationships, cross-object relationship
sets, and events. They are partitioned by the security envelope. Claims in
different envelopes never share a conflict group, even if an administrator
can read both. This protects isolation and deliberately leaves cross-envelope
contradictions outside truth maintenance’s comparison scope.
How a decision is made
The managed runtime wires the adjudicator when the relevant extraction feature and Anthropic credentials are available. It receives rendered claim values, evidence notes, timestamps, confidence, and known predicate semantics. See pipeline truth maintenance for deployment settings and work kinds.Adjudicator outcomes
Equivalence groups can merge duplicates of a selected winner. A
coexist
verdict currently retains all claims approved rather than merging every
equivalence group independently.
If semantics are unknown, the adjudicator must include a semantics proposal.
That proposal is recorded as llm_proposed and cannot overwrite an
operator’s configured semantics. See predicate governance.
Deterministic fallback
When there is no adjudicator or the configured provider cannot produce a usable verdict, the stored predicate policy provides the fallback:
With no semantics, the general fallback is
allow_parallel. Do not expect an
unconfigured deployment to infer which employer replaced the other.
The current relationship/attribute adapter supplies no context buckets to
split_by_context, so those claims share the default bucket. Setting that
policy alone does not infer roles or time periods from prose.
A deterministic fallback gives a defined result during provider absence. Its
rationale should remain visible so callers can distinguish it from an
adjudicated decision.
Evidence changes, stale decisions, and retries
Truth maintenance runs asynchronously after graph commit:- Detection creates or updates the slot and any conflict group.
- Resolution evaluates the current competing claim set.
- Commit writes current values and claim statuses if the live claim set still matches the one that was evaluated.
- Registry or alias changes can mark dependent slots stale and enqueue recomputation.
needs_review result or
re-corroboration of an already-superseded value. Re-running the same work is
therefore not a way to ask for a different answer. Inspect the claim-set and
review state when deciding how to resolve it.
Recomputation commits single-value cases directly. Multi-value cases enqueue
resolution work rather than making an unbounded model call inside the
recompute sweep.
Read an answer responsibly
Uselist_truth_slots to find an entity’s slots
and get_truth_slot_history to inspect
competing assertions and conflict information. Both tools must be available
in the selected MCP profile and authorized for the caller.
For request examples and troubleshooting, continue with the
truth slots guide.
