Model/backend/documents_parser/tests/fixtures
Khalim Conn-Kowlessar d4d2b222fc feat(conservatory): §6.1 fabric cascade (27/27a/28a + TFA/volume)
Wire the non-separated conservatory into the §3 heat-transmission +
§1 dimensions cascade per RdSAP 10 §6.1 (PDF p.49) + Table 25 (p.51):

  "The floor area and volume of a non-separated conservatory are added to
   the total floor area and volume of the dwelling. Its roof area is taken
   as its floor area divided by cos(20°), and wall area is taken as the
   product of its exposed perimeter and its height. ... The conservatory
   walls and roof are taken as fully glazed ... Glazed walls are taken as
   windows, glazed roof as rooflight."

New `worksheet/conservatory.py` derives the geometry:
  - height from the equivalent storey count (§6.1: 1 storey → ground-floor
    room height; 1½ → ground + 0.25 + 0.5×first; etc.);
  - glazed WALL → window (27) at Table 25 U (double 3.1 / single 4.8) with
    the §3.2 curtain resistance (R=0.04) → U_eff 2.758;
  - glazed ROOF → rooflight (27a) at Table 25 roof U (double 3.4 / single
    5.3) + curtain → U_eff 2.993;
  - FLOOR → (28a) via BS EN ISO 13370 as an uninsulated SOLID ground floor
    with 300 mm walls (§5.12, spec p.43), exposed perimeter = glazed
    perimeter → U 0.89;
  - glazed wall + roof + floor areas join (31)/(36); the fully-glazed
    structure walls/roof add nothing (the glazing IS the window/rooflight).

`dimensions_from_cert` adds the conservatory floor area to TFA (4) and
floor area × height to volume (5) (feeds ventilation (8)), without making
it a storey (avg storey height for §2 infiltration is unchanged).

Pinned against the simulated case-44 P960 §3 at abs=1e-4 — every line ref
EXACT: (4) 95.3800, (5) 257.1630, (27) 96.1169, (27a) 38.2201, (28a)
21.4164, (29a) 35.5852, (30) 7.4688, (31) 294.2900, (33) 207.3274,
(36) 23.5432. The remaining whole-dwelling SAP/CO2 gap is the §6 solar
gains, closed in the next slice. Worksheet harness stays 47/47 0-raised.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 15:59:26 +00:00
..
elmhurst_site_notes_1_text.json elmhurst site notes fixture 2026-04-24 13:09:30 +00:00
elmhurst_site_notes_2_text.json extract window frame details from elmhurst site notes 🟥 2026-04-27 15:50:25 +00:00
ElmhurstSiteNotes.pdf rename example site notes to PasHub_ and add Elmhurst example 2026-04-24 13:01:51 +00:00
ElmhurstSiteNotes_2.pdf extract window frame details from elmhurst site notes 🟥 2026-04-27 15:50:25 +00:00
pashub_site_notes_1_text.json rename example site notes to PasHub_ and add Elmhurst example 2026-04-24 13:01:51 +00:00
pashub_site_notes_2_text.json rename example site notes to PasHub_ and add Elmhurst example 2026-04-24 13:01:51 +00:00
pashub_site_notes_3_text.json rename example site notes to PasHub_ and add Elmhurst example 2026-04-24 13:01:51 +00:00
pashub_site_notes_4_text.json rename example site notes to PasHub_ and add Elmhurst example 2026-04-24 13:01:51 +00:00
pashub_site_notes_5_text.json rename example site notes to PasHub_ and add Elmhurst example 2026-04-24 13:01:51 +00:00
pashub_site_notes_6_text.json rename example site notes to PasHub_ and add Elmhurst example 2026-04-24 13:01:51 +00:00
pashub_site_notes_7_text.json Extract address when Property photo element is missing from PDF 🟩 2026-04-30 16:25:41 +00:00
PasHubSiteNotes_1.pdf rename example site notes to PasHub_ and add Elmhurst example 2026-04-24 13:01:51 +00:00
PasHubSiteNotes_2.pdf rename example site notes to PasHub_ and add Elmhurst example 2026-04-24 13:01:51 +00:00
PasHubSiteNotes_3.pdf rename example site notes to PasHub_ and add Elmhurst example 2026-04-24 13:01:51 +00:00
PasHubSiteNotes_4.pdf rename example site notes to PasHub_ and add Elmhurst example 2026-04-24 13:01:51 +00:00
PasHubSiteNotes_5.pdf rename example site notes to PasHub_ and add Elmhurst example 2026-04-24 13:01:51 +00:00
PasHubSiteNotes_6.pdf rename example site notes to PasHub_ and add Elmhurst example 2026-04-24 13:01:51 +00:00
PasHubSiteNotes_7.pdf Extract address when Property photo element is missing from PDF 🟩 2026-04-30 16:25:41 +00:00
Summary_000474.pdf Scaffold: end-to-end Summary→EpcPropertyData chain test for 000474 (xfail) 2026-05-24 17:40:06 +00:00
Summary_000477.pdf Slice 48: Elmhurst extractor handles 3 new layout quirks; 5 fixture PDFs added 2026-05-24 19:17:59 +00:00
Summary_000480.pdf Slice 48: Elmhurst extractor handles 3 new layout quirks; 5 fixture PDFs added 2026-05-24 19:17:59 +00:00
Summary_000487.pdf Slice 48: Elmhurst extractor handles 3 new layout quirks; 5 fixture PDFs added 2026-05-24 19:17:59 +00:00
Summary_000490.pdf Slice 48: Elmhurst extractor handles 3 new layout quirks; 5 fixture PDFs added 2026-05-24 19:17:59 +00:00
Summary_000516.pdf Slice 48: Elmhurst extractor handles 3 new layout quirks; 5 fixture PDFs added 2026-05-24 19:17:59 +00:00
Summary_000565.pdf Slice S0380.52: cert 000565 Elmhurst-only mapper-driven cascade pin + glazing-label coverage 2026-05-28 22:03:52 +00:00
Summary_000784.pdf chore: stage cert 9501 fixtures (second boiler validation cert) 2026-05-26 18:53:08 +00:00
Summary_000884.pdf Slice S0380.16: add 'Normal' → cylinder_size=2 (110 L) for cohort 2 2026-05-27 22:44:02 +00:00
Summary_000888.pdf Slice S0380.17: map Elmhurst §11 glazing-type labels to SAP10 codes 2026-05-27 23:05:52 +00:00
Summary_000889.pdf Slice S0380.16: add 'Normal' → cylinder_size=2 (110 L) for cohort 2 2026-05-27 22:44:02 +00:00
Summary_000890.pdf Slice S0380.19: count Elmhurst shower outlets by type (no more hardcoded 1) 2026-05-28 07:16:32 +00:00
Summary_000897.pdf chore: stage cert 0330 fixtures (boiler pilot) 2026-05-26 17:37:14 +00:00
Summary_000898.pdf Slice S0380.10: pin certs 3800 + 9285 Summary chain tests — first-try closure 2026-05-27 20:47:51 +00:00
Summary_000899.pdf chore: stage cert 0380 fixtures (HP pilot — deferred workstream) 2026-05-26 17:37:34 +00:00
Summary_000900.pdf Slice S0380.10: pin certs 3800 + 9285 Summary chain tests — first-try closure 2026-05-27 20:47:51 +00:00
Summary_000901.pdf Slice S0380.10: pin certs 3800 + 9285 Summary chain tests — first-try closure 2026-05-27 20:47:51 +00:00
Summary_000902.pdf Slice S0380.10: pin certs 3800 + 9285 Summary chain tests — first-try closure 2026-05-27 20:47:51 +00:00
Summary_000903.pdf Slice S0380.9: multi-array PV support + close cert 0350 to ASHP spec floor 2026-05-27 20:44:13 +00:00
Summary_000904.pdf Slice S0380.10: pin certs 3800 + 9285 Summary chain tests — first-try closure 2026-05-27 20:47:51 +00:00
Summary_000910.pdf Slice S0380.18: u_party_wall flat default per RdSAP10 Table 15 footnote* 2026-05-27 23:24:58 +00:00
Summary_001431_6035.pdf S0380.195: pin sim case 4 (6035 floor geometry) e2e at 1e-4 — 6035 +19 PE is lodged divergence 2026-06-03 09:56:39 +00:00
Summary_001431_case5.pdf S0380.197: simulated case 5 e2e fixture — detached sandstone RR validates S0380.196 (RdSAP 10 §3.9.1 + Table 4 p.22) 2026-06-03 11:41:16 +00:00
Summary_001431_case6.pdf S0380.199: site-notes "Roof of Room" windows → roof windows (cross-mapper parity with S0380.198) 2026-06-03 12:46:18 +00:00
Summary_001431_case7.pdf S0380.208: case 7 combi e2e fixture — condensing-oil-combi path validated exact 2026-06-03 17:57:22 +00:00
Summary_001431_case20.pdf fix(extractor): re-join §11 windows whose Area cell split onto its own line 2026-06-06 10:35:21 +00:00
Summary_001431_case21.pdf fix(u-value): solid brick as-built U by thickness — §5.7 Table 13 2026-06-06 14:40:06 +00:00
Summary_001431_case38.pdf test(worksheet): pin simulated case 38 — mains-gas secondary reproduces worksheet exactly 2026-06-15 13:31:36 +00:00
Summary_001431_case39.pdf fix(mapper): map Elmhurst "Value known" cylinder to measured volume (code 6) 2026-06-15 23:57:25 +00:00
Summary_001431_case41_rafters.pdf fix(roof): bill at-rafters insulation on RdSAP 10 Table 16/18 column (2) 2026-06-16 04:42:44 +00:00
Summary_001431_case42_50mm_rafters.pdf fix(roof): bill at-rafters insulation on RdSAP 10 Table 16/18 column (2) 2026-06-16 04:42:44 +00:00
Summary_001431_case42_unknown_rafters.pdf fix(roof): bill at-rafters insulation on RdSAP 10 Table 16/18 column (2) 2026-06-16 04:42:44 +00:00
Summary_001431_case43.pdf test(worksheet): pin simulated case 43 at 1e-4 (RR + dry-line + mixed roof) 2026-06-16 08:26:05 +00:00
Summary_001431_case44.pdf feat(conservatory): §6.1 fabric cascade (27/27a/28a + TFA/volume) 2026-06-16 15:59:26 +00:00
Summary_001431_double_glazing.pdf S0380.236: extension party-wall type read independently of "As Main Wall" 2026-06-05 09:19:43 +00:00
Summary_001431_gas_combi.pdf S0380.191: pin simulated 001431 gas-combi end-to-end at 1e-4 (e2e harness) 2026-06-02 22:44:32 +00:00
Summary_001431_lpg_boiler.pdf fix(elmhurst-mapper): map "Bottled gas" main fuel to bottled LPG, not mains gas 2026-06-10 08:48:15 +00:00
Summary_001431_rr8w.pdf S0380.194: pin sim case 3 (near-exact 6035 replica) e2e at 1e-4 2026-06-03 09:46:56 +00:00
Summary_001431_rr_ext.pdf S0380.193: suspended-floor (12) sealed rule fires only on a SUPPLIED U-value 2026-06-03 09:16:25 +00:00
Summary_001431_topfloor_flat.pdf fix(elmhurst-extractor): read Main Property age band from §3.0 Date Built block 2026-06-09 16:41:00 +00:00
Summary_001479.pdf Slice 54: Elmhurst mapper sets extensions_count from len(survey.extensions) 2026-05-24 22:15:47 +00:00
Summary_case34_storage_flat.pdf fix(elmhurst-extractor): allocate single-glazed alt-wall windows to the alternative wall 2026-06-11 07:54:06 +00:00