Model/domain
Khalim Conn-Kowlessar 474052d303 Slice S0380.25: SAP codes 2111/2113 are type 2 not type 3 — closes 0652 + 6835
Per SAP 10.2 spec page 171 Table 4e "Heating system controls" — boiler
systems with radiators (Group 1):
  2110: "Time and temperature zone control by arrangement of plumbing
        and electrical services"                          → type 3
  2111: "TRVs and bypass"                                 → type 2
  2112: "Time and temperature zone control by device in PCDB" → type 3
  2113: "Room thermostat and TRVs"                        → type 2

`_CONTROL_TYPE_BY_CODE` previously bucketed 2111 + 2113 with the type 3
codes, but neither lodges any time-zone control — they're TRV-class
controls (closer to programmer + room thermostat). The misclassification
propagated through SAP 10.2 Table 9 to swap the elsewhere-zone
off-period pattern from (7, 8) to (9, 8) — i.e. the spec's "heating
0700-0900 and 1800-2300" pattern (footnote b) instead of "heating
0700-0900 and 1600-2300" (footnote a). Under-counted MIT by ~0.67 °C
across the year, dropping space-heating demand and over-predicting SAP:
  - cert 0652-3022-1205-2826-1200: +1.93 → -1e-5
  - cert 6835-3920-2509-0933-5226: +0.72 → +0.015

Cohort-2 outcome (38 certs, Summary path):
  exact (<1e-4): 21 → **22**  (+1: cert 0652 closes)
  ≤±0.07:        13 → **14**  (+1: cert 6835 moves from ±0.5..1)
  ±0.5..1:        2 → **1**   (-1: cert 6835 closes out)
  ±1..5:          1 → **0**   (-1: cert 0652 closes out)

No cohort-1 regressions (all certs there use codes 2106 / 2206;
neither uses 2111/2113).

Pyright net-zero (cert_to_inputs.py 35→35, test 13→13).

Tests: 704 pass (existing control-type test extended; +2 new
assertions for codes 2111/2113), 10 expected fails unchanged.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-01 16:28:46 +00:00
..
addresses standardist Address 2026-05-22 10:13:32 +00:00
data_transformation moved classifier data transformation to an easy one 2026-06-01 14:53:34 +00:00
epc pr review, move domain and orhcestration 2026-06-01 14:00:31 +00:00
sap10_calculator Slice S0380.25: SAP codes 2111/2113 are type 2 not type 3 — closes 0652 + 6835 2026-06-01 16:28:46 +00:00
sap10_ml Slice S0380.18: u_party_wall flat default per RdSAP10 Table 15 footnote* 2026-06-01 16:28:46 +00:00
tasks added postcode splitter rewrite to ddd 2026-05-19 16:35:09 +00:00
postcode.py get rid of comments 2026-05-20 13:21:11 +00:00