Scan for multi-attester disagreement
emem_memory_contradictionsSurface where the corpus DISAGREES with itself (algebra: competing evidence). When two or more independent sources signed different values for the same place + band + time, this returns that disagreement with a 0–1 severity score and citations to every disputed fact, instead of silently picking one value and hiding the conflict. The opposite of a confident single answer: it tells you when not to trust one. Read the SCOPE before quoting a zero: by default this asks only whether two DISTINCT attesters disagree, so one responder answering an address from two different upstreams is not counted until you pass include_same_attester_sources: true.
When to use: Call this when trust matters before you rely on a number, 'is there disagreement about X', 'do the sources corroborate this', 'audit this claim', or 'find contradictory observations in region Y'. Use it to decide whether a fact is well-corroborated or contested. Narrow with cell_prefix (e.g. "defi.zb5") for a region and band for one family; min_severity filters out trivial differences. Severity is per band kind: scalar = spread over the band's range, vector = 1 − mean cosine, categorical = 1 − mode share. On a single-responder deployment add include_same_attester_sources: true: the likeliest real disagreement there is one signer answering from two different providers, and the default scope cannot report it. Each record names its disagreement_scope — multi_attester is two witnesses, same_attester_provider_substitution is one witness that changed instruments. The receipt cites every disputed CID, follow up with emem_diff to quantify a pair, or (with the refinement loop on) read the emitted disagrees_with edge via emem_edges_recall.
Example arguments: {"cell_prefix":"damO","band":"indices.ndvi","min_severity":0.2}
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| band | No | Band key filter (e.g. `indices.ndvi`). Omit to include all bands. | |
| limit | No | Max contradictions to return. | |
| cell_prefix | No | Bytewise prefix on cell64 (e.g. `defi.zb5f9`). Omit to scan the whole corpus up to the scan cap. | |
| min_severity | No | Severity floor in [0, 1]. 0 = report every disagreement, 1 = only flagrant. Severity scoring is per band kind: scalar (max-min over band range), vector (1 - mean cosine), categorical (1 - mode share). | |
| window_unix_s | No | [lo, hi] inclusive Unix-seconds filter on attestations' signed_at, all disagreeing attestations must fall in the window. | |
| include_same_attester_sources | No | Also report keys where ONE attester answered the same address from two different upstreams. Default false, which scans only for disagreement between two or more DISTINCT attesters — so on a single-responder corpus a zero here means the narrower question was answered, not that nothing disagrees. Set true and a key qualifies when the facts differ in `derivation.fn_key` or in their `sources[].scheme` set; the same provider re-signed is a refresh, not a disagreement, and stays excluded. Each record carries `disagreement_scope` and a `providers[]` list naming what changed. |