From 71b970a697409d6741104939d335db77f1a29219 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Fri, 3 Jul 2026 13:24:10 +0000 Subject: [PATCH] Map API roof_construction code 9 ("another premises above") to None MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same party-ceiling semantics as the already-mapped code 7 ("another dwelling above" / "same dwelling above") — the unit has no exposed roof, so there's nothing for the cascade to compute a U-value for. Confirmed against the live cert (uprn 10013320122): roofs[].description = "(another premises above)", roof_insulation_location = "ND" (the codebase's established "no exposed roof" signal). Surfaced by 1 failed modelling_e2e subtask on portfolio 817 (task_source='modelling_e2e', job_completed > '2026-07-03 12:50:37.555+01:00'). --- datatypes/epc/domain/mapper.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/datatypes/epc/domain/mapper.py b/datatypes/epc/domain/mapper.py index 80a650515..6c12b6e55 100644 --- a/datatypes/epc/domain/mapper.py +++ b/datatypes/epc/domain/mapper.py @@ -4445,6 +4445,9 @@ _API_ROOF_CONSTRUCTION_TO_STR: Dict[int, Optional[str]] = { 6: None, 7: None, 8: "Pitched, sloping ceiling", + # "(another premises above)" per a live cert (uprn 10013320122) — same + # party-ceiling semantics as code 7, just "premises" not "dwelling". + 9: None, }