{
  "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 export lines (file lines 701-736) are corrupted and cannot be read unambiguously (sale ids S00700-S00735 missing); they were not reconstructed. Their implied price sum is 14917000 CAD.",
  "data_issues": [
    {
      "issue": "36 data lines are corrupted/garbled (file lines 701-736): no valid sale_id or field structure. Sale ids S00700-S00735 (36 ids) are absent from the readable records.",
      "handling": "Excluded from the analytic dataset; not reconstructed or imputed. Counted as unreadable records; their price sum is only implied by the control total."
    },
    {
      "issue": "25 records have price_cad exported as a quoted string with comma thousands separator (e.g. \"280,000\").",
      "handling": "Kept: under standard CSV quoting the field is unambiguous; separator removed and value converted to integer CAD."
    },
    {
      "issue": "Readable record counts by municipality fall short of the control n_by_municipality (control minus readable): {'Gatineau': 11, 'Laval': 8, 'Sherbrooke': 7, 'Levis': 3, 'Longueuil': 7}.",
      "handling": "Reported only; the shortfall sums to the number of unreadable records. Municipality of unreadable records is implied by control totals, not observed."
    }
  ],
  "n_input_rows": {
    "sales.csv": 1200
  },
  "random_seed": null,
  "implied_mean_price_unreadable": 414361.111111,
  "n_price_thousands_separator": 25,
  "n_valid_if_thousands_sep_excluded": 1139,
  "control_mean_price_all_records": 392739.166667,
  "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
  }
}