{
  "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.4467353952,
  "median_price_per_m2_valid": 2984.9369502623304,
  "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, corresponding to sale_ids S00700-S00735) are corrupted/garbled and cannot be read unambiguously. Their implied price sum is 14917000 CAD (control minus analysable).",
  "data_issues": [
    {
      "issue": "36 data lines (file lines 701-736) are garbled/corrupted and cannot be parsed into the 5 intended fields; sale_ids absent from the analytic data: S00700..S00735 (36 ids)",
      "handling": "excluded; not reconstructed or imputed; their implied count and price sum are derived from the control totals"
    },
    {
      "issue": "25 records have price_cad written with a thousands separator inside CSV quotes (e.g. \"280,000\")",
      "handling": "quoted field is unambiguous under standard CSV quoting; comma removed and value parsed as integer CAD; records kept"
    },
    {
      "issue": "record count reconciliation: control 1200 vs 1164 analysable (gap 36); municipality gaps {'Gatineau': 11, 'Laval': 8, 'Sherbrooke': 7, 'Levis': 3, 'Longueuil': 7}",
      "handling": "reported as partial feasibility; gap equals number of unreadable lines"
    },
    {
      "issue": "price sum reconciliation: control 471287000 vs analysable 456370000; implied unreadable sum 14917000",
      "handling": "reported; cannot be verified record-by-record because the corresponding lines are unreadable"
    }
  ],
  "n_input_rows": {
    "sales.csv": 1200
  },
  "random_seed": 20261030,
  "se_mean_price_valid": 5281.530621588574,
  "ci95_mean_price_valid": [
    381718.64671708154,
    402422.2467537088
  ],
  "ci95_median_price_per_m2_valid_bootstrap": [
    2937.407799175488,
    3028.572088115024
  ],
  "implied_mean_price_unreadable": 414361.1111111111,
  "n_by_municipality_valid": {
    "Gatineau": 335,
    "Laval": 274,
    "Sherbrooke": 209,
    "Longueuil": 187,
    "Levis": 159
  },
  "n_by_municipality_gap": {
    "Gatineau": 11,
    "Laval": 8,
    "Sherbrooke": 7,
    "Levis": 3,
    "Longueuil": 7
  }
}