diff --git a/CONTEXT.md b/CONTEXT.md index cb977c4ff..aa2199323 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -86,7 +86,7 @@ One certificate row from the final data dump of the shut-down old EPC register, _Avoid_: old EPC (ambiguous with a pre-SAP10 cert from the new API), historical EPC API (the API is gone; only the backup exists) **Expired-Enhanced Prediction**: -**EPC Prediction** for a Property whose only certificate predates 2012: the expired **Historic EPC**, found by exact UPRN in its postcode shard, **conditions** cohort selection with its *stable* attributes (property type, built form, wall material, roof construction, age band, main fuel, and a ±5% floor-area band) exactly as a Landlord Override would. Volatile attributes (heating, hot water, glazing, PV, insulation, lighting) are excluded — 14+ years stale — and stay neighbour-predicted; the historic cert is **never copied into the Effective EPC as current state**. Persisted to the predicted slot with `source="expired"`. Scoped to the historic backup only; post-2012 expired certs from the new API keep their existing treatment (ADR-0054). +**EPC Prediction** for a Property whose only certificate predates 2012: the expired **Historic EPC**, found by exact UPRN in its postcode shard, **conditions** cohort selection with its *stable* attributes (property type, built form, wall material, roof construction, the age band's ±1-band neighbourhood, main fuel, and a ±20% floor-area band) exactly as a Landlord Override would. Band widths are harness-evidenced, not guessed (ADR-0054 amendment: age band agrees with a relodged cert 52% exactly / 90% within one band; TFA 45% within ±5% / 82% within ±20%). Volatile attributes (heating, hot water, glazing, PV, insulation, lighting) are excluded — 14+ years stale — and stay neighbour-predicted; the historic cert is **never copied into the Effective EPC as current state**. Persisted to the predicted slot with `source="expired"`. Scoped to the historic backup only; post-2012 expired certs from the new API keep their existing treatment (ADR-0054). _Avoid_: historic override (it is conditioning, not an override the effective picture trusts), expired EPC path (names the input, not the operation) ### Survey documents diff --git a/docs/adr/0054-expired-historic-epc-conditions-prediction-with-stable-attributes.md b/docs/adr/0054-expired-historic-epc-conditions-prediction-with-stable-attributes.md index 58c869bc8..ba0067ce3 100644 --- a/docs/adr/0054-expired-historic-epc-conditions-prediction-with-stable-attributes.md +++ b/docs/adr/0054-expired-historic-epc-conditions-prediction-with-stable-attributes.md @@ -41,8 +41,10 @@ into the Effective EPC as current state**. — heating system, hot water, glazing, PV, insulation states, lighting — are excluded and stay neighbour-predicted. 2. **Floor area is a tolerance band, not an override.** Comparables are - soft-filtered to within **±5%** of the historic certificate's total floor - area. The predicted floor area remains the cohort's geo-weighted median. + soft-filtered to within **±20%** of the historic certificate's total floor + area — a coarse dwelling-size filter, not a precision match. The predicted + floor area remains the cohort's geo-weighted median. *(Amended from ±5% — + see Amendment below.)* 3. **Every historic filter rides the existing filter-then-relax ladder** (ADR-0029): an attribute that cannot be resolved into the cohort's code space maps to `None` and its filter is simply inactive; a filter that would @@ -84,3 +86,26 @@ into the Effective EPC as current state**. predicted slot; `source_path` is unchanged). - The whitelist is a hypothesis until the pairs harness reports; attribute membership changes are cheap (one resolver each). + +## Amendment (2026-07-06): band widths set by the pairs harness + +The harness ran at scale (2,000 stride-sampled postcodes → **439 pairs**, 419 +scored per arm; tables on PR #1466) and two parameters changed with evidence: + +- **Age band conditions on the ±1-band neighbourhood, not equality.** The + historic band agrees with the newly lodged one only **52%** exactly but + **90%** within one band — assessors re-band constantly (skewing newer: 31% + of new certs band later). Equality-conditioning steered engaged cohorts + toward a coin flip. +- **The floor-area band widens ±5% → ±20%.** Historic-vs-new TFA agreement: + 45% within ±5%, 63% within ±10%, 72% within ±15%, **82% within ±20%** + (remeasurement + extensions). At ±5% the filter engaged on only 19% of + pairs and worsened the floor-area residual. + +Also established by the same evidence: main fuel is **95%** stable (after +resolving the register's legacy "backwards compatibility" fuel descriptions), +property type **91%**, wall construction **79%** — the whitelist's core holds. +Known collateral to watch: `roof_insulation_thickness` transfers slightly +worse from age-conditioned cohorts (negative in all three harness rounds) — +candidate follow-up: exclude the roof-insulation mode when age conditioning +engaged.