From f83f8f43cde2507165c4a8963064e86b345fa4a3 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Fri, 24 Jul 2026 09:20:07 +0000 Subject: [PATCH] =?UTF-8?q?Resolve=20the=20boiler=20archetype=20by=20fuel?= =?UTF-8?q?=20when=20building=20a=20property's=20overlays=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) --- repositories/property/landlord_override_overlays.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/repositories/property/landlord_override_overlays.py b/repositories/property/landlord_override_overlays.py index e987f7b26..21d9a8c1a 100644 --- a/repositories/property/landlord_override_overlays.py +++ b/repositories/property/landlord_override_overlays.py @@ -90,7 +90,15 @@ def overlays_from(overrides: ResolvedPropertyOverrides) -> list[EpcSimulation]: mapper = _COMPONENT_OVERLAYS.get(row.override_component) if mapper is None: continue - overlay = mapper(row.override_value, row.building_part) + value = row.override_value + if row.override_component == "main_heating_system": + # A fuel-agnostic gas-boiler archetype re-points to the oil / solid-fuel + # member matching this property's `main_fuel`, so an oil/solid boiler + # scores its own code — not the gas default the LLM assigned (ADR-0067). + value = resolve_boiler_archetype( + value, _override_value(overrides, "main_fuel") + ) + overlay = mapper(value, row.building_part) if overlay is not None: overlays.append(overlay) return overlays