Correct ADR-0032 dec-4: property_type affects party-wall calc + eligibility, not just metadata

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jun-te Kim 2026-06-17 18:07:30 +00:00
parent 4219ef9d8b
commit 1c3b4a7b72

View file

@ -54,9 +54,28 @@ value is *material × insulation state*: material → `wall_construction` (codes
and state → `wall_insulation_type` (1 external, 3 internal, 4 as-built, 7 filled),
the code sets already documented in `solid_wall_recommendation.py`. The override's
`building_part` maps directly to the overlay's `BuildingPartIdentifier`
(0 → MAIN, 1 → EXTENSION_1, …). `property_type` / `built_form_type` carry no SAP
weight at this layer (geometry is already explicit) — they overlay as metadata
only.
(0 → MAIN, 1 → EXTENSION_1, …). `RoofType` resolves only for the explicit
`"Pitched, N mm loft insulation"` family → `roof_insulation_thickness`; roofs
with no clean loft depth (flat, room-in-roof, "another premises above") produce
no overlay.
`property_type` / `built_form_type` are **whole-dwelling** categorical
corrections, not building-part fabric, so they set the top-level
`EpcSimulation.property_type` / `built_form` (alongside the existing
whole-dwelling lighting/heating overlays), folded by `apply_simulations`. They
are written as the **landlord text value** ("House", "Park home", "Semi-Detached")
`property_type` consumers tolerate text and the calculator's park-home check is
text-only. **Correction to the first draft of this decision:** `property_type` is
*not* metadata — it drives party-wall heat loss (`heat_transmission.py`
`_is_flat_or_maisonette`) and ASHP/solar/wall **eligibility**, so a correction
moves both the SAP score and the measure menu. `built_form` has no calculator
consumer today (it feeds the ML transform + reporting), so its overlay is
currently inert at the SAP layer but kept for picture-completeness.
The `"(assumed) insulated"` / `"partial insulation (assumed)"` `WallType` states
are **deferred**: their `wall_insulation_type` is age-inferred in RdSAP, so the
code is ambiguous and must be pinned against the Elmhurst accuracy harness rather
than guessed.
### 5. An overlaid Property is excluded from the Validation Cohort — on divergence, not source path