diff --git a/domain/epc/property_overlays/main_heating_system_overlay.py b/domain/epc/property_overlays/main_heating_system_overlay.py index 6d25d979c..243326cfd 100644 --- a/domain/epc/property_overlays/main_heating_system_overlay.py +++ b/domain/epc/property_overlays/main_heating_system_overlay.py @@ -185,14 +185,18 @@ _CONSERVATIVE_HEAT_PUMP_CONTROL = 2201 _HEAT_NETWORK_CATEGORY = 6 _HEAT_NETWORK_CODES = frozenset({301, 302, 303, 304}) _COMMUNITY_BOILER_CODES = frozenset({301, 302, 303}) -# SAP Table 4e Group 3 heat-network control: 2301 ("flat rate charging, no -# thermostatic control of room temperature") is the conservative default when -# the landlord named only the scheme. It is never-over-crediting on BOTH axes -# the control drives: the largest Group 3 temperature adjustment (+0.3 C, tied -# with 2302) and the worst Table 4c(3) charging factors (space 1.10, DHW 1.05 -# — an unobserved charging arrangement is never assumed usage-linked). The -# community mirror of storage 2401 / boiler 2101 / heat-pump 2201 (ADR-0053). -_CONSERVATIVE_HEAT_NETWORK_CONTROL = 2301 +# SAP Table 4e Group 3 heat-network control: 2313 ("flat rate charging, room +# thermostat and TRVs") is the default when the landlord named only the scheme +# — a per-axis choice (ADR-0053, decided with Khalim). KIT axis: community +# schemes skew modern and the portfolio's lodged community certs are +# overwhelmingly thermostatted (modal 2306; none lodge 2301), so a room +# thermostat + TRVs is the evidence-backed assumption (temperature adjustment +# 0.0). CHARGING axis: flat rate (Table 4c(3) space 1.05 / DHW 1.05) — the +# billing arrangement is scheme paperwork an override cannot see, so the +# usage-linked credit (1.0/1.0) is never assumed. An assessor-OBSERVED Group 3 +# control on the cert is kept in preference to this default (the overlay sets +# `keep_existing_heat_network_control`; the applicator honours it). +_DEFAULT_HEAT_NETWORK_CONTROL = 2313 _COMMUNITY_GAS_FUEL = 20 # SAP Table 4c full boiler-control code: programmer + room thermostat + TRVs. The @@ -324,7 +328,7 @@ def _control_for(code: int) -> Optional[int]: if code in _WET_HEAT_PUMP_CODES: return _CONSERVATIVE_HEAT_PUMP_CONTROL if code in _HEAT_NETWORK_CODES: - return _CONSERVATIVE_HEAT_NETWORK_CONTROL + return _DEFAULT_HEAT_NETWORK_CONTROL return None