Model/docs
Khalim Conn-Kowlessar db3bf00602 fix(synthesis): Coherent Heating System — synthesisers own the whole boundary
A dwelling's heating is one conceptual system, but its fields are scattered
across EpcPropertyData (a gov-API schema mirror): the cluster on sap_heating, the
electricity tariff on sap_energy_source.meter_type, hot-water flags loose at top
level. Three places synthesise a heating system — Measure Options, Landlord
Overrides, EPC Prediction's donor — and each hand-copied a different ad-hoc
subset. The override and donor both dropped meter_type, so an electric-storage
system landed on the template's single-rate meter and billed overnight heat at
the peak rate: property 713406 scored SAP 13 (G) vs ~50 (E), inflating the HHRSH
measure to +45.8 and overshooting the plan to band A.

Establish a single Coherent Heating System boundary (CONTEXT.md) that every
synthesiser must cover, with a source-appropriate fill policy (ADR-0035):

- Override overlay *completes* the partial system the landlord named. Companion
  fields are now DERIVED from the SAP code, not hand-attached per archetype: the
  off-peak meter from the calculator's single off-peak classification (new
  OFF_PEAK_IMPLYING_HEATING_CODES = SAP §12 Rules 1-2), and an unobserved storage
  charge control defaults to the conservative manual control (Table 4e 2401). So
  adding a heating archetype is just adding its code — companions can't be
  forgotten. A contract test guards it (every off-peak code drags a Dual meter).
- Prediction's heating donor now *carries* the donor's meter_type alongside its
  sap_heating cluster — the donor is already coherent.

Coherence is a synthesis-time obligation only; the calculator still scores a real
lodged cert exactly as lodged.

Verified on 713406: baseline 13 -> 47.8 (E), matching its recorded rating; the
phantom HHRSH recommendation is gone and the plan no longer overshoots to A.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 10:46:11 +00:00
..
adr fix(synthesis): Coherent Heating System — synthesisers own the whole boundary 2026-06-24 10:46:11 +00:00
backlog move spreadsheet population logic to domain 2026-06-09 14:43:24 +00:00
grill-sessions scripts? 2026-06-11 07:07:27 +00:00
migrations Merge remote-tracking branch 'origin/main' into feature/bill-derivation 2026-06-05 11:09:00 +00:00
HANDOVER_API_ACCURACY_S2.md docs: session-2 API-accuracy handover (fabric+tariff fixes, worksheet path) 2026-06-06 19:13:21 +00:00
HANDOVER_API_FETCH_AND_REPORT.md docs(modelling): handover — EPC API fetch + property inspection report 2026-06-04 10:46:31 +00:00
HANDOVER_API_PROFILING.md docs: session-9 close-out + session-10 handover (summary-report-based audit) 2026-06-09 14:54:08 +00:00
HANDOVER_ARA_NEXT.md docs: correct SAP calculator path in CONTEXT (domain/sap → domain/sap10_calculator) 2026-06-04 15:40:26 +00:00
HANDOVER_EPC_PREDICTION.md docs(epc-prediction): handover for the accuracy backlog + geo work 2026-06-15 15:12:00 +00:00
HANDOVER_EPC_PREDICTION_WIRING.md feat(epc-prediction): thread prediction injection points through the composition root 2026-06-16 13:53:54 +00:00
HANDOVER_MODELLING.md docs(modelling): next-phase handover — depth + scale e2e + grilling prompt 2026-06-03 23:09:08 +00:00
HANDOVER_NEXT_PHASE_PROMPT.md docs(modelling): next-phase handover — depth + scale e2e + grilling prompt 2026-06-03 23:09:08 +00:00
HANDOVER_REAL_LIFE_CERT_ACCURACY.md docs: handoff for expanding the real-life cert SAP-accuracy corpus 2026-06-15 15:28:40 +00:00
HANDOVER_SUMMARY_AUDIT.md docs: session-9 close-out + session-10 handover (summary-report-based audit) 2026-06-09 14:54:08 +00:00
MIGRATION_NOTE_predicted_epc_source.md feat(epc-prediction): slice-5c predicted-EPC persistence slot 2026-06-16 03:50:19 +00:00
PR_NOTE_system_built_basement_1177.md docs: PR note for #1177 — system_build property vs field merge collision 2026-06-04 19:51:29 +00:00