mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
Roofs lodged insulated at rafters carry their thickness in a DEDICATED gov-EPC API field, `rafter_insulation_thickness` (e.g. "225mm"), while `roof_insulation_thickness` stays None (rafters aren't loft joists). That field was undeclared on the 21.0.x schemas, so `from_dict` silently dropped it — the rafter certs only *looked* redacted (roof EER 2-4 = insulated, yet no thickness), and the cascade fell to the Table 18 col (2) unknown default (2.30), badly under-rating them. - declare `rafter_insulation_thickness` on RdSapSchema21_0_0/21_0_1 + EpcPropertyData.SapBuildingPart (mirrors the existing sloping_ceiling_/flat_roof_insulation_thickness dropped-field handling). - thread it through `from_rdsap_schema_21_0_0/21_0_1` (older schemas get None via getattr). - `heat_transmission` prefers `rafter_insulation_thickness` over `roof_insulation_thickness` when the part is at-rafters, so the measured RdSAP 10 §5.11.2 Table 16 column (2) row applies (225 mm → 0.25). Completes the rafters roof fix: with the real thickness read, the rafter certs are recovered rather than over-stated — cert 3100-8675-0922-8628 (band E, rafters 225mm) +8.93 → +0.43 SAP. Corpus within-0.5 67.0% (MAE 1.025) and /tmp 71.2% (MAE 0.889) — both NET ABOVE the pre-rafters baseline (66.9% / 70.6%). Worksheet harness 47/47; regression = only the 3 pre-existing fails; pyright net-zero. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| applications | ||
| datatypes | ||
| domain | ||
| harness | ||
| infrastructure | ||
| magic_plan | ||
| orchestration | ||
| repositories | ||
| scripts | ||
| utilities | ||
| __init__.py | ||
| conftest.py | ||
| test_lambda_packaging.py | ||