Truthound 3.1.7 Release Notes¶
Highlights¶
Truthound 3.1.7 repairs the structured-file contracts discovered by the
Truthound mixed-asset operational gate. Complete JSON documents now have
the same semantics through the root API and FileDataSource, and nested JSON
columns can participate in automatic drift comparison without hashability
errors.
Complete JSON document contract¶
.json is parsed as one complete document rather than being inferred as
NDJSON from its first character.
- an array of objects produces one row per object;
- a top-level object produces one row containing its fields;
- an array of scalars produces a
valuecolumn; - a top-level scalar produces one
valuerow; .ndjsonand.jsonlremain separate line-delimited lazy-scan formats.
This removes the former failure where a legal top-level object started with
{ and was incorrectly sent to the NDJSON scanner. Array JSON no longer
creates an unmanaged temporary NDJSON file.
Nested drift comparison¶
truthound.drift.compare(..., method="auto") now canonicalizes Struct and
List values to deterministic JSON categories before invoking categorical
detectors and statistics. Object key order is normalized, null values remain
null, and ColumnDrift.dtype continues to report the original Polars dtype.
Explicit numeric methods such as ks and psi still require numeric columns.
Consumer upgrade gate¶
Consumers such as Truthound must install the published 3.1.7 wheel,
verify truthound.__version__, and rerun profile, validation, drift, anomaly,
serialization or re-entry, and mixed-asset lifecycle checks. A source checkout
or unpublished wheel is not consumer certification evidence.