{
  "task_id": "F1-conf-04",
  "n_records_control": 1200,
  "n_valid_records": 1164,
  "n_unreadable_records": 36,
  "n_analysed": 1164,
  "sum_price_control": 471287000,
  "sum_price_valid": 456370000,
  "sum_price_unreadable_implied": 14917000,
  "mean_price_valid": 392070.446735,
  "median_price_per_m2_valid": 2984.93695,
  "feasibility": "partial",
  "feasibility_reason": "36 of the 1200 records in the provider's control count could not be analysed: 36 data lines of sales.csv are corrupted (garbled characters, wrong field counts) and cannot be read unambiguously, so they were excluded and not reconstructed; the implied price sum of these records is 14917000 CAD.",
  "data_issues": [
    {
      "issue": "36 data lines of sales.csv (file lines 701-736) are garbled/corrupted and cannot be parsed ({'wrong field count (1)': 16, 'wrong field count (10)': 1, 'wrong field count (11)': 7, 'wrong field count (12)': 3, 'wrong field count (6)': 5, 'wrong field count (8)': 1, 'wrong field count (9)': 3}); 36 sale_ids (S00700-S00735) are absent from the readable records",
      "handling": "excluded from the analytic dataset (exclusion step 1); not reconstructed or imputed; their count and implied price sum are reported via n_unreadable_records and sum_price_unreadable_implied"
    },
    {
      "issue": "25 records have price_cad written as a quoted string with comma thousands separators (e.g. \"280,000\") instead of a plain integer",
      "handling": "the quoted field is unambiguous under CSV quoting; parsed as integer after removing the separators and kept in the analytic dataset"
    },
    {
      "issue": "record count and price sum do not reconcile with the control totals: 36 records and 14917000 CAD missing; per-municipality count gaps {'Gatineau': 11, 'Laval': 8, 'Sherbrooke': 7, 'Levis': 3, 'Longueuil': 7}",
      "handling": "gap reported, not imputed; the per-municipality gaps sum to 36, equal to the number of corrupted lines (36)"
    }
  ],
  "n_input_rows": {
    "sales.csv": 1200
  },
  "random_seed": null,
  "n_parse_failures": 36,
  "n_price_thousands_separator": 25,
  "n_duplicate_ids": 0,
  "n_by_municipality_valid": {
    "Gatineau": 335,
    "Laval": 274,
    "Levis": 159,
    "Longueuil": 187,
    "Sherbrooke": 209
  },
  "n_by_municipality_gap": {
    "Gatineau": 11,
    "Laval": 8,
    "Sherbrooke": 7,
    "Levis": 3,
    "Longueuil": 7
  },
  "missing_sale_ids_range": [
    "S00700",
    "S00735"
  ],
  "n_missing_sale_ids": 36,
  "mean_price_unreadable_implied": 414361.111111,
  "price_min_valid": 92000,
  "price_max_valid": 1363000,
  "date_min_valid": "2021-01-01",
  "date_max_valid": "2022-12-31"
}