mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-27 23:35:01 +00:00
RdSAP 10 item 2-3(h) "another dwelling above" is U=0 (spec p.45: "There is no heat loss through the roof of a building part that has the same dwelling above or another dwelling above"). gov-API `roof_construction = 3` is that code, but the mapper labelled it "Pitched (slates/tiles), no access to loft" (which is code 5), so the per-part party override at heat_transmission.py:1172 never matched and the part fell through to the dwelling_type-label-only has_exposed_roof heuristic. 190 of the 200 corpus code-3 parts sit at index 0 and are already suppressed by `_cert_lodges_exposed_roof` off the roof_insulation_location == "ND" signal. The unmitigated set is the 10 parts at index > 0, where extensions default to exposed and were billed a phantom pitched roof. Also removes a latent PV defect: the bogus "Pitched" prefix satisfied `is_pitched` and divided PV array area by cos(35 deg), inflating kWp. Shipped with the stairwell fix so the corpus pin moves once: within-0.5 78.8% -> 79.6%, SAP MAE 0.626 -> 0.611, PE MAE 2.9 -> 2.7. The roof change alone trades 4 certs out of the +-0.5 band for 2 in (one moving 4.4 SAP closer). Those 4 were investigated and are NOT a masked bug: the corpus error distribution is symmetric (mean +0.076, median +0.03, sigma 1.606; 112 certs above +0.5 vs 102 below), ground-floor flats show 7 positive / 8 negative with no excess over the null, and closing them needs HLC changes of 2.3-5.6% — below the ~8.8% noise floor of the RHI anchor, calibrated on the 76 certs whose SAP is exact (space-heating ratio 1.062 +/- 0.088). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| domain | ||
| __init__.py | ||