step,rule,n_before,n_after,n_removed,rationale 1,row parses into exactly 5 CSV fields,1200,1164,36,rows with wrong field count are corrupted (garbled bytes); content cannot be read unambiguously 2,sale_id matches S + 5 digits,1164,1164,0,malformed identifier indicates a corrupted record 3,municipality in control-total list,1164,1164,0,unknown municipality indicates a corrupted record 4,sale_date is a valid ISO date,1164,1164,0,unreadable date 5,price_cad is a positive integer (optionally with thousands separators inside quotes),1164,1164,0,unreadable price 6,area_m2 is a positive number,1164,1164,0,unreadable area 7,sale_id unique,1164,1164,0,duplicate records would double count