Model/datatypes/epc
Khalim Conn-Kowlessar aa6645e3f1 Slice 97: API glazing_type=2 → RdSAP 10 Table 24 (DG 2002-2021)
Cert 0330 API path was at Δ +1.68 SAP after Slice 96 because all 11
windows (`sap_windows[*].glazing_type = 2`) fell through
`_API_GLAZING_TYPE_TO_TRANSMISSION` (which only covered codes 3 +
13) to the cascade's `u_window` default (~U=2.5). The cert's actual
glazing is "Double, England/Wales 2002 or later (before 2022)" per
RdSAP 10 Table 24 page 79 → U=2.0, g=0.72 (PVC/wooden frame).

RdSAP 10 Table 24 verbatim:
  Glazing       Installed                       Gap       U-value   g
  Double or     England/Wales: 2002 or later                2.0    0.72
  triple        Scotland: 2003 or later         any
  glazed        N. Ireland: 2006 or later

The cascade's curtain-transform path (`U_eff = 1/(1/U + 0.04)`)
takes U_raw=2.0 to U_eff=1.8519 — matching the worksheet's per-
window (27) U value column to 4 d.p. across all 11 windows.

Effect on cert 0330 API path:
- Windows HLC 36.4545 → 29.7407 (= worksheet exact)
- (37) total fabric heat loss 244.48 → 237.77 (≈ worksheet 237.75)
- SAP Δ +1.68 → +2.12 (windows fix unmasks the standalone HW gap,
  which the next slice closes)

Re-pinned residuals (5 affected golden certs):
- 0240: PE +17.85 → +15.69; CO2 +1.01 → +0.90; SAP unchanged at -15
- 0300: PE +7.76 → +7.52; CO2 -0.25 → -0.27; SAP unchanged at +0
- 0390-2954: PE -26.46 → -28.68; CO2 -2.56 → -2.76; SAP unchanged
- 7536: SAP +0 → +1; PE -3.45 → -6.51; CO2 -0.09 → -0.17
- 8135: PE -2.41 → -5.31; CO2 -0.02 → -0.07; SAP unchanged at +0

The PE/CO2 widening on some certs (vs lodged GOV.UK values) reflects
the cascade now using the spec table U=2.0 where those certs may have
lodged a higher project-specific U — the spec-table is the right
floor for the API path; per-window measured U overrides would belong
on the cert's window_transmission_details.u_value field, which the
API JSON doesn't surface uniformly.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 18:22:04 +00:00
..
domain Slice 97: API glazing_type=2 → RdSAP 10 Table 24 (DG 2002-2021) 2026-05-26 18:22:04 +00:00
loaders demo generated for use in address2uprn 2026-05-08 14:48:15 +00:00
schema Slice 44: flat_roof_insulation_thickness mapper fix — surface lodged value on SapBuildingPart 2026-05-24 15:28:10 +00:00
search bolstering testing 2026-04-28 13:46:09 +00:00
surveys Slice 53: Summary_000487 chain pins SAP at 1e-4 — last cohort cert closed 2026-05-24 21:42:42 +00:00
__init__.py testing out rebaselining 2026-02-12 22:25:03 +00:00
construction_age_band.py testing out rebaselining 2026-02-12 22:25:03 +00:00
efficiency.py beginning to assembly the parity class 2026-02-04 18:34:59 +00:00
floor.py preparing partiy class 2026-02-05 08:54:27 +00:00
fuel.py beginning to assembly the parity class 2026-02-04 18:34:59 +00:00
heating_controls.py beginning to assembly the parity class 2026-02-04 18:34:59 +00:00
hotwater.py beginning to assembly the parity class 2026-02-04 18:34:59 +00:00
main_heating.py beginning to assembly the parity class 2026-02-04 18:34:59 +00:00
property_type_built_form.py beginning to assembly the parity class 2026-02-04 18:34:59 +00:00
roof.py beginning to assembly the parity class 2026-02-04 18:34:59 +00:00
walls.py beginning to assembly the parity class 2026-02-04 18:34:59 +00:00
windows.py testing out rebaselining 2026-02-12 22:25:03 +00:00