Model/docs/migrations
Khalim Conn-Kowlessar d867838330 Persist the measured at-rafters roof insulation thickness 🟩
Add `rafter_insulation_thickness` to `EpcBuildingPartModel` (JSONB, matching the
sibling thickness columns so Union[str, int] survives) and wire it through
`from_domain` / `_to_building_part`.

Property 749719 lodges "250mm" -> Table 16 col (2) U 0.23. Dropped, the roof
billed at U 2.30 — a 10x error worth -9.8 SAP (lodged 73, calculated 63.2) that
moved the dwelling a whole band, C -> D, and drew a 9.63-point loft-insulation
recommendation on a roof rated 4/5 by the assessor.

The sibling wall/roof/floor_u_value and wall_is_basement fields have the same
drop but are deliberately NOT persisted: they are full-SAP artefacts and we
re-model as RdSAP, which uses default U-values. Their allow-list entries are
re-justified rather than removed — the previous "not read by the calculator" was
stale and is what hid this drop.

Requires the Drizzle migration in Hestia-Homes/assessment-model to land FIRST;
without the column, EPC reads fail outright.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 17:53:17 +00:00
..
epc-building-part-fabric-overrides.md Persist the measured at-rafters roof insulation thickness 🟩 2026-07-21 17:53:17 +00:00
epc-property-round-trip-fidelity.md Persist the measured at-rafters roof insulation thickness 🟩 2026-07-21 17:53:17 +00:00
property-baseline-performance-table.md Document the nullable lodged_* migration for the FE/Drizzle owner 2026-06-30 22:19:54 +00:00
recommendation-material-id.md feat(modelling): persist recommendation.material_id from the catalogue 2026-06-04 08:26:58 +00:00
recommendation-plan-id.md docs(modelling): design the plan_recommendations retirement (ADR-0017 amendment) 2026-06-03 20:24:30 +00:00