# Data audit (P1) | file | sha256 | notes | |---|---|---| | data/sales.csv | 0a53f5e851e31130083cfc70aafd2e2a644eadbc734d6928782d6d6cb60caf53 | 1201 lines (header + 1200 data lines), LF endings, CSV text | | data/metadata.json | 2aefdcfaf936c7a301d4fa32aa05cb04bff46ad2fd34c423a358e423ec47ac8f | n_records=1200, sum_price_cad=471287000, n_by_municipality (Gatineau 346, Laval 282, Sherbrooke 216, Levis 162, Longueuil 194) | ## sales.csv - Header: sale_id, municipality, sale_date, price_cad, area_m2 (5 columns). - Field counts per data line (csv module): 5 fields: 1164; others (1,6,8,9,10,11,12 fields): 36. - The 36 malformed lines are contiguous (file lines 701-736) and contain random characters; sale_id fields are not of form S+5 digits. IDs S00700-S00735 are absent from the readable rows → these lines are the corrupted records. Not readable → excluded, not reconstructed. - 1164 readable rows: sale_id unique, all match S\d{5}, range S00001-S01200; no whitespace issues; no fully duplicated content. - sale_date: all valid ISO dates, 2021-01-01 to 2022-12-31. - municipality: 5 values matching metadata names. Readable counts: Gatineau 335, Laval 274, Sherbrooke 209, Longueuil 187, Levis 159 (shortfalls vs control: 11, 8, 7, 7, 3 = 36). - price_cad: 1139 plain integers; 25 CSV-quoted values with comma thousands separator (e.g. "280,000"); all match \d{1,3}(,\d{3})+; after stripping, their distribution (median 293k) is consistent with the rest → parsed. Range 92,000-1,363,000 CAD. - area_m2: all numeric, 39.8-335.9 m². No missing values in readable rows. - No information-availability violations: both inputs are allowed.