A repair pipeline exists because incoming records are wrong in small, repetitive ways: stray whitespace, mojibake from a bad encoding, a date written as 03/04/2025, a weight in pounds where the schema says kilograms. The temptation is to write one normalizer and let it run on everything. That works until the normalizer silently changes what a record claims.
The cleanest way to see the line is the distinction between syntactic and semantic validation. Syntactic validation checks structure and format; semantic validation checks whether the value is valid in the context of the system's business rules the SKA telescope semantic validation guide. A repair that only touches syntax can be automatic. A repair that touches semantics needs a decision about intent, and intent is exactly what an automated rule cannot supply.
This matters more than it sounds, because the failure mode is quiet. A pipeline that writes 1.2 where the source said 1,200 still produces valid JSON, still passes a schema, and still loads into the warehouse. As one production write-up puts it, valid JSON is not a contract; shape is not truth, and a schema-valid amount, date, or ID can still violate domain rules TrueFoundry's guide to structured outputs. The same logic applies to repairs: a repair that passes validation has only proven it is well-formed, not that it is correct.



