mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
A gov-API flat can lodge dwelling_type="Mid-floor flat" while carrying its own exposed roof — a top-floor flat mislabelled mid-floor. _dwelling_exposure keyed roof exposure on the dwelling_type label alone, dropping the roof heat-loss term: space-heating demand under-read ~32%, SAP over-read +7. Fix: when the main building part lodges a *determined* roof_insulation_location (an RdSAP integer code, not the "ND" Not-Defined party-ceiling sentinel), expose the roof regardless of a contradictory label. Structured field, not a description string and not roof_construction (which the gov-API lodges building-wide on every unit, so it is not a per-unit signal). On the RdSAP-21.0.1 corpus roof_insulation_location separates the classes with zero disagreement: all 190 party-ceiling flats lodge "ND"; the 4 mid/ground flats this exposes all move toward lodged, 0 away. within-0.5 73.3% -> 73.6%, MAE 0.774 -> 0.761 (ratchets tightened). Verified end-to-end on the same block: 715363 (location 6, RHI 2694) 81 -> 74 = lodged; genuine mid-floor sibling 715395 (location ND, RHI 1024) stays party at 83 = lodged. The override is additive (only ever exposes a label-dropped roof) and reads the main part, so multi-part flats with a party main ceiling stay party. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| climate | ||
| rdsap | ||
| validation | ||
| worksheet | ||
| __init__.py | ||
| test_bre_worked_examples.py | ||
| test_calculator.py | ||
| test_pcdb_etl.py | ||
| test_pcdb_lookup.py | ||
| test_pcdb_table_322_lookup.py | ||
| test_pcdb_table_323_lookup.py | ||
| test_pcdb_table_329_lookup.py | ||
| test_pcdb_table_362_lookup.py | ||
| test_postcode_weather.py | ||
| test_real_cert_sap_accuracy.py | ||
| test_table_12.py | ||
| test_table_12a.py | ||
| test_table_13.py | ||
| test_table_32.py | ||