mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-19 08:53:17 +00:00
The API `floor_heat_loss` code is authoritative — confirmed by joining each single-BP cert's code to its independent `floors[].description` (which the gov register publishes alongside the code): code 1 ↔ "To external air" (exposed, 9/9) code 2 ↔ "To unheated space" (semi-exposed, 6/6) code 3 ↔ "(other premises below)" (partially htd, 9/9) code 6 ↔ "(another dwelling below)" (party, 176/176) code 7 ↔ "Solid"/"Suspended …" (ground, all) Code 3 was mis-mapped to "To unheated space" (semi-exposed) and, on mid-/top-floor flats, had its floor area zeroed entirely by the dwelling-level exposure heuristic. RdSAP 10 §3.12 (PDF p.25) classes a flat's floor over non-domestic "other premises … heated, but at different times" as "above a partially heated space" → the §5.14 (PDF p.47) constant U=0.7 W/m²K — distinct from semi-exposed (Table 20) and party (no loss). Fix: the mapper sets `is_above_partially_heated_space` on the floor=0 dimension for code 3 (string → "(other premises below)" for fidelity), and the heat-transmission step lets that per-BP lodgement override the flat suppression upward (mirroring the existing exposed / "another dwelling below" overrides). The cascade already routes is_above_partial → U=0.7. Re-pins golden cert 7536-3827: its Ext2 (bp3) lodges code 3, but the cert's lossy `floors[]` summary dropped that description, so a prior agent guessed "code 3 = ground" (U=1.12) and concluded the residual was an irreducible "register-rounding" artifact. It was this bug: Ext2 floor U 1.12 → 0.70, PE -6.1952 → -5.6414, CO2 -0.1639 → -0.1492 (both toward 0), SAP unchanged. Eval: 909 computed, 45.1% → 45.3% within 0.5, mean|err| 1.702 → 1.659, <1.0 59.5% → 60.2%. 13 code-3 certs improve (0380 +3.71 → -0.63, 0350 +7.82 → +0.83, 2610 +7.47 → -1.29); the few that overshoot were already failing and carry independent fabric bugs (9763's walls = 8 W/K for 60 m²). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| fixtures | ||
| __init__.py | ||
| _elmhurst_fixtures.py | ||
| _elmhurst_worksheet_000474.py | ||
| _elmhurst_worksheet_000477.py | ||
| _elmhurst_worksheet_000480.py | ||
| _elmhurst_worksheet_000487.py | ||
| _elmhurst_worksheet_000490.py | ||
| _elmhurst_worksheet_000516.py | ||
| _elmhurst_worksheet_000565.py | ||
| _elmhurst_worksheet_001431.py | ||
| _elmhurst_worksheet_001431_6035.py | ||
| _elmhurst_worksheet_001431_case5.py | ||
| _elmhurst_worksheet_001431_case6.py | ||
| _elmhurst_worksheet_001431_case7.py | ||
| _elmhurst_worksheet_001431_case20.py | ||
| _elmhurst_worksheet_001431_case21.py | ||
| _elmhurst_worksheet_001431_rr.py | ||
| _elmhurst_worksheet_001431_rr8.py | ||
| _xlsx_loader.py | ||
| test_appendix_h_solar.py | ||
| test_dimensions.py | ||
| test_e2e_elmhurst_sap_score.py | ||
| test_energy_requirements.py | ||
| test_fabric_energy_efficiency.py | ||
| test_fuel_cost.py | ||
| test_heat_transmission.py | ||
| test_internal_gains.py | ||
| test_mean_internal_temperature.py | ||
| test_mev.py | ||
| test_photovoltaic.py | ||
| test_rating.py | ||
| test_section_cascade_pins.py | ||
| test_solar_gains.py | ||
| test_space_cooling.py | ||
| test_space_heating.py | ||
| test_utilisation_factor.py | ||
| test_ventilation.py | ||
| test_water_heating.py | ||