Model/tests/domain/sap10_calculator/worksheet
Khalim Conn-Kowlessar 24492aa4ba Merge origin/main into feature/bill-derivation (calculator + mapper fixes)
Pulls in 42 commits of calculator/mapper accuracy fixes from the per-cert
mapper-validation and floor/roof/heating fronts.

Conflict resolutions:
- mapper `_is_elmhurst_roof_window`: main dropped the branch's "wall location →
  vertical" guard (it broke cert 000516's rooflight), but that re-broke cert
  001431's two External-wall U>3.0 windows (which must stay vertical). The two
  certs lodge a BYTE-IDENTICAL §11 row, so neither location nor U separates
  them — the real discriminator is the room-in-roof context. Replaced the
  unconditional U>3.0 backstop with one gated on the BP having a room-in-roof
  (`_elmhurst_bp_has_room_in_roof`): 000516's Main BP has a "Room in roof type
  1" (→ rooflight), 001431's does not (→ vertical). Validated against BOTH —
  full Elmhurst worksheet suite 1038 pass + the 001431 window-extraction pin.
- property_postgres_repository: kept main's `ids_by_uprn` method + the branch's
  `_restrictions_of` helper.
- sap_fuel.py: the branch relocated it to domain/billing/ (already carrying
  main's to_table_32_code normalization), so kept the old path deleted.

Fallout from main's fabric fixes (validated by the boiler-3 real-cert pin which
still reproduces at delta 0):
- re-pinned the boiler-1 + boiler-instant-hw ASHP snapshot scores;
- main's §14.2 gas-boiler main-fuel derivation resolved the BGB/102 baseline
  gap, so `test_gas_boiler_instant_hw_before_baselines` is now a passing test
  (was an xfail tripwire).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 13:12:21 +00:00
..
fixtures Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
__init__.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
_elmhurst_fixtures.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
_elmhurst_worksheet_000474.py Merge remote-tracking branch 'origin/main' into feature/bill-derivation 2026-06-05 11:09:00 +00:00
_elmhurst_worksheet_000477.py Merge remote-tracking branch 'origin/main' into feature/bill-derivation 2026-06-05 11:09:00 +00:00
_elmhurst_worksheet_000480.py Merge remote-tracking branch 'origin/main' into feature/bill-derivation 2026-06-05 11:09:00 +00:00
_elmhurst_worksheet_000487.py Merge remote-tracking branch 'origin/main' into feature/bill-derivation 2026-06-05 11:09:00 +00:00
_elmhurst_worksheet_000490.py Merge remote-tracking branch 'origin/main' into feature/bill-derivation 2026-06-05 11:09:00 +00:00
_elmhurst_worksheet_000516.py Merge remote-tracking branch 'origin/main' into feature/bill-derivation 2026-06-05 11:09:00 +00:00
_elmhurst_worksheet_000565.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
_elmhurst_worksheet_001431.py S0380.191: pin simulated 001431 gas-combi end-to-end at 1e-4 (e2e harness) 2026-06-02 22:44:32 +00:00
_elmhurst_worksheet_001431_6035.py S0380.195: pin sim case 4 (6035 floor geometry) e2e at 1e-4 — 6035 +19 PE is lodged divergence 2026-06-03 09:56:39 +00:00
_elmhurst_worksheet_001431_case5.py S0380.197: simulated case 5 e2e fixture — detached sandstone RR validates S0380.196 (RdSAP 10 §3.9.1 + Table 4 p.22) 2026-06-03 11:41:16 +00:00
_elmhurst_worksheet_001431_case6.py S0380.207: promote simulated case 6 to a full SapResult e2e fixture 2026-06-03 16:14:48 +00:00
_elmhurst_worksheet_001431_case7.py S0380.208: case 7 combi e2e fixture — condensing-oil-combi path validated exact 2026-06-03 17:57:22 +00:00
_elmhurst_worksheet_001431_case20.py feat(test): case-20 cascade fixture + close its CO2 via E7 per-end-use codes 2026-06-06 11:23:10 +00:00
_elmhurst_worksheet_001431_case21.py fix(u-value): solid brick as-built U by thickness — §5.7 Table 13 2026-06-06 14:40:06 +00:00
_elmhurst_worksheet_001431_rr.py S0380.193: suspended-floor (12) sealed rule fires only on a SUPPLIED U-value 2026-06-03 09:16:25 +00:00
_elmhurst_worksheet_001431_rr8.py S0380.194: pin sim case 3 (near-exact 6035 replica) e2e at 1e-4 2026-06-03 09:46:56 +00:00
_xlsx_loader.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_appendix_h_solar.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_dimensions.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_e2e_elmhurst_sap_score.py feat(test): case-20 cascade fixture + close its CO2 via E7 per-end-use codes 2026-06-06 11:23:10 +00:00
test_energy_requirements.py S0380.200: SAP 10.2 §9a two-main-heating split (203)/(205)/(207)/(213) 2026-06-03 13:09:43 +00:00
test_fabric_energy_efficiency.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_fuel_cost.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_heat_transmission.py fix(floor): floor_heat_loss=3 → above partially heated space, U=0.7 (RdSAP §3.12) 2026-06-07 22:25:04 +00:00
test_internal_gains.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_mean_internal_temperature.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_mev.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_photovoltaic.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_rating.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_section_cascade_pins.py fix(u-value): solid brick as-built U by thickness — §5.7 Table 13 2026-06-06 14:40:06 +00:00
test_solar_gains.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_space_cooling.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_space_heating.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_utilisation_factor.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_ventilation.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
test_water_heating.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00