Every finding contains a stable check ID, severity, field, affected record or range, evidence, threshold, explanation, assumptions, and suggested investigation. Findings are deterministic and sorted; they are leads for review, not declarations of scientific invalidity.
empty-datamissing-valuesnon-finitetype-changerecord-shape-changerecord-length-changeduplicate-rows
Shape comparison uses the actual field-name set, so {a,b} changing to {a,c} is detected even
though both records have length two. Non-finite JSON input is rejected by the parser and preserved
as invalid evidence; the direct quality API also detects non-finite Python floats.
constant-signalfrozen-valuessudden-spikesoutliershigh-noisemonotonicity-violationcounter-reset
Frozen ranges retain original record positions and missing values break a run. Outliers use a six-MAD rule; when MAD is zero, values different from the median are still surfaced. Spikes use ten times the median absolute adjacent step, with a non-zero-step fallback when that median is zero. High noise uses coefficient of variation and is meaningful only for ratio-scale signals.
Monotonic and counter expectations are explicit:
datary inspect session \
--monotonic-field distance \
--counter-field packet_count \
--qualityduplicate-timestamps, including duplicates that are not adjacent;timestamps-backwards;irregular-timing, outside ±20% of the median positive interval;large-timing-gaps, over twice the median positive interval;packet-loss, when a sequence field role is supplied.
Domain thresholds vary. Treat the raw records, units, system limits, and experimental design as the final authority.