mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
Cert 2102 lodges `secondary_heating_type=631` ("Open fire in grate"
per SAP 10.2 Appendix M Table 4a, BS EN 13229:2001 inset-appliance
class — solid fuel) but `secondary_fuel_type=33` (electricity, Table 32
off-peak 7hr) — physically incompatible (an open fire grate doesn't
run on electricity). The Elmhurst Summary path independently resolves
to Coal (Table 32 code 11) via the §15 "Secondary Fuel: Coal" lodgement
(see `test_summary_2102_secondary_heating_routes_house_coal_for_open_fire`).
API mapper now applies the same spec-derived default via the new
`_api_secondary_fuel_type` helper:
- When `secondary_heating_type` is in the
`_API_SECONDARY_HEATING_SPEC_FUEL` dispatch (currently {631: 11}),
AND the lodged `secondary_fuel_type` is electric (codes 30-40),
substitute the spec default (House coal).
- Legitimate non-default solid-fuel lodgement (e.g. SAP 631 with
lodged fuel_type=15 Wood logs) passes through unchanged.
The override is keyed on the heating-type → spec-fuel dispatch dict
(extend as new fixtures surface analogous inconsistencies), not a
blanket per-code rewrite — keeps the lodged data trusted by default
while spec-correcting the narrow class of inconsistent lodgements.
Applied at all 6 API schema-version mapping sites in `from_api_response`
via replace_all (lines 637/767/922/1080/1278/1544). Worksheet target
for cert 2102: line (242) "Space heating - secondary 3585.24 × 3.6700
= 131.58" confirms 3.67 p/kWh = Table 32 fuel code 11 (House coal).
Test impact:
- Cohort-2 cert 2102 API path: -6.30 → +4.9e-5 (<1e-4 ✓).
Moves from `_COHORT_2_API_OPEN` to `_COHORT_2_API_CLOSED`.
- `_COHORT_2_API_OPEN` is now empty — the residual-pin test
`test_api_cohort_2_open_cert_residual_matches_current_pin` is
deleted (cohort fully closed; re-add if future cert surfaces).
- Cohort-2 API path: **38/38 < 1e-4** matching Summary path 38/38.
Cross-mapper parity at the cascade is fully established for
cohort-2 per [[feedback-cross-mapper-parity-via-cascade]].
- Cohort-1 ASHP 9/9 unchanged.
Test suite: 750 pass + 0 fail. Pyright net-zero on touched files
(mapper.py 32/32 baseline; chain test 0/0).
Spec citations:
- SAP 10.2 Appendix M Table 4a code 631 "Open fire in grate"
(Category C, Room heaters, eff 37/32%, solid fuel via BS EN
13229:2001 inset-appliance class — see spec p.156).
- SAP 10.2 Table 32 code 11 "House coal" 3.67 p/kWh.
- Cert 2102 worksheet line (242) reproduces 131.58 = 35.84 × 3.67
confirming house-coal pricing for the secondary cascade.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| epc | ||
| magicplan | ||
| __init__.py | ||
| datatypes.py | ||
| enums.py | ||