mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
The Elmhurst extractor crashed parsing simulated-case-6's room-in-roof
window rows: the §11 "Location" cell "Roof of Room in Roof" wraps across
the layout prefix/suffix blocks and leaked into the glazing-type phrase
("Double between 2002 Roof of Room and 2021 in Roof" → UnmappedElmhurst-
Label). Fix (`_parse_window_from_anchors`): detect the roof-of-room
location tokens, strip them from the before/after blocks so the glazing
phrase reconstructs cleanly, and set location="Roof of Room".
Mapper: `_is_elmhurst_roof_window` gains a "Roof of Room" location branch
(highest-confidence rooflight signal, above the BP-roof-type / U>3.0
gates); `_ELMHURST_ROOF_WINDOW_U_BY_GLAZING` gains "Double between 2002
and 2021" → 2.30 (case 6 lodges the already-inclined roof-window U, so
the +0.30 inclination adjustment must not double-apply).
This is the site-notes mirror of S0380.198 (API window_wall_type=4):
both paths now route room-in-roof rooflights to (27a) at the inclined U.
Validated against the case-6 P960 worksheet at abs=1e-4:
(27) Windows = 22.7408 (cascade 22.7407)
(27a) Roof Windows = 13.0375 (cascade 13.0375, EXACT)
(31) ext area = 336.13
Case 6 is pinned only on the §3 window line refs (new standalone test,
not added to the section-pin `_FIXTURES`) because its DUAL main heating
(51% rads + 49% underfloor, oil) makes the §10/§12 per-system lines
non-comparable to SapResult's aggregated fields — documented in the
fixture module. Summary mirrored to Summary_001431_case6.pdf.
Suite: 2355 passed, 1 skipped. New code: 0 pyright errors.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| elmhurst_site_notes_1_text.json | ||
| elmhurst_site_notes_2_text.json | ||
| ElmhurstSiteNotes.pdf | ||
| ElmhurstSiteNotes_2.pdf | ||
| pashub_site_notes_1_text.json | ||
| pashub_site_notes_2_text.json | ||
| pashub_site_notes_3_text.json | ||
| pashub_site_notes_4_text.json | ||
| pashub_site_notes_5_text.json | ||
| pashub_site_notes_6_text.json | ||
| pashub_site_notes_7_text.json | ||
| PasHubSiteNotes_1.pdf | ||
| PasHubSiteNotes_2.pdf | ||
| PasHubSiteNotes_3.pdf | ||
| PasHubSiteNotes_4.pdf | ||
| PasHubSiteNotes_5.pdf | ||
| PasHubSiteNotes_6.pdf | ||
| PasHubSiteNotes_7.pdf | ||
| Summary_000474.pdf | ||
| Summary_000477.pdf | ||
| Summary_000480.pdf | ||
| Summary_000487.pdf | ||
| Summary_000490.pdf | ||
| Summary_000516.pdf | ||
| Summary_000565.pdf | ||
| Summary_000784.pdf | ||
| Summary_000884.pdf | ||
| Summary_000888.pdf | ||
| Summary_000889.pdf | ||
| Summary_000890.pdf | ||
| Summary_000897.pdf | ||
| Summary_000898.pdf | ||
| Summary_000899.pdf | ||
| Summary_000900.pdf | ||
| Summary_000901.pdf | ||
| Summary_000902.pdf | ||
| Summary_000903.pdf | ||
| Summary_000904.pdf | ||
| Summary_000910.pdf | ||
| Summary_001431_6035.pdf | ||
| Summary_001431_case5.pdf | ||
| Summary_001431_case6.pdf | ||
| Summary_001431_gas_combi.pdf | ||
| Summary_001431_rr8w.pdf | ||
| Summary_001431_rr_ext.pdf | ||
| Summary_001479.pdf | ||