From 10acaa48cca9bbfa3119019607877cbc8eedcadc Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Thu, 30 Jul 2026 13:08:08 +0000 Subject: [PATCH] =?UTF-8?q?docs(adr):=20ADR-0068=20mechanism=20=E2=80=94?= =?UTF-8?q?=20cert-native=20anchors,=20not=20a=20synthesis=20slot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Decision 4 + Status rewritten: band → Table 4b code (C-G) / PCDB index (A/B), carried by cert-native fields only. Records the review rejection of the (winter,summer) slot on MainHeatingDetail. Co-Authored-By: Claude Opus 4.8 (1M context) --- ...ncy-band-is-the-fifth-heating-companion.md | 53 ++++++++++++------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/docs/adr/0068-boiler-efficiency-band-is-the-fifth-heating-companion.md b/docs/adr/0068-boiler-efficiency-band-is-the-fifth-heating-companion.md index f6c070299..3df68eac5 100644 --- a/docs/adr/0068-boiler-efficiency-band-is-the-fifth-heating-companion.md +++ b/docs/adr/0068-boiler-efficiency-band-is-the-fifth-heating-companion.md @@ -2,14 +2,16 @@ ## Status -accepted — implemented & live (band parser + overlay `(winter, summer)` slot + -calculator precedence + classifier/backfill). C-and-below from accredited Table -4b; **A/B validated and live for gas/LPG/biogas and oil** — gas from accredited -Elmhurst RdSAP10 builds (PCDB 18790 → 90.6/81.6, 15029 → 88.0/79.4), oil pinned -from the accredited PCDB records (17292 → 90.6/82.8, 10498 → 88.0/80.2) after the -gas builds proved Elmhurst's worksheet (206)/(217) == the PCDB winter/summer -verbatim (SAP 10.2 App D2.1). Whole-dwelling check: A-rated cert 15017550 +1.78 -SAP; gov-API RdSAP corpus unmoved. +accepted — implemented & live. Band → **cert-native efficiency anchor** (C-and- +below: the band's Table 4b `sap_main_heating_code`; A/B: a representative PCDB +`main_heating_index_number`) — no synthesised field on the cert datatype (see +Decision 4). **A/B live for gas/LPG/biogas and oil**: gas from accredited Elmhurst +RdSAP10 builds (PCDB 18790 reg / 15029 combi; 18964 gas-A-combi, 8106 gas-B-reg), +oil from accredited PCDB (17292, 10498, 15959) after the gas builds proved +Elmhurst's worksheet (206)/(217) == the PCDB winter/summer verbatim (SAP 10.2 App +D2.1). Oil A-combi has no >90 % product (≈0 homes) → keeps its code-130 default. +Each A/B id CI-guarded. Whole-dwelling: A-combi cert 15017550 +2.06 SAP (via PCDB +idx), D-regular −0.98 (via code); gov-API RdSAP corpus unmoved. ## Context @@ -68,17 +70,30 @@ gave us), distinct from the sibling **fuel-override data-quality** question policy ("we only correct downward") that a later reader would silently "fix" into (a) anyway. -4. **Mechanism: `(archetype + fuel) → base code`, then `band → (winter, summer) - efficiency slot` that overrides the code's default.** The **archetype and its - resolved fuel** pick the *base* `sap_main_heating_code` — this is already - ADR-0067's "resolve fuel at resolution" (`Gas boiler, regular` + an oil - `main_fuel` → `Oil boiler, regular` → an oil code), and the code still drives - system-type behaviour (combi vs regular hot water, etc.). The **band** then - sets a `(winter, summer)` seasonal-efficiency pair on the overlay / - `MainHeatingDetail` that the calculator consumes **ahead of** the code's - Table 4b default — mirroring the existing PCDB precedence - (`pcdb_main.winter_efficiency_pct`, `cert_to_inputs.py:2103`). So efficiency is - looked up by **(fuel family, boiler type, band)**, never a single annual number. +4. **Mechanism: `(archetype + fuel) → base code`, then `band → a cert-native + efficiency anchor`.** The **archetype and its resolved fuel** pick the *base* + `sap_main_heating_code` — ADR-0067's "resolve fuel at resolution" (`Gas boiler, + regular` + an oil `main_fuel` → `Oil boiler, regular` → an oil code). The + **band** then picks the boiler's efficiency using the **same fields a real + cert carries** — deliberately *not* a synthesised efficiency field on the cert + datatype (an earlier draft added a `(winter, summer)` slot on + `MainHeatingDetail`; rejected in review as it had no lodged-cert analogue and + polluted the API-cert type): + - **C-and-below** → the band's **Table 4b `sap_main_heating_code`** (regular + 102→106/101/105/115; combi 104→108/103/107/118). The code is itself + combi/regular-specific, so system-type behaviour is preserved by the code + alone; the existing Table 4b path resolves the efficiency. + - **A/B** (exceed Table 4b's 84 % ceiling, so no code exists) → a + **representative PCDB `main_heating_index_number`**, type-matched to the + archetype (combi vs regular, because the combi-loss cascade reads the + record). `_fold_heating` clears the base code when an index is present, so + the **Effective EPC reads as a real PCDB-lodged cert**, resolved by the + existing PCDB Appendix D2.1 path (winter + summer + combi-loss). This is also + the natural on-ramp to a **future user-supplied product → PCDB id**. + + So efficiency is looked up by **(fuel family, boiler type, band)** and carried + by cert-native fields only — never a synthesised number on the cert type. Each + A/B product id is CI-guarded to its accredited `(winter, summer)`. 5. **The band mechanism covers exactly the SEDBUK-rated wet boilers — gas and oil — and both are currently inflated.** Mains gas, LPG and biogas **share** the