mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
Slice S0380.125: map Elmhurst Summary "18 Hour" meter_type to EIGHTEEN_HOUR
The Elmhurst Summary §14.2 Meters section lodges the electricity meter type as the bare RdSAP enum form "18 Hour", but `_METER_STR_TO_INT` only carried the legacy "off-peak 18 hour" alias. All 41 P960-format heating-system fixtures at `sap worksheets/heating systems examples/` lodge meter_type "18 Hour", so `cert_to_inputs` strict-raised on every one of them before this slice. Per RdSAP 10 Specification §17 page 85 (Electricity meter row 10-2): > "Electricity meter: Dual/single/10-hour/18-hour/24-hour/unknown" Per RdSAP 10 §12 page 62: > "if the meter is dual 18-hour/24-hour it is 18-hour/24-hour tariff" So the bare "18 Hour" lodging routes directly to enum 5 (Off-peak 18 hour) → `Tariff.EIGHTEEN_HOUR`, bypassing the §12 Rules 1-4 dispatch (which only fires for Dual meters that aren't 18-hour or 24-hour). After this slice the heating-system corpus probe (`/tmp/probe_*.py` across 41 variants of the same property × different heating systems) shifts from "32 raises + 7 mapper gaps + 2 emitter gaps" to "32 cascade-OK + 7 community-heating + 2 underfloor-emitter + 1 cylinder-size 'No Access'". The 32 newly-OK variants surface a positive ΔSAP cluster (cascade SAP_c > worksheet SAP_c by +0.87..+30 across boiler types) — that residual layer is queued for the next slice. Extended handover suite at HEAD post-slice: **829 pass, 0 fail** (baseline 775 + test_table_12a.py's 54 incl. the new "18 Hour" entry). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
03c1c350be
commit
a24a211ee3
2 changed files with 12 additions and 0 deletions
|
|
@ -83,6 +83,11 @@ _METER_STR_TO_INT: Final[dict[str, int]] = {
|
|||
"dual": 1,
|
||||
"dual (24 hour)": 4,
|
||||
"off-peak 18 hour": 5,
|
||||
# RdSAP 10 §17 page 85 row 10-2 lodging form: "18-hour" (Elmhurst
|
||||
# Summary §14.2 surfaces this as the bare "18 Hour"). Per §12
|
||||
# page 62: "if the meter is dual 18-hour/24-hour it is 18-hour/
|
||||
# 24-hour tariff" → enum 5 (EIGHTEEN_HOUR).
|
||||
"18 hour": 5,
|
||||
"unknown": 3,
|
||||
"": 3,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,6 +51,13 @@ def test_tariff_enum_has_five_members() -> None:
|
|||
("Dual", Tariff.SEVEN_HOUR),
|
||||
("Dual (24 hour)", Tariff.TWENTY_FOUR_HOUR),
|
||||
("Off-peak 18 hour", Tariff.EIGHTEEN_HOUR),
|
||||
# RdSAP 10 §17 page 85 (Electricity meter row 10-2):
|
||||
# "Dual/single/10-hour/18-hour/24-hour/unknown". The Elmhurst
|
||||
# Summary §14.2 lodges the bare form "18 Hour" (not the
|
||||
# "Off-peak 18 hour" alias above). Per §12 page 62: "if the
|
||||
# meter is dual 18-hour/24-hour it is 18-hour/24-hour tariff",
|
||||
# so the bare lodging routes directly to EIGHTEEN_HOUR.
|
||||
("18 Hour", Tariff.EIGHTEEN_HOUR),
|
||||
# Per Q11b: "Unknown" maps to STANDARD (no off-peak heuristic).
|
||||
("Unknown", Tariff.STANDARD),
|
||||
("", Tariff.STANDARD),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue