From ea4534f3af38f4d26d03f6de3febaa06419fc2d2 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Thu, 4 Jun 2026 18:26:08 +0000 Subject: [PATCH] feat(modelling): system-built walls take EWI+IWI (blocked on basement-code fix) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit System-built (precast/no-fines concrete) takes both solid-wall Options like solid brick (ADR-0019), keyed on `wall_construction == 6` (WALL_SYSTEM_BUILT, Elmhurst `SY`). A basement-suitability guard (`main_wall_is_basement`) is added since a below-ground basement wall is never EWI/IWI-suitable. This is currently inert: `B Basement wall` also maps to 6 (mapper.py:2100) and `main_wall_is_basement` is derived as `wall_construction == 6`, so every code-6 wall reads as basement and is guarded out — the live cohort is unchanged. The system-built EWI/IWI cascade pin is committed as a strict-xfail tripwire that flips green the moment the calculator disambiguates system-built from basement (MAIN wall_construction==6 with main_wall_is_basement False). `wall_construction == 8` is Park home, not system-built — not keyed. Co-Authored-By: Claude Opus 4.8 --- docs/adr/0019-wall-insulation-eligibility.md | 4 +- .../generators/solid_wall_recommendation.py | 14 +++++- .../system_built_ewi_001431_after.pdf | Bin 0 -> 65930 bytes .../system_built_ewi_001431_before.pdf | Bin 0 -> 66148 bytes .../system_built_iwi_001431_after.pdf | Bin 0 -> 66051 bytes .../system_built_iwi_001431_before.pdf | Bin 0 -> 66148 bytes .../modelling/test_elmhurst_cascade_pins.py | 41 ++++++++++++++++++ 7 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 tests/domain/modelling/fixtures/system_built_ewi_001431_after.pdf create mode 100644 tests/domain/modelling/fixtures/system_built_ewi_001431_before.pdf create mode 100644 tests/domain/modelling/fixtures/system_built_iwi_001431_after.pdf create mode 100644 tests/domain/modelling/fixtures/system_built_iwi_001431_before.pdf diff --git a/docs/adr/0019-wall-insulation-eligibility.md b/docs/adr/0019-wall-insulation-eligibility.md index 1b46f165..937ce79f 100644 --- a/docs/adr/0019-wall-insulation-eligibility.md +++ b/docs/adr/0019-wall-insulation-eligibility.md @@ -4,7 +4,9 @@ The solid-wall Recommendation Generator must decide, per Property, which wall-in ## Decision -**By construction** (keyed on the `wall_construction` code, which is consistent across the API and Elmhurst paths for codes 1-5; the wall *description* is empty on the Elmhurst ingestion path so it can't be the primary signal — it's a fallback for the ambiguous higher codes (system-built 6-vs-8, cob 7) and for refining the as-built trigger on the API path): +**By construction** (keyed on the `wall_construction` code, which is consistent across the API and Elmhurst paths for codes 1-5; the wall *description* is empty on the Elmhurst ingestion path so it can't be the primary signal — it's a fallback for the ambiguous codes (cob 7) and for refining the as-built trigger on the API path). + +**System-built** is keyed on `wall_construction == 6` (`WALL_SYSTEM_BUILT`; the Elmhurst `SY System build` label). This code is currently *overloaded*: `B Basement wall` also maps to 6 (`BASEMENT_WALL_CONSTRUCTION_CODE`, `mapper.py:2100`), so the generator additionally guards on `main_wall_is_basement` — a basement wall is never solid-wall-insulation-suitable and is excluded regardless of construction. Because `main_wall_is_basement` is presently derived as `wall_construction == 6`, *every* code-6 wall is treated as basement today, so the system-built branch is inert until the calculator disambiguates system-built from basement (target: MAIN `wall_construction == 6` with `main_wall_is_basement` False). The strict-xfail pin `test_system_built_generator_offers_ewi_and_iwi_each_pinning_its_after` is the tripwire for that fix. Note `wall_construction == 8` is **Park home** (`PH`) on the Elmhurst path, *not* system-built — do not key system-built on 8. | Construction | Cavity fill | IWI | EWI | |---|---|---|---| diff --git a/domain/modelling/generators/solid_wall_recommendation.py b/domain/modelling/generators/solid_wall_recommendation.py index 9da36bb1..9d4a67e0 100644 --- a/domain/modelling/generators/solid_wall_recommendation.py +++ b/domain/modelling/generators/solid_wall_recommendation.py @@ -34,6 +34,12 @@ _INTERNAL_MEASURE_TYPE: Final[str] = "internal_wall_insulation" # RdSAP `wall_construction` codes (consistent across paths for 1-5). _WALL_SOLID_BRICK: Final[int] = 3 _WALL_TIMBER_FRAME: Final[int] = 5 +# System-built (precast/no-fines concrete): `WALL_SYSTEM_BUILT` in +# rdsap_uvalues. NB this is the Elmhurst code (`SY`); the *basement-wall* signal +# also lodges as 6 today (`BASEMENT_WALL_CONSTRUCTION_CODE`), so system-built is +# disambiguated from basement by `main_wall_is_basement` below — a basement wall +# is never solid-wall-insulation-suitable regardless. +_WALL_SYSTEM_BUILT: Final[int] = 6 # `wall_insulation_type`: 4 = as-built / assumed (uninsulated) — the trigger. _WALL_AS_BUILT: Final[int] = 4 # `wall_insulation_type` the overlay lodges: 1 = external, 3 = internal. @@ -44,10 +50,11 @@ _WALL_INSULATION_INTERNAL: Final[int] = 3 _SOLID_WALL_INSULATION_MM: Final[int] = 100 # Which solid-wall Options each construction can take (ADR-0019). Solid brick -# takes both; timber-frame takes IWI only (EWI not constructable). System-built -# and the breathable cob/stone exclusions land in a later slice. +# and system-built take both; timber-frame takes IWI only (EWI not +# constructable). The breathable cob/stone exclusions take neither (never keyed). _CONSTRUCTABLE_OPTIONS: Final[dict[int, tuple[str, ...]]] = { _WALL_SOLID_BRICK: (_EXTERNAL_MEASURE_TYPE, _INTERNAL_MEASURE_TYPE), + _WALL_SYSTEM_BUILT: (_EXTERNAL_MEASURE_TYPE, _INTERNAL_MEASURE_TYPE), _WALL_TIMBER_FRAME: (_INTERNAL_MEASURE_TYPE,), } @@ -129,6 +136,9 @@ def recommend_solid_wall( if main.wall_insulation_type != _WALL_AS_BUILT: return None + if main.main_wall_is_basement: + return None # a (below-ground) basement wall is never EWI/IWI-suitable + construction: object = main.wall_construction if not isinstance(construction, int): return None # a free-text site-notes construction is not a code we key on diff --git a/tests/domain/modelling/fixtures/system_built_ewi_001431_after.pdf b/tests/domain/modelling/fixtures/system_built_ewi_001431_after.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1b76e03233218ad4876aa9210ac8d874b7d851f0 GIT binary patch literal 65930 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 Xu5M@-w?9r33`CXd?ar_X2EU literal 0 HcmV?d00001 diff --git a/tests/domain/modelling/fixtures/system_built_ewi_001431_before.pdf b/tests/domain/modelling/fixtures/system_built_ewi_001431_before.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0e4830b1f9cc55a6cab420196375977950c4695c GIT binary patch literal 66148 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 literal 0 HcmV?d00001 diff --git a/tests/domain/modelling/fixtures/system_built_iwi_001431_after.pdf b/tests/domain/modelling/fixtures/system_built_iwi_001431_after.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c943c608820a8462351b5dddcdd9d3e523fae35f GIT binary patch literal 66051 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 literal 0 HcmV?d00001 diff --git a/tests/domain/modelling/test_elmhurst_cascade_pins.py b/tests/domain/modelling/test_elmhurst_cascade_pins.py index 731e352d..97fccc84 100644 --- a/tests/domain/modelling/test_elmhurst_cascade_pins.py +++ b/tests/domain/modelling/test_elmhurst_cascade_pins.py @@ -17,6 +17,8 @@ from __future__ import annotations from dataclasses import replace from typing import Final +import pytest + from datatypes.epc.domain.epc_property_data import ( BuildingPartIdentifier, EpcPropertyData, @@ -173,6 +175,45 @@ def test_solid_brick_generator_offers_ewi_and_iwi_each_pinning_its_after() -> No ) +@pytest.mark.xfail( + strict=True, + reason="Blocked on the calculator-side wall_construction=6 collision: " + "Elmhurst 'SY System build' and 'B Basement wall' both map to 6 " + "(mapper.py:2100), so `main_wall_is_basement` is wrongly True for " + "system-built and the generator's basement guard suppresses it. Flips " + "green once system-built is disambiguated from basement (MAIN " + "wall_construction==6 with main_wall_is_basement False).", +) +def test_system_built_generator_offers_ewi_and_iwi_each_pinning_its_after() -> None: + # Arrange — system-built (precast concrete) takes both Options like solid + # brick (ADR-0019): one uninsulated before, two re-lodged afters. + before: EpcPropertyData = parse_recommendation_summary( + "system_built_ewi_001431_before.pdf" + ) + ewi_after: EpcPropertyData = parse_recommendation_summary( + "system_built_ewi_001431_after.pdf" + ) + iwi_after: EpcPropertyData = parse_recommendation_summary( + "system_built_iwi_001431_after.pdf" + ) + + # Act + recommendation: Recommendation | None = recommend_solid_wall(before, _AnyProduct()) + assert recommendation is not None + options: dict[str, MeasureOption] = { + option.measure_type: option for option in recommendation.options + } + + # Assert — both Options offered, each reproducing its own re-lodged after. + assert set(options) == {"external_wall_insulation", "internal_wall_insulation"} + _assert_overlay_reproduces_after( + before, ewi_after, options["external_wall_insulation"].overlay + ) + _assert_overlay_reproduces_after( + before, iwi_after, options["internal_wall_insulation"].overlay + ) + + def test_timber_frame_generator_offers_iwi_only_pinning_its_after() -> None: # Arrange — timber frame takes IWI but EWI is not constructable (ADR-0019). before: EpcPropertyData = parse_recommendation_summary(