mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
User reframed the end goal explicitly: the production flow is `API JSON → EpcPropertyDataMapper.from_api_response → SAP calculator` landing within ±0.5 of the API-published SAP. The Elmhurst-site-notes work is the cross-validation route — same dwelling, independent path into EpcPropertyData. Once both routes agree on cert 001479, the API mapper is validated by transitivity. Restructure the handover around four nested validation layers: Layer 1 (hand-built cascade pin): 6 cohort certs GREEN; 001479 partial Layer 2 (Elmhurst ≡ hand-built): cohort 000474 GREEN; 5 others pending Layer 3 (API ≡ Elmhurst): test doesn't exist yet Layer 4 (API cascade ±0.5): 72.08 vs 69 (delta +3.08) Each layer validates the one below. Closing inner-most first means upper layers can lean on it as reference. Documents tools/patterns built in slices 63-70: - `_LOAD_BEARING_FIELDS` allow-list (~40 cascade/semantic fields) - `_NON_LOAD_BEARING_WINDOW_SUBFIELDS` deny-list (descriptive int/str encoding noise) - `_diff_load_bearing` recursive helper (strict-pyright-clean) - `test_from_elmhurst_site_notes_matches_hand_built_NNNNNN` tracer- bullet pattern (000474 is the worked example) Next-step ordering: parametrize over 5 other cohort certs, complete 001479 hand-built (currently 2/11 cascade pins green; gap −3.02 SAP), add cert 001479 to diff test, then add API mapper → hand-built diff test, then the production-flow acceptance pin in test_golden_fixtures for cert 001479. Lists source-data caveats (the M-vs-L Ext1 age discrepancy on 001479). Conventions to honour (AAA, abs(diff)<=tol, one slice=one commit, 1e-4 Elmhurst / 0.5 API, no widening, pyright net-zero). Cached artefacts (golden JSON, Summary PDF, worksheet PDF) noted. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| adr | ||
| sap-spec | ||