mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
The Elmhurst Summary lodges only the secondary heating SAP code (Table 4a Category 10), never its fuel. `_elmhurst_secondary_fuel_from_sap_code` mapped the gas block (601-613 → mains gas) and solid block (631-634 → house coal) to their modal defaults, but returned None for any OTHER Category-10 code — and None makes the cascade SILENTLY bill the secondary as electricity (13.19 p/kWh). For a fuel-fired heater (e.g. 621-625 liquid-fuel oil/bioethanol) that is a large, invisible mis-price. Per the UnmappedElmhurstLabel strict-raise pattern (mirrors the wall_type / glazing label raises), a fuel-fired Category-10 code (601-699) outside the mapped gas/solid blocks now RAISES instead of guessing. Electric room heaters (691-699) keep returning None — electricity IS their fuel. The gas block 601-613 still resolves to the modal default mains gas: the Summary cannot distinguish mains gas from LPG/biogas, so an LPG or biogas live-effect fire (worksheet "simulated case 37" used biogas at 7.60 p/kWh vs our 3.48 p/kWh mains-gas default, a +7 SAP gap) is not recoverable from the Summary export — that is a data-availability limit, not a guess we can fix here. This commit closes the genuinely-silent-wrong path; the gas sub-fuel remains the documented modal default. Worksheet harness 47/47, 0 raised. 3 AAA tests, pyright net-zero, regression clean, corpus gauge unchanged (Elmhurst-path only; the API path lodges the secondary fuel explicitly). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| epc | ||
| __init__.py | ||
| datatypes.py | ||
| enums.py | ||