From ba258d601818de31e3d0229f835ac38352d3730f Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Tue, 30 Jun 2026 18:08:51 +0000 Subject: [PATCH] =?UTF-8?q?Drag=20a=20gas=20room=20heater's=20coherent=20c?= =?UTF-8?q?ompanions=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 (1M context) --- .../main_heating_system_overlay.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/domain/epc/property_overlays/main_heating_system_overlay.py b/domain/epc/property_overlays/main_heating_system_overlay.py index aee3d3b40..89b62ea46 100644 --- a/domain/epc/property_overlays/main_heating_system_overlay.py +++ b/domain/epc/property_overlays/main_heating_system_overlay.py @@ -82,10 +82,17 @@ _SOLID_FUEL_ROOM_HEATER_CODES = frozenset(range(631, 637)) # control, natural fuel heating oil (RdSAP main_fuel 28). _OIL_ROOM_HEATER_CODES = frozenset(range(621, 626)) _OIL_FUEL = 28 -# Fuel-burning room heaters (solid + oil) share category 10 + the conservative -# room-heater control; only the natural fuel differs by family. (Distinct from -# `_ROOM_HEATER_CODES` above, which is the electric-room-heater dual-meter set.) -_CATEGORY_10_ROOM_HEATER_CODES = _SOLID_FUEL_ROOM_HEATER_CODES | _OIL_ROOM_HEATER_CODES +# Gas (incl. LPG) room heaters (SAP Table 4a 601-613) — category 10, conservative +# control, natural fuel mains gas (26); an LPG dwelling is refined by a main_fuel +# override (the overlay can't see the mains connection). +_GAS_ROOM_HEATER_CODES = frozenset(range(601, 614)) +# Fuel-burning room heaters (solid + oil + gas) share category 10 + the +# conservative room-heater control; only the natural fuel differs by family. +# (Distinct from `_ROOM_HEATER_CODES` above, the electric-room-heater dual-meter +# set.) +_CATEGORY_10_ROOM_HEATER_CODES = ( + _SOLID_FUEL_ROOM_HEATER_CODES | _OIL_ROOM_HEATER_CODES | _GAS_ROOM_HEATER_CODES +) # Natural-fuel coherence (ADR-0041): where an archetype unambiguously implies a # fuel, the overlay drags it so a system-only override is self-coherent on a cert @@ -226,6 +233,8 @@ def _natural_fuel_for(code: int) -> Optional[int]: return _HOUSE_COAL_FUEL if code in _OIL_ROOM_HEATER_CODES: return _OIL_FUEL + if code in _GAS_ROOM_HEATER_CODES: + return _MAINS_GAS_FUEL if code in _COMMUNITY_BOILER_CODES: return _COMMUNITY_GAS_FUEL return None