mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
The deduplicated `epc.roofs[]` list cannot be indexed 1:1 against the building parts (190/329 multi-part certs have len(roofs) != len(parts)), so every part's `u_roof` consumed a SINGLE join of all roof descriptions. That leaked one part's insulation state onto another: a "Flat, no insulation" extension dragged a "Pitched, insulated (assumed)" main roof to the uninsulated 2.30, ~3x over-stating its heat loss. 3-part certs systematically under-rated (56% within-0.5, mean -0.79 SAP). Partition the non-RR roof descriptions into flat vs pitched/sloping and match each part to its own kind (`_main_roof_descriptions_by_kind`), falling back to the global join when a part's kind has no matching entry. Corpus cert 100010129331: roof 110.5 -> 31.3 W/K, +13.10 -> -0.05 SAP. RdSAP-21.0.1 within-0.5 68.8% -> 69.5% (MAE 0.888 -> 0.859; PE 13.9 -> 13.6); 3-part cohort 56% -> 61%. Floors/ceilings ratcheted. Pinned in test_heat_transmission (by_kind split + mixed-roof no-contamination). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| chatgpt | ||
| epc_client | ||
| magic_plan | ||
| postgres | ||
| solar | ||
| __init__.py | ||
| conftest.py | ||
| test_address2uprn_queue_client.py | ||
| test_csv_s3_client.py | ||
| test_s3_client.py | ||
| test_s3_uri.py | ||
| test_sqs_client.py | ||