mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
The gov API lodges a manufacturer's declared cylinder loss factor (kWh/day) in `sap_heating.cylinder_heat_loss`, in which case it leaves the cylinder volume / insulation type / thickness None. That field was undeclared on the 21.0.x schemas, so `from_dict` dropped it — then `_cylinder_storage_loss_override` hit its insulation-None / volume-None guards and returned None, dropping the §4 storage loss ENTIRELY. The dwelling over-rated (the declared loss is typically ~1.5 kWh/day ≈ 550 kWh/yr). SAP 10.2 §4 branch a) (PDF p.136): when the declared loss factor is known, storage loss (50) = (48) declared loss × (49) Table-2b temperature factor — replacing the Table 2 V×L×VF computation. - declare `cylinder_heat_loss` on RdSapSchema21_0_0/21_0_1.SapHeating + EpcPropertyData.SapHeating; thread through the 21.0.x mappers. - `cylinder_storage_loss_monthly_kwh` gains `declared_loss_kwh_per_day`: when set, combined_55 = declared × TF (volume/insulation unused). - `_cylinder_storage_loss_override` resolves the declared loss BEFORE the insulation/volume guards (the gov omits those when the loss is lodged). 12 /tmp certs carry it (mean |err| 3.00 -> 2.51; the clean ones close hard, e.g. 2360 2.65 -> 0.30, 0245 2.25 -> 0.53). Corpus within-0.5 67.0% -> 67.3% (MAE 1.025 -> 1.020); /tmp 71.2% -> 71.4% (0.889 -> 0.882). Worksheet harness 47/47; regression = only the 3 pre-existing fails; pyright net-zero. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| applications | ||
| datatypes | ||
| domain | ||
| harness | ||
| infrastructure | ||
| magic_plan | ||
| orchestration | ||
| repositories | ||
| scripts | ||
| utilities | ||
| __init__.py | ||
| conftest.py | ||
| test_lambda_packaging.py | ||