Drag a gas room heater's coherent companions 🟩

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-06-30 18:08:51 +00:00
parent c2a842e9b9
commit ba258d6018

View file

@ -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