# Data audit | file | SHA-256 | notes | |---|---|---| | data/sales.csv | 0a53f5e851e31130083cfc70aafd2e2a644eadbc734d6928782d6d6cb60caf53 | 1201 lines (header + 1200 data lines), LF endings, no CR | | data/metadata.json | 2aefdcfaf936c7a301d4fa32aa05cb04bff46ad2fd34c423a358e423ec47ac8f | n_records=1200, sum_price_cad=471287000, n_by_municipality (5 municipalities); price CAD, area m² | ## sales.csv - Header: sale_id,municipality,sale_date,price_cad,area_m2 (5 columns). - 1164 lines parse into 5 fields with valid values; 36 lines (file lines 701–736, between S00699 and S00736) are garbled: random characters, 1–12 comma-separated fields, IDs not of the form S+5 digits. sale_ids S00700–S00735 are absent from the readable rows (consistent with these lines being those records, but their content is not readable and is not reconstructed). - 25 readable rows have price_cad exported as a quoted string with thousands separators ("280,000"). Under RFC-4180 quoting this is unambiguous → kept, comma removed. - Readable rows: no missing values, no duplicate sale_id, no duplicate full rows; all municipalities in the metadata set; dates 2021-01-01..2022-12-31, all valid; price 92,000–1,363,000 CAD; area 39.8–335.9 m²; price/m² 1,321–6,923 — no unit anomalies detected. - Readable municipality counts vs control: Gatineau 335/346, Laval 274/282, Sherbrooke 209/216, Longueuil 187/194, Levis 159/162 (gap sum = 36). ## Availability rules No input violates the rules. The 36 garbled lines are excluded, not imputed.