mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
The schema-21 SapBuildingPart never declared `wall_insulation_thickness_ measured`, so `from_dict` silently discarded it. When a cert lodges `wall_insulation_thickness == "measured"` the actual value (mm) lives in that dropped field, so the cascade fell back to the 50 mm "insulation present, unknown thickness" default instead of the lodged measurement. Cert 2130 Ext1 lodges solid brick band B + INTERNAL insulation "measured"/100 mm. Per RdSAP 10 §5.7 Table 8 (insulated-wall U by age band + insulation thickness) the 100 mm row gives U=0.32; the unknown-thickness fallback gave 0.55. New `_api_resolve_wall_insulation_thickness` substitutes the measured value for the "measured" sentinel; the existing `_insulation_bucket`/Table-8 path then computes the correct U. Field added to schema 21.0.0/21.0.1 SapBuildingPart; domain field widened to Union[str, int] to match `roof_insulation_thickness`. Isolated: 2130 Ext1 is the only bp lodging "measured" across all 47 fixtures. This spec-correct fix EXPOSED an offsetting under-count it had been masking (per the repo's no-special-handling rule — the pre-fix +1 was two bugs cancelling): 2130 cont SAP 83.35 → 83.78 (resid +1 → +2), PE -7.56 → -11.72, CO2 -0.045 → -0.095. The exposed -11.72 PE (~-746 kWh/yr) is the deferred gas-combi-PE + PV-β-credit under-count from S0380.45/.49, now un-masked — the next slice. Re-pinned 2130 with the cause documented. Suite: 2391 passed, 1 skipped. Zero new pyright errors (mapper 32=32). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| applications | ||
| domain | ||
| infrastructure | ||
| orchestration | ||
| repositories | ||
| utilities | ||
| __init__.py | ||
| conftest.py | ||
| test_lambda_packaging.py | ||