{
  "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.4467,
  "median_price_per_m2_valid": 2984.937,
  "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 and their fields cannot be read unambiguously (n_input_rows 1200 = control count; 1164 records were readable). Their implied price sum is 14917000 CAD; they were not reconstructed.",
  "data_issues": [
    {
      "issue": "36 data lines of sales.csv are corrupted (garbled characters, wrong field counts, sale_id not S+5 digits); file lines 701-736",
      "handling": "excluded from the analytic dataset; not reconstructed or imputed; counted as unreadable records"
    },
    {
      "issue": "25 records have price_cad exported as a quoted string with a comma thousands separator (e.g. \"280,000\")",
      "handling": "CSV quoting makes the value unambiguous; parsed as integer after removing the separator; records retained"
    },
    {
      "issue": "record count reconciliation: control 1200 vs 1164 valid; per-municipality deficits {'Gatineau': 11, 'Laval': 8, 'Sherbrooke': 7, 'Levis': 3, 'Longueuil': 7}",
      "handling": "reported; per-municipality deficits sum to 36; unreadable records' municipalities not inferred"
    },
    {
      "issue": "price-sum reconciliation: control 471287000 vs valid 456370000; implied unreadable sum 14917000",
      "handling": "reported as sum_price_unreadable_implied; not allocated to individual records"
    }
  ],
  "n_input_rows": {
    "sales.csv": 1200
  },
  "random_seed": null,
  "valid_by_municipality": {
    "Gatineau": 335,
    "Laval": 274,
    "Levis": 159,
    "Longueuil": 187,
    "Sherbrooke": 209
  },
  "control_minus_valid_by_municipality": {
    "Gatineau": 11,
    "Laval": 8,
    "Sherbrooke": 7,
    "Levis": 3,
    "Longueuil": 7
  }
}