mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
Don't offer a like-for-like gas boiler swap to a dwelling whose existing gas boiler is already at least as efficient as the new condensing boiler (SAP 10.2 Table 4b codes 102/104 = 84% winter) — it gains nothing, and the dwelling gets the tune-up (cylinder + controls) instead. `_already_condensing` compares the existing code's Table 4b winter efficiency to 84%; a non-Table-4b code (solid fuel) has no comparable efficiency and is never treated as already-condensing. The gate is GAS-ONLY: a non-gas boiler → gas is a fuel switch whose value (cost / carbon) is not captured by winter efficiency, so oil/LPG/coal → gas is never suppressed on efficiency grounds (only gated on the mains-gas connection). This correctly demotes the gas-with-cylinder example (cert lodges code 114 "Regular, condensing", 84% winter) to a tune-up case — confirming that 114→102 is ~0 boiler-efficiency gain in both our calc and Elmhurst (both Table 4b 84%); Elmhurst's uplift there came from the cylinder + flue, not the boiler. The boiler-with-cylinder overlay stays validated by the lpg pin (code 115, non- condensing + cylinder) and by recasting the 114 fixtures' code to a pre-1998 non-condensing boiler (110) in the boiler tests — the overlay overwrites the code to 102 regardless, so only eligibility changes, not the delta-0 result. New tests: an already-condensing gas boiler yields no boiler upgrade (but a tune-up); an oil condensing boiler is not gated (the fuel switch survives). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| fixtures | ||
| __init__.py | ||
| _elmhurst_recommendation.py | ||
| test_ashp_cost_inputs.py | ||
| test_considered_measures.py | ||
| test_elmhurst_cascade_pins.py | ||
| test_floor_recommendation.py | ||
| test_glazing_recommendation.py | ||
| test_heating_cost_inputs.py | ||
| test_heating_recommendation.py | ||
| test_lighting_recommendation.py | ||
| test_measure_dependency.py | ||
| test_measure_type.py | ||
| test_optimiser.py | ||
| test_overlay_applicator.py | ||
| test_package_scorer.py | ||
| test_plan.py | ||
| test_plan_valuation.py | ||
| test_products.py | ||
| test_roof_recommendation.py | ||
| test_scoring.py | ||
| test_solar_config_selection.py | ||
| test_solar_overshading.py | ||
| test_solar_potential.py | ||
| test_solar_products.py | ||
| test_solar_recommendation.py | ||
| test_valuation.py | ||
| test_ventilation_recommendation.py | ||
| test_wall_recommendation.py | ||
| test_window_extraction_001431.py | ||