Data audit (P1)
| file | sha256 | notes |
|---|---|---|
| data/sales.csv | 0a53f5e851e31130083cfc70aafd2e2a644eadbc734d6928782d6d6cb60caf53 | 1201 lines incl. header, LF endings, trailing newline; 1200 data lines; 5 columns intended |
| data/metadata.json | 2aefdcfaf936c7a301d4fa32aa05cb04bff46ad2fd34c423a358e423ec47ac8f | n_records=1200, sum_price_cad=471287000, n_by_municipality (sums to 1200) |
Hashes match bundle.json.
Schema / anomalies (sales.csv)
- 1139 lines match the strict pattern
S\d{5},Name,YYYY-MM-DD,int,float. - 25 lines have price written as a quoted string with comma thousands separator (e.g.
"280,000"). Under RFC-4180 quoting these parse to exactly 5 fields and the value is unambiguous (all prices are multiples of 1000). Decision: keep, convert by removing the separator. - 36 lines (file lines 701–736) are corrupted/garbled (random symbols, wrong field counts, no valid sale_id). Sale IDs S00700–S00735 are absent from the readable records, consistent with these 36 lines being those records. Decision: exclude; do not reconstruct (information rule).
- Readable records: 1164; no duplicate sale_id; no missing values; all dates valid in 2021-01-01..2022-12-31; price 92,000..1,363,000 CAD; area 39.8..335.9 m²; price/m² 1,321..6,923. No implausible values.
- Municipalities (readable): Gatineau 335, Laval 274, Sherbrooke 209, Longueuil 187, Levis 159; shortfall vs control 11/8/7/7/3 = 36.
- Units: CAD and m² per metadata note.
- No input violates the information-availability rules.