[
 {"id": "C1", "text": "1164 of the 1200 control records can be analysed; 36 cannot.", "results_keys": ["n_records_control", "n_valid_records", "n_unreadable_records", "n_analysed"], "status": "supported", "caveat": "Readability judged by explicit parse rules in analysis.py."},
 {"id": "C2", "text": "The 36 unreadable records are a contiguous block of garbled export lines (sale_id positions S00700-S00735) and were excluded without reconstruction.", "results_keys": ["data_issues", "feasibility_reason"], "status": "supported", "caveat": "IDs inferred from the gap in sequential sale_ids."},
 {"id": "C3", "text": "Price sum over analysed records is 456,370,000 CAD versus control 471,287,000 CAD, implying 14,917,000 CAD in the unreadable records.", "results_keys": ["sum_price_valid", "sum_price_control", "sum_price_unreadable_implied"], "status": "supported", "caveat": "Implied sum assumes the control total is correct."},
 {"id": "C4", "text": "Mean price over analysed records is 392,070.45 CAD and median price per square metre is 2,984.94 CAD/m2.", "results_keys": ["mean_price_valid", "median_price_per_m2_valid"], "status": "supported", "caveat": "Over the 1164 readable records only."},
 {"id": "C5", "text": "The per-municipality shortfall versus control counts sums to the 36 unreadable records.", "results_keys": ["n_by_municipality_shortfall", "n_unreadable_records"], "status": "supported", "caveat": ""},
 {"id": "C6", "text": "25 prices with quoted thousands separators were parsed unambiguously and retained.", "results_keys": ["n_price_thousands_separator", "data_issues"], "status": "supported", "caveat": "Judgement call on readability."},
 {"id": "C7", "text": "Feasibility is partial.", "results_keys": ["feasibility", "feasibility_reason"], "status": "supported", "caveat": ""}
]
