From 6eb2a02a6e910bfa45a8fdbaa2325c511bf8eeca Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Wed, 1 Jul 2026 14:18:52 +0000 Subject: [PATCH] =?UTF-8?q?Gate=20community-heated=20dwellings=20from=20AS?= =?UTF-8?q?HP=20recommendation=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- domain/modelling/generators/heating_recommendation.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/domain/modelling/generators/heating_recommendation.py b/domain/modelling/generators/heating_recommendation.py index 452f63914..3af1108b3 100644 --- a/domain/modelling/generators/heating_recommendation.py +++ b/domain/modelling/generators/heating_recommendation.py @@ -670,10 +670,14 @@ def _ashp_eligible(epc: EpcPropertyData, restrictions: PlanningRestrictions) -> installability — the Optimiser owns the economics (ADR-0024), so floor area, built form, fuel, and fabric are deliberately not gates. A conservation area does not exclude ASHP (offered with a planning caveat); a listed/heritage - protection (`blocks_internal`) does.""" + protection (`blocks_internal`) does. Community heating (SAP Table 4a codes + 301–304 or category 6) is excluded by topology: replacing a shared heat + network with an individual ASHP is never appropriate.""" main: MainHeatingDetail = epc.sap_heating.main_heating_details[0] if main.main_heating_category == _HEAT_PUMP_CATEGORY: return False + if is_heat_network_main(main): + return False if restrictions.blocks_internal: return False return _is_house_or_bungalow(epc)