diff --git a/repositories/property/landlord_override_overlays.py b/repositories/property/landlord_override_overlays.py index b8e9199d..3eff5213 100644 --- a/repositories/property/landlord_override_overlays.py +++ b/repositories/property/landlord_override_overlays.py @@ -3,9 +3,22 @@ The boundary between the faithful `property_overrides` read model (`ResolvedPropertyOverrides`, value-space) and the domain overlay surface (`EpcSimulation`). Lives in `repositories/` because it consumes a repository -type — `domain/` never imports `repositories/`. Per-component and partial: an -override produces an overlay only where a component mapping exists and resolves -(the tracer covers `wall_type`); everything else is left to the lodged EPC. +type — `domain/` never imports `repositories/`. + +Per-component and partial — an override produces an overlay only where a +component mapping exists and the value resolves; anything else is left to the +lodged EPC. All four `override_component`s are mapped: + +* `wall_type` → fabric overlay (`wall_construction` + `wall_insulation_type`) +* `roof_type` → fabric overlay (`roof_insulation_thickness`, loft-depth family) +* `property_type` / `built_form_type` → whole-dwelling categorical correction + +Two value families deliberately resolve to *no* overlay rather than a guess: the +`"(assumed) insulated"` / `"partial insulation (assumed)"` wall states (RdSAP +infers their U-value from the build-era age band, so there is no single +`wall_insulation_type` code for them — they need Elmhurst validation, ADR-0032), +and `"Unknown"` categorical values. Roofs with no clean loft depth (flat, +room-in-roof, "another premises above") likewise produce no overlay. """ from __future__ import annotations