From 57e899e8d913491a4bf8a3c49dcaf78047278c9f Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Fri, 3 Jul 2026 11:36:30 +0000 Subject: [PATCH] =?UTF-8?q?Electric=20underfloor=20override=20stamps=20the?= =?UTF-8?q?=20Table=204a=20underfloor=20category=20(8)=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 | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/domain/epc/property_overlays/main_heating_system_overlay.py b/domain/epc/property_overlays/main_heating_system_overlay.py index d0c498320..1110b1f68 100644 --- a/domain/epc/property_overlays/main_heating_system_overlay.py +++ b/domain/epc/property_overlays/main_heating_system_overlay.py @@ -134,6 +134,13 @@ _ELECTRIC_BOILER_CODES = frozenset({191, 192}) # unambiguously electric (ADR-0046). _ELECTRIC_UNDERFLOOR_CODES = frozenset({421, 422, 424}) +# SAP Table 4a "electric underfloor heating" category. Stamped so an underfloor +# override never leaves the replaced system's category behind — property 711795 +# (PRD #1435 WS2) kept a replaced heat network's category 6, which the heating +# 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 + # 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 # without a PCDB index (ADR-0041). @@ -287,6 +294,8 @@ def _category_for(code: int) -> Optional[int]: return _ROOM_HEATER_CATEGORY if code in _STORAGE_HEATER_CODES: return _STORAGE_HEATER_CATEGORY + if code in _ELECTRIC_UNDERFLOOR_CODES: + return _UNDERFLOOR_CATEGORY if code in _HEAT_PUMP_CODES: return _HEAT_PUMP_CATEGORY if code in _HEAT_NETWORK_CODES: