mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-30 13:10:47 +00:00
Record RdSAP 20.0.0 Reduced-Field Synthesis as implemented in resume doc
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c0423295da
commit
deea05905b
1 changed files with 23 additions and 1 deletions
|
|
@ -1,11 +1,33 @@
|
|||
# Grill session — RdSAP-Schema-20.0.0 → EpcPropertyData remapper
|
||||
|
||||
**Date:** 2026-06-09 (resumed 2026-06-10) · **Branch:** `feature/junte+khalim` · **Status:** GRILL COMPLETE — all branches resolved (windows, lighting, glazing, ventilation, hot-water, schema fix, trivia). Ready for ADR + TDD.
|
||||
**Date:** 2026-06-09 (resumed 2026-06-10) · **Branch:** `feature/junte+khalim` · **Status:** IMPLEMENTED — Reduced-Field Synthesis shipped via TDD (ADR-0027). All 1000 corpus certs parse, map, and score; corpus guard flipped to strict.
|
||||
|
||||
Resume by re-running `/grill-me` and feeding it this file.
|
||||
|
||||
---
|
||||
|
||||
## IMPLEMENTED (2026-06-10 TDD session)
|
||||
|
||||
Shipped per ADR-0027 as vertical TDD slices (one test → one impl), commits tagged 🟩:
|
||||
|
||||
- **Schema parse fix** — `RdSapSchema20_0_0` made `kw_only` with data-driven required→optional defaults; `SapBuildingPart` fields all Optional (conservatory parts carry only `{double_glazed, floor_area, glazed_perimeter, room_height}`, no `identifier`). 993→1000/1000 parse.
|
||||
- **Window synthesis** — `_synthesise_20_0_0_sap_windows`: 4-way N/E/S/W split, `width = 0.148 × TFA × band_multiplier / 4`, `height = 1.0`, glazing via `_api_cascade_glazing_type`. The 7 rich certs use lodged `window_area` (`_measurement_value`) for geometry.
|
||||
- **Lighting** — low-energy outlets → LEL path; remainder → incandescent.
|
||||
- **Ventilation** — `open_fireplaces_count` → `open_chimneys_count`; `percent_draughtproofed` passthrough; `sheltered_sides` from `built_form`.
|
||||
- **Hot water** — `number_baths` / `mixer_shower_count` derived from `instantaneous_wwhrs` room counts.
|
||||
- **Corpus guard** — `test_mapper_corpus.py`: 20.0.0 promoted into `SUPPORTED`, xfail dropped → strict **2000/2000** (1000 21.0.1 + 1000 20.0.0) parse+map. Verified all 1000 also score through `Sap10Calculator` without crashing.
|
||||
|
||||
**Deliberately left to the calculator (ADR-0027 "leave defaults to the calculator"):**
|
||||
- `wet_rooms_count = 0` → calculator's `>0 else 1` fallback (only consumed on the decentralised-MEV path).
|
||||
- Window **U / g** — calculator defaults U from `glazing_type` (Table 24) when `window_transmission_details` is absent; verified scoring works without the mapper supplying it.
|
||||
- `mechanical_ventilation` decode (5 MEV certs) — not yet decoded to `mechanical_ventilation_kind`; calculator's natural-ventilation default applies.
|
||||
|
||||
**Deferred (user):** formal SAP-score validation test ("we'll do a sap calculation test later"). Scoring is proven crash-free for all 1000; the score-value guard is the next slice when picked up.
|
||||
|
||||
**Pre-existing failure (NOT a regression):** `TestFromRdSapSchema21_0_1::test_total_floor_area` fails on `main`-state too (confirmed via `git stash`).
|
||||
|
||||
---
|
||||
|
||||
## RESOLVED in 2026-06-10 grill
|
||||
|
||||
**Spec sources (authoritative):** RdSAP10 Specification (9 June 2025) + **SAP 10.2** (already in repo) for anything RdSAP10 doesn't cover. The band→m² glazing rule exists in *neither* (both measure all windows); it was a RdSAP-2012-only convention — hence Q2 below resolved by fitting from our own data.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue