Route main-heating overrides through the HHRSH guard before the LLM 🟩

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-07-01 14:32:14 +00:00
parent b7848848a5
commit 598aac1556

View file

@ -13,6 +13,7 @@ from domain.epc.property_overrides.glazing_type import GlazingType
from domain.epc.property_overrides.glazing_mix_guard import glazing_mix_guard
from domain.epc.property_overrides.main_fuel_type import MainFuelType
from domain.epc.property_overrides.main_heating_system_type import MainHeatingSystemType
from domain.epc.property_overrides.main_heating_guard import main_heating_guard
from domain.epc.property_overrides.property_type import PropertyType
from domain.epc.property_overrides.roof_type import RoofType
from domain.epc.property_overrides.roof_party_ceiling_guard import (
@ -184,8 +185,15 @@ def _build_columns(
"main_heating_system": lambda src: ClassifiableColumn(
name="main_heating_system",
source_column=src,
classifier=ChatGptColumnClassifier(
chat_gpt, MainHeatingSystemType, MainHeatingSystemType.UNKNOWN
# High heat retention storage heaters have no LLM target distinct from
# old storage, so they were funnelled into "Electric storage heaters,
# old" (401); the deterministic guard resolves HHRSH to its own
# archetype (SAP 409) and the LLM handles the rest (#1376, ADR-0044).
classifier=GuardedColumnClassifier(
guard=main_heating_guard,
fallback=ChatGptColumnClassifier(
chat_gpt, MainHeatingSystemType, MainHeatingSystemType.UNKNOWN
),
),
repo=LandlordOverridesRepository[MainHeatingSystemType](
session, LandlordMainHeatingSystemOverrideRow