From 1c3b4a7b72b8710cc15ca95173cc3c31c7c10008 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Wed, 17 Jun 2026 18:07:30 +0000 Subject: [PATCH] Correct ADR-0032 dec-4: property_type affects party-wall calc + eligibility, not just metadata Co-Authored-By: Claude Opus 4.8 (1M context) --- .../adr/0032-landlord-override-epc-overlay.md | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/docs/adr/0032-landlord-override-epc-overlay.md b/docs/adr/0032-landlord-override-epc-overlay.md index cfb7c3a5..ce5dfe4d 100644 --- a/docs/adr/0032-landlord-override-epc-overlay.md +++ b/docs/adr/0032-landlord-override-epc-overlay.md @@ -54,9 +54,28 @@ value is *material × insulation state*: material → `wall_construction` (codes and state → `wall_insulation_type` (1 external, 3 internal, 4 as-built, 7 filled), the code sets already documented in `solid_wall_recommendation.py`. The override's `building_part` maps directly to the overlay's `BuildingPartIdentifier` -(0 → MAIN, 1 → EXTENSION_1, …). `property_type` / `built_form_type` carry no SAP -weight at this layer (geometry is already explicit) — they overlay as metadata -only. +(0 → MAIN, 1 → EXTENSION_1, …). `RoofType` resolves only for the explicit +`"Pitched, N mm loft insulation"` family → `roof_insulation_thickness`; roofs +with no clean loft depth (flat, room-in-roof, "another premises above") produce +no overlay. + +`property_type` / `built_form_type` are **whole-dwelling** categorical +corrections, not building-part fabric, so they set the top-level +`EpcSimulation.property_type` / `built_form` (alongside the existing +whole-dwelling lighting/heating overlays), folded by `apply_simulations`. They +are written as the **landlord text value** ("House", "Park home", "Semi-Detached") +— `property_type` consumers tolerate text and the calculator's park-home check is +text-only. **Correction to the first draft of this decision:** `property_type` is +*not* metadata — it drives party-wall heat loss (`heat_transmission.py` +`_is_flat_or_maisonette`) and ASHP/solar/wall **eligibility**, so a correction +moves both the SAP score and the measure menu. `built_form` has no calculator +consumer today (it feeds the ML transform + reporting), so its overlay is +currently inert at the SAP layer but kept for picture-completeness. + +The `"(assumed) insulated"` / `"partial insulation (assumed)"` `WallType` states +are **deferred**: their `wall_insulation_type` is age-inferred in RdSAP, so the +code is ambiguous and must be pinned against the Elmhurst accuracy harness rather +than guessed. ### 5. An overlaid Property is excluded from the Validation Cohort — on divergence, not source path