From 07362b357a984810ce4395cc3339347e87faa8a8 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Fri, 3 Jul 2026 11:37:19 +0000 Subject: [PATCH] =?UTF-8?q?Electric=20underfloor=20override=20drags=20the?= =?UTF-8?q?=20conservative=20Group=207=20control=20(2701)=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- .../epc/property_overlays/main_heating_system_overlay.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/domain/epc/property_overlays/main_heating_system_overlay.py b/domain/epc/property_overlays/main_heating_system_overlay.py index 1110b1f68..f99a24f5c 100644 --- a/domain/epc/property_overlays/main_heating_system_overlay.py +++ b/domain/epc/property_overlays/main_heating_system_overlay.py @@ -140,6 +140,12 @@ _ELECTRIC_UNDERFLOOR_CODES = frozenset({421, 422, 424}) # generator's `is_heat_network_main` gate read as community heating: no heating # upgrade was offered at all and the baseline mis-rated 51 vs 67 (ADR-0050). _UNDERFLOOR_CATEGORY = 8 +# SAP Table 4e Group 7 underfloor control: 2701 ("no time or thermostatic +# control of room temperature", +0.3 C) is the conservative default when the +# landlord named only the system — the largest mean-internal-temperature +# adjustment in the group, so an unobserved control is never over-credited +# (the underfloor mirror of storage-manual 2401 and room-heater 2601, ADR-0050). +_UNDERFLOOR_CONTROL = 2701 # Heat pumps (SAP Table 4a 211-224 wet, 521-527 warm-air) are category 4 and # unambiguously electric (natural fuel 29). Modellable on the default code's SPF @@ -278,6 +284,8 @@ def _control_for(code: int) -> Optional[int]: return _FULL_BOILER_CONTROL if code in _CATEGORY_10_ROOM_HEATER_CODES or code in _ELECTRIC_ROOM_HEATER_CODES: return _ROOM_HEATER_CONTROL + if code in _ELECTRIC_UNDERFLOOR_CODES: + return _UNDERFLOOR_CONTROL return None