mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
Closes cert 000565 hot_water_kwh_per_yr pin: **3517.37 → 3755.03 ✓
EXACT** vs worksheet 3755.0288. Net cumulative HW closure across
S0380.77/78/79/80: +1399 kWh → 0 (100% closed).
## Spec rule
SAP 10.2 Table 4c (PDF p.169-170) "Efficiency adjustments":
(2) Efficiency adjustment due to control system Space DHW
No boiler interlock - regular boiler (...) −5 −5
No boiler interlock - combi −5 0
Note c): "These do not accumulate as no thermostatic control or
presence of a bypass means that there is no boiler interlock."
RdSAP 10 §3 (PDF p.57) "Boiler interlock" definition:
Assumed present if there is a room thermostat and (for stored
hot water systems heated by the boiler) a cylinder thermostat.
Otherwise not interlocked.
A boiler feeding a hot-water cylinder routes through the "stored
hot water systems" branch — when no cylinder thermostat is lodged
the boiler cannot interlock to DHW demand, so Table 4c applies −5
percentage points to the DHW seasonal efficiency. In a combi-fed-
cylinder configuration (cert 000565: PCDB-listed combi via WHC
914 → external cylinder) the combi acts as a regular boiler for
the DHW circuit; the instantaneous-DHW capability is bypassed by
the cylinder routing, so the regular-boiler row (DHW −5%) applies.
## Fix
`cert_to_inputs.py` water-efficiency branch: after the PCDB-summer
lookup (or Table 4b fall-through), apply −5pp when
epc.has_hot_water_cylinder
AND epc.sap_heating.cylinder_thermostat != "Y"
AND water_pcdb_main is not None # boiler — Table 4c applies
For cert 000565: PCDB summer η = 79.0 → 74.0; output (64)/η =
2778.72/0.74 = 3754.99 vs worksheet 3755.03 — within 0.04 kWh.
## Cert 000565 movements at HEAD (post-S0380.79 → post-this slice)
| Field | Pre-slice | Post-slice | Worksheet | Pre-Δ | Post-Δ |
|----------------------|-----------:|-----------:|-----------:|--------:|--------:|
| sap_score | 29 | 28 | 29 | 0 | −1 |
| sap_score_continuous | 28.5652 | 28.4680 | 28.5087 | +0.057 | −0.041 |
| ecf | 5.3810 | 5.3910 | 5.3866 | −0.006 | +0.004 |
| total_fuel_cost_gbp | 4675.23 | 4683.88 | 4680.26 | −5.03 | +3.62 |
| co2_kg | 6388.80 | 6438.71 | 6447.63 | −58.83 | −8.92 |
| **hot_water_kwh** | 3517.37 | **3755.03** | 3755.03 | −237.66 | **✓ 0** |
| space_heating_kwh | 58936.06 | 58936.06 | 59008.35 | −72.29 | −72.29 |
| main_heating_fuel | 34668.27 | 34668.27 | 34710.79 | −42.52 | −42.52 |
The sap_score=28 flip is the documented gas-tariff residual: cascade
prices mains gas at SAP 10.2 Table 12 = £0.0364/kWh, worksheet uses
RdSAP Table 32 = £0.0348/kWh. Over the now-correct 3755.03 HW kWh
that £0.16/100 delta inflates cost by ~£6 — exactly accounts for the
+£3.62 cost residual and the +0.041 continuous SAP deviation. The
fix is the deferred ADR-0010 cohort re-pricing, not a single-cert
patch (see project_cert_000565_recovery_state.md "Open thread #6").
## Cumulative cert 000565 closure across S0380.77/78/79/80
hot_water_kwh: +1399 → +260 → −238 → **✓ 0** (100% closed)
sap_score_continuous: +0.60 → −0.035 → +0.057 → −0.041 (93% closed)
ecf: −0.06 → +0.004 → −0.006 → +0.004 (93% closed)
total_fuel_cost_gbp: −53 → +3.13 → −5.03 → +3.62 (93% closed)
(45)m, (46)m, (57)m, (59)m, (62)m, **(64)/(217)m, (219)**: ALL EXACT vs worksheet
Test baseline: 550 → 551 pass + 9 expected `test_sap_result_pin
[000565-*]` fails — hot_water_kwh now PASSING; sap_score now failing
in the same expected-fail count. Pyright net-zero (45 = 45).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| addresses | ||
| sap10_calculator | ||
| sap10_ml | ||
| tasks | ||
| postcode.py | ||