diff --git a/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_001431_case6.py b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_001431_case6.py index 0ef2714e..71f19cbf 100644 --- a/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_001431_case6.py +++ b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_001431_case6.py @@ -23,14 +23,24 @@ This cert surfaced two site-notes gaps fixed in S0380.199: already-inclined "Double between 2002 and 2021" → 2.30 (so the inclination adjustment isn't double-applied). -SCOPE: this fixture pins only the §3 heat-transmission WINDOW line refs -(27)/(27a)/(31) — NOT the full SapResult. Case 6 has a DUAL main heating -system (51% radiators + 49% underfloor, oil), and `SapResult`'s -`main_heating_fuel_kwh_per_yr` / `pumps_fans_kwh_per_yr` aggregate the -two systems differently from the worksheet's per-system (211)/(231) -lines, so a full SapResult pin isn't apples-to-apples. Heating is also -SAP code 127 here vs 0240's code 130 condensing combi — so case 6 pins -to its OWN worksheet, not 0240's register. +SCOPE: promoted to a FULL SapResult e2e fixture (S0380.207) once the dual +main heating system was fully modelled. Case 6 has Main 1 radiators (51%, +control 2106) + Main 2 underfloor (49%, control 2110) heating different +parts. Closing every line ref took: Table 4f note c) two circulation +pumps (231) S0380.201; Table 5a note a) two pump gains (70) S0380.202; +RdSAP §3.7 "Roof of Room" rooflights → §3.10.1 RR residual (30) S0380.203; +SAP 10.2 p.186 two-systems-different-parts MIT — weighted responsiveness +0.8775 + elsewhere two-control blend — (87)/(90)/(98c) S0380.205 (with +the Main 2 emitter/control extractor fix S0380.204); and Eq D1 per-boiler +(204) space share (219) S0380.206. SapResult pins (Block 1 energy rating) +live in `test_e2e_elmhurst_sap_score.py::_FIXTURE_PINS["001431_case6"]`; +`main_heating_fuel_kwh_per_yr` is the (211)+(213) two-system sum. Heating +is SAP code 127 (vs 0240's 130 condensing combi) — case 6 pins to its OWN +worksheet, the spec authority for this dual-oil archetype. + +The §3 window line refs (27)/(27a)/(31), the roof (30), the pumps (231), +the pump gains (70), the per-system fuel (211)/(213), and HW (219) also +have dedicated section pins in `test_section_cascade_pins.py`. Source: user-simulated PDFs at `sap worksheets/golden fixture debugging/simulated case 6/`. Summary mirrored into the tracked diff --git a/tests/domain/sap10_calculator/worksheet/test_e2e_elmhurst_sap_score.py b/tests/domain/sap10_calculator/worksheet/test_e2e_elmhurst_sap_score.py index 1dbee580..93df288e 100644 --- a/tests/domain/sap10_calculator/worksheet/test_e2e_elmhurst_sap_score.py +++ b/tests/domain/sap10_calculator/worksheet/test_e2e_elmhurst_sap_score.py @@ -42,6 +42,7 @@ from tests.domain.sap10_calculator.worksheet import ( _elmhurst_worksheet_001431_rr8 as _w001431_rr8, _elmhurst_worksheet_001431_6035 as _w001431_6035, _elmhurst_worksheet_001431_case5 as _w001431_case5, + _elmhurst_worksheet_001431_case6 as _w001431_case6, ) from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ( ALL_FIXTURES as _ELMHURST_FIXTURES, @@ -237,6 +238,27 @@ _FIXTURE_PINS: Final[dict[str, FixtureCascadePins]] = { lighting_kwh_per_yr=381.4601, pumps_fans_kwh_per_yr=141.0, ), + # Mapper-driven cohort entry — Summary_001431_case6.pdf → extractor → + # mapper → calculator. DETACHED dual-oil cousin of case 5: Main 1 + # radiators (control 2106) + Main 2 underfloor (control 2110) heating + # DIFFERENT parts (51% / 49%), 6 "Roof of Room" rooflights, no boiler + # interlock (cyl stat No → −5pp on Main 1). Promoted to a full + # SapResult fixture once S0380.201-206 closed every line ref: Table 4f + # note c) two-pump electricity (231), Table 5a note a) two-pump gain + # (70), §3.7 rooflight→RR-residual (30), SAP 10.2 p.186 two-systems- + # different-parts MIT (87)/(90)/(98c), and Eq D1 per-boiler (204) + # space share (219). Pins are worksheet Block 1 (energy rating) line + # refs; main_heating_fuel_kwh_per_yr is the (211)+(213) two-system sum. + "001431_case6": FixtureCascadePins( + sap_score=72, sap_score_continuous=71.6597, ecf=2.0316, + total_fuel_cost_gbp=1162.5374, co2_kg_per_yr=5953.6679, + space_heating_kwh_per_yr=11991.9611, + main_heating_fuel_kwh_per_yr=14736.9564, + secondary_heating_fuel_kwh_per_yr=0.0, + hot_water_kwh_per_yr=4902.8601, + lighting_kwh_per_yr=357.6571, + pumps_fans_kwh_per_yr=356.0, + ), } @@ -253,6 +275,7 @@ _FIXTURE_MODULES: Final[dict[str, ModuleType]] = { "001431_rr8": _w001431_rr8, "001431_6035": _w001431_6035, "001431_case5": _w001431_case5, + "001431_case6": _w001431_case6, }