mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-08-03 05:18:22 +00:00
docs(adr): ADR-0068 mechanism — cert-native anchors, not a synthesis slot
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) <noreply@anthropic.com>
This commit is contained in:
parent
307fdfb270
commit
10acaa48cc
1 changed files with 34 additions and 19 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue