Model/docs/migrations
Khalim Conn-Kowlessar 9bb57cde57 Spec the room-in-roof persistence gap for the FE migration 📋
`SapRoomInRoof.detailed_surfaces` is read by the SAP calculator
(heat_transmission.py:590, :690-696, :1311-1470) but has no Postgres column, so
the per-surface geometry is silently discarded on save. Without it the cascade
abandons the RdSAP 10 §3.10 "Detailed" route — each surface at its own Table 17 /
Table 4 U-value — and bills the whole notional roof shell at the Table 18
column (4) age-band default, typically 2.30 W/m2K for pre-1976 stock.

Measured on the committed 1000-cert RdSAP-21.0.1 corpus: 108 certs (10.8%) lodge
RIR geometry across 118 building parts; 107 of 108 score differently when it is
dropped; 15 change EPC band; worst case -15.21 SAP (uprn 10012119141, top-floor
maisonette, band E -> F). Larger in both population and magnitude than the
rafter_insulation_thickness gap that opened #1656.

Doc only — the Drizzle tables are owned by Hestia-Homes/assessment-model and the
model-side wiring follows once they exist.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 22:31:06 +00:00
..
epc-property-round-trip-fidelity.md docs: mark the 7 calculator-read round-trip gaps closed 🟪 2026-06-26 18:48:28 +00:00
epc-room-in-roof-geometry.md Spec the room-in-roof persistence gap for the FE migration 📋 2026-07-21 22:31:06 +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