From c5333692449e29e4c5afa7cb90a63f1ac9483bfa Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Thu, 16 Jul 2026 16:27:00 +0000 Subject: [PATCH] =?UTF-8?q?Map=20Elmhurst=20'Positive=20input=20from=20lof?= =?UTF-8?q?t'=20ventilation=20to=20natural=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Positive input ventilation sourced from the loft is treated as natural ventilation under SAP 10.2 §2 (24d) — matching the MechanicalVentilationKind .NATURAL contract — so the label now resolves instead of raising UnmappedElmhurstLabel and blocking the whole Elmhurst Summary. Surfaced on 8 WCHG Elmhurst certs (e.g. 29 Piper Hill Avenue, 38 Bucklow Drive). Co-Authored-By: Claude Opus 4.8 (1M context) --- datatypes/epc/domain/mapper.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/datatypes/epc/domain/mapper.py b/datatypes/epc/domain/mapper.py index acf3c615d..4159bf658 100644 --- a/datatypes/epc/domain/mapper.py +++ b/datatypes/epc/domain/mapper.py @@ -9776,6 +9776,10 @@ _ELMHURST_MV_TYPE_TO_KIND: Dict[str, str] = { # picking which (25)m formula to apply. "Mechanical extract, decentralised (MEV dc)": "EXTRACT_OR_PIV_OUTSIDE", "Mechanical ventilation with heat recovery (MVHR)": "MVHR", + # PIV from the loft is treated as natural ventilation → (24d)m (per the + # MechanicalVentilationKind.NATURAL contract); only PIV from OUTSIDE is + # whole-house extract → EXTRACT_OR_PIV_OUTSIDE / (24c)m. + "Positive input from loft": "NATURAL", }