# Contract (P0) — F1-conf-04 **Question.** Summarise a (synthetic) municipal property-sales export and reconcile it to the provider's control totals. **Estimands.** (1) number of records readable unambiguously (n_valid_records = n_analysed); (2) sum and (3) mean of price_cad over them; (4) median price_cad/area_m2 over them; (5) reconciliation: n_records_control − n_valid = n_unreadable; sum_price_control − sum_price_valid = implied sum of unreadable records. Meaningful under the assumption that the control totals describe the same full table before export, and that readable records were not altered by export (beyond formatting). **Outputs.** out/results.json (task_id, n_records_control, n_valid_records, n_unreadable_records, n_analysed, sum_price_control, sum_price_valid, sum_price_unreadable_implied, mean_price_valid, median_price_per_m2_valid, feasibility, feasibility_reason, data_issues, n_input_rows{"sales.csv"}, random_seed); out/analytic.csv (sale_id, municipality, sale_date, price_cad numeric, area_m2; n_analysed rows); out/exclusions.csv (step, rule, n_before, n_after, n_removed, rationale; chained); out/report.md (6 sections); out/analysis.py; out/claims.json. **Information rules.** Only data/ files. No reconstruction/imputation/guessing of unreadable records. feasibility = "complete" only if all control records are analysed; otherwise "partial" with exact count and reason. **Invalidity conditions.** Imputing unreadable rows; counting ambiguous rows; inconsistent counts (n_valid + n_unreadable ≠ n_control); non-deterministic script.