# Data audit (P1) | file | SHA-256 | size | |---|---|---| | data/sales.csv | 0a53f5e851e31130083cfc70aafd2e2a644eadbc734d6928782d6d6cb60caf53 | 1201 lines (1 header + 1200 data lines) | | data/metadata.json | 2aefdcfaf936c7a301d4fa32aa05cb04bff46ad2fd34c423a358e423ec47ac8f | control totals | ## sales.csv - Header: sale_id, municipality, sale_date, price_cad, area_m2 (5 columns). No CR line endings. - Field counts per data line (csv module): 5 fields: 1164; other: 36 (1 field:16, 6:5, 8:1, 9:3, 10:1, 11:7, 12:3). - The 36 bad lines are contiguous (file lines 701–736) and contain random symbols (e.g. `S733x,y 6x,;||@,y,,`). Sale IDs S00700–S00735 are absent from the readable records → these are the corrupted records. They cannot be read unambiguously → excluded, not reconstructed. - 25 readable records have price_cad as a quoted string with comma thousands separators ("280,000"). Under CSV quoting this is unambiguous → parsed as integer, kept. - Readable records: 1164, sale_id unique (no duplicates), all match S+5 digits; municipalities ∈ {Gatineau 335, Laval 274, Sherbrooke 209, Longueuil 187, Levis 159}; dates valid ISO 2021-01-01 … 2022-12-31; price 92,000–1,363,000 CAD; area 39.8–335.9 m²; no empty fields. - Units: CAD and m² (metadata note). ## metadata.json - n_records 1200, sum_price_cad 471,287,000, n_by_municipality {Gatineau 346, Laval 282, Sherbrooke 216, Levis 162, Longueuil 194} (sums to 1200). - Per-municipality gaps (control − readable): 11, 8, 7, 3, 7 = 36, consistent with the 36 corrupted lines. ## Information availability No input violates the rules. Only data/ files are used. Corrupted lines are excluded (no imputation). → feasibility "partial".