Audit an existing dataset (synth verify)¶
The rules that make Synth's output coherent are the rules worth checking on data
somebody else produced. synth verify is the generator run backwards:
synth verify -i orders.csv --ref user_id=users.csv:id
synth verify -i orders.csv -s orders.yaml -f json # also re-check mined invariants
What it reports¶
Failed check digits (Luhn, IBAN mod-97, EAN-13/UPC), unparseable emails, URLs and IP addresses, dangling foreign keys, timestamp pairs in the wrong order, and columns that carry no information. Parent tables are read from their own files — nothing is queried.
Exit codes¶
Exit code 1 on any error, 0 when only warnings were found, so it drops into CI without a wrapper. A degenerate column is a warning, not an error: real data sometimes looks like that, and a tool that cries wolf gets muted.
Two rules that keep it honest¶
- A column is audited only when its values already mostly match what its name
claims, so a column called
cardholding loyalty tiers is skipped rather than reported a million times. - A clean dataset must produce an empty report — a check that fires on correct data is a false positive and a bug here, not something for you to filter out.
k-anonymity¶
verify also answers whether an anonymized export still singles people out:
See Mask.