From 01cacc579ab38cbd8ca0178d3b3a1bc20036b2e2 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Thu, 16 Jul 2026 16:07:36 +0000 Subject: [PATCH] =?UTF-8?q?Rate=20unthermostated=20room=20heaters=20via=20?= =?UTF-8?q?Table=204e=20Group=206=20code=202601=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #1624: Wythenshawe 149→151 computed. 500767954156 lands within 0.5; 500797465814 is a −8.8 tail entry — MAE ceiling re-baselined 0.67→0.72 per the coverage-growth convention (within-0.5 floor 0.76 holds). Co-Authored-By: Claude Fable 5 --- .../tests/test_pashub_sap_accuracy_wythenshawe.py | 7 ++++++- datatypes/epc/domain/mapper.py | 5 ++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/backend/documents_parser/tests/test_pashub_sap_accuracy_wythenshawe.py b/backend/documents_parser/tests/test_pashub_sap_accuracy_wythenshawe.py index eef150c8a..f070a04cb 100644 --- a/backend/documents_parser/tests/test_pashub_sap_accuracy_wythenshawe.py +++ b/backend/documents_parser/tests/test_pashub_sap_accuracy_wythenshawe.py @@ -46,8 +46,13 @@ _MANIFEST_PATH = _FIXTURES_DIR / "manifest.json" # headroom; treat them as a regression tripwire, NOT a cohort accuracy figure, # and re-baseline (coverage growth is not loosening) as further mapper fixes # unblock fixtures. +# 2026-07-16 (#1622/#1624): room-heater control 2601 unblocked the two 'No +# thermostatic control...' fixtures → **151 computed / 17 blocked** (within-0.5 +# 76.2% = 115/151, MAE 0.716; 500767954156 lands within 0.5, 500797465814 is a +# −8.8 tail entry). MAE ceiling re-baselined 0.67 → 0.72 per the +# coverage-growth convention above. _MIN_WITHIN_HALF: float = 0.76 -_MAX_SAP_MAE: float = 0.67 +_MAX_SAP_MAE: float = 0.72 _KNOWN_GAP_REASON = ( "pashub `from_site_notes` mapper does not int-code a main-heating " diff --git a/datatypes/epc/domain/mapper.py b/datatypes/epc/domain/mapper.py index 139f31bd3..78d11ac71 100644 --- a/datatypes/epc/domain/mapper.py +++ b/datatypes/epc/domain/mapper.py @@ -8037,8 +8037,11 @@ _PASHUB_STORAGE_HEATER_CONTROL_TO_SAP10: Dict[str, int] = { # PasHub surveyed room-heater control labels → their SAP 10.2 Table 4e Group 6 # code (spec PDF p.173). PasHub lodges the singular "Programmer and room # thermostat"; Table 4e's Group 6 wording is the plural "Programmer and room -# thermostats" (2605) — same control. +# thermostats" (2605) — same control. 2601 is the lowest-control (manual / +# no-thermostat) Group 6 code: control type 2, +0.3 °C MIT adjustment (PCDB +# `room_heater_systems_controls`), one step below 2602. _PASHUB_ROOM_HEATER_CONTROL_TO_SAP10: Dict[str, int] = { + "No thermostatic control of room temperature": 2601, "Appliance thermostats": 2602, "Programmer and room thermostat": 2605, }