Model/domain
Khalim Conn-Kowlessar 396907f46a Slice S0380.32: route bare \"Extension\" window location to BP[1] per RdSAP10 §3 — closes cert 9380 +0.027 residual
RdSAP10 §3 p.17:
    "When specifying windows and doors, for each building part
     assessor allocates windows and doors to the corresponding
     wall (the appropriate main wall or each alternative wall).
     For each building part, software will deduct window/door
     areas contained in the relevant wall areas."

SAP 10.2 §3 p.16:
    "Wall area is the net area of walls after subtracting the
     area of windows and doors."

Cert 9380's Summary PDF lodges 2 windows on its single extension,
but pdftotext wraps "1st" onto a preceding layout line while
"Extension" lands on a separate line — the Elmhurst extractor
captures only the second token. `_window_bp_index` previously
matched "main" / "1st"-"4th" prefixes but fell through bare
"Extension" to BP[0] (main), causing the cascade to deduct ext1
windows from the main wall:
    Worksheet (29a): main 60.60 × 0.70 + ext1 18.25 × 0.53 = 52.0925
    Pre-fix cascade: main 59.01 × 0.70 + ext1 19.84 × 0.53 = 51.8222
                     Δ -0.27 W/K → SAP +0.027

This slice adds bare "extension" (when num_parts >= 2) as a sibling
to the ordinal-prefix matches. Closes cert 9380 +0.027 → -4.8e-6.

Cohort-2 distribution after S0380.31 + S0380.32:
    34 exact + 4 ≤0.07 (was 33 exact + 5 ≤0.07).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 14:59:37 +00:00
..
addresses get rid of comments 2026-05-20 13:21:11 +00:00
sap10_calculator Slice S0380.32: route bare \"Extension\" window location to BP[1] per RdSAP10 §3 — closes cert 9380 +0.027 residual 2026-05-28 14:59:37 +00:00
sap10_ml Slice S0380.26: RdSAP10 §5.8 dry-lining adjustment on alt walls — closes cert 7700 -0.44 → +5e-5 2026-05-28 10:56:11 +00:00
tasks added postcode splitter rewrite to ddd 2026-05-19 16:35:09 +00:00
postcode.py get rid of comments 2026-05-20 13:21:11 +00:00