# Data audit (P1) | file | sha256 | notes | |---|---|---| | data/sales.csv | 0a53f5e851e31130083cfc70aafd2e2a644eadbc734d6928782d6d6cb60caf53 | 1201 lines = header + 1200 data lines; 5 intended columns | | data/metadata.json | 2aefdcfaf936c7a301d4fa32aa05cb04bff46ad2fd34c423a358e423ec47ac8f | n_records=1200, sum_price_cad=471287000, n_by_municipality (5 municipalities) | Findings for sales.csv (CSV-parsed with Python csv module): - 1164 lines parse to exactly 5 fields with a valid `S\d{5}` id, valid ISO date, integer price, positive numeric area. - 36 lines (file lines 701-736) are garbage (random characters, wrong field counts, ids not matching S+5 digits). Their content cannot be read. The id sequence of valid rows has a gap S00700–S00735 (36 ids), consistent with these lines, but ids are not reconstructed. - 25 valid rows have price written as a quoted string with thousands separator (e.g. "280,000"); CSV quoting makes these unambiguous; parsed as integers. - No duplicate sale_id among valid rows; dates 2021-01-01..2022-12-31; price 92,000..1,363,000 CAD; area 39.8..335.9 m²; no missing values among valid rows. - Valid counts by municipality: Gatineau 335, Laval 274, Sherbrooke 209, Longueuil 187, Levis 159 (control 346/282/216/194/162; deficits sum to 36). - No input violates information-availability rules. Units per metadata: CAD, m².