diff --git a/datatypes/epc/domain/mapper.py b/datatypes/epc/domain/mapper.py index b992254a..cce444ab 100644 --- a/datatypes/epc/domain/mapper.py +++ b/datatypes/epc/domain/mapper.py @@ -4116,14 +4116,14 @@ def _is_elmhurst_roof_window( _ELMHURST_BP_ROOF_TYPES_WITH_ROOFLIGHTS ): return True - # A window lodged on a wall is vertical by definition. The U-value - # backstop below only catches skylights whose location/BP gives no - # roof signal; without this guard a high-U *wall* window (e.g. an old - # "Double pre 2002" unit at U 3.1 / 3.4) is mis-routed to the roof- - # window list on U-value alone — cert 001431 §11 lodges two such - # External-wall windows that must remain vertical `sap_windows`. - if "wall" in (w.location or "").lower(): - return False + # U > 3.0 backstop — Elmhurst routes high-U "Double pre 2002" units + # through the worksheet's (27a) Roof Windows line regardless of the + # lodged "External wall" location, which is a §11 lodging artifact + # (cert 000516's W6 is lodged "External wall" yet scored via (27a)). + # The location string is therefore NOT a reliable vertical signal: + # all six of 000516's §11 rows read "External wall", and only U + # separates the five vertical (2.8) panes from the one rooflight + # (3.1). Matching the worksheet means trusting U here, not location. return w.u_value > _ELMHURST_ROOF_WINDOW_U_THRESHOLD