mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
For multi-BP dwellings the dwelling-level `exposure.has_exposed_roof`
flag (derived from `dwelling_type` via `_dwelling_exposure`) zeroed
out ALL BPs' roof contributions uniformly. That's wrong when a flat
has an extension with its own external roof — e.g. ground-floor flat
with a single-storey extension whose flat roof is exposed.
Replace the global suppression with a per-BP signal:
- Per-BP `roof_construction_type` containing "another dwelling
above" → that BP's roof is party → suppress.
- Otherwise BP 0 (Main) falls back to the dwelling-level flag
(covers flat lodgements that don't explicitly mark the Main
roof type).
- Extensions (i > 0) expose their roof by default unless their
own roof_construction_type lodges as party.
Cohort cert 0036-6325-1100-0063-1226 (ground-floor flat, age D):
- Main lodges roof_construction_type = "Another dwelling above"
→ contributes 0 W/K (matches worksheet line (30) "External roof
Main 57.93 m² × U=0 = 0.0").
- Ext1 lodges roof_construction_type = "Flat" → contributes
1.09 m² × U=2.30 = 2.507 W/K (matches worksheet "External roof
Ext1 1.09 m² × U=2.30 = 2.507", spec line (30)).
- Cascade SAP closes from +0.2987 → -6e-6 vs worksheet 62.7471.
Houses + bungalows are unaffected: dwelling-level flag stays True
and the per-BP guard only activates on explicit party-roof lodgement.
Single-BP flat tests stay correct: the per-BP guard is a no-op when
no roof_construction_type is lodged (i==0 → falls back to dwelling-
level flag).
Spec citation:
- RdSAP 10 §3 / §5.11 — heat-loss surfaces and party-roof
treatment. SAP 10.2 spec line (30) sums external roofs only;
party roofs sit in the (32) party-element channel with U=0.
Cohort-2 distribution (38 certs, Summary path) shifts:
exact (<1e-4): 19 → **20** (+1: 0036)
0.07..0.5: 2 → **1** (-1: 0036 → exact)
Pyright net-zero (heat_transmission.py 13→13, test file 71→71).
Test counts: 702 → 703 pass (+1 new test), 10 expected fails unchanged.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| addresses | ||
| data_transformation | ||
| epc | ||
| sap10_calculator | ||
| sap10_ml | ||
| tasks | ||
| postcode.py | ||