Write validate(r) against the CONTRACT (missing fields → "missing:<field>", wrong types → "type:<field>"), then run the batch through it: clean rows to kept, bad rows to quarantined as (user, errors). Print the counts, then one line per quarantined row.