From 57241322eada8bb218ac786f4af458dc875966d5 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Tue, 2 Jun 2026 19:21:28 +0000 Subject: [PATCH] =?UTF-8?q?S0380.185:=20record=20CH6=20pin-forever=20proof?= =?UTF-8?q?=20=E2=80=94=20distribution-loss=20is=20a=20Summary-export=20ga?= =?UTF-8?q?p?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CH6's P960 worksheet input lodges Distribution Loss = "Two adjoining dwellings sharing a single heating system" → (306) DLF = 1.0000, vs CH4's "Calculated" → 1.5 → (306) = 1.4500. That DLF choice swings SAP/cost/CO2/PE materially, but it is NOT present in the Summary PDF that the corpus pipeline consumes (Summary → ElmhurstSiteNotesExtractor → mapper → calculator). Proven empirically with a user-supplied controlled pair (CH adjoined dwellings/Summary_001431 (1) vs (2)): the two Summaries are byte-identical across every RdSAP INPUT field, differing only in the derived header (SAP 80 vs 75, bill £954 vs £1237, emissions 5.407 vs 7.394 t). A case-insensitive scan of the CH6 Summary for "distribution"/"adjoin" returns 0 hits. Since CH4/CH6 Summaries are themselves identical bar fuel type, no Summary-derivable rule can yield CH4=1.45 AND CH6=1.0. Doc-only change (comment in _EXPECTATIONS); 20/20 community-heating corpus tests pass. Closes the CH6 re-litigation: pin held. Co-Authored-By: Claude Opus 4.8 --- .../tests/test_heating_systems_corpus.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/backend/documents_parser/tests/test_heating_systems_corpus.py b/backend/documents_parser/tests/test_heating_systems_corpus.py index 60f363f8..ab7889e4 100644 --- a/backend/documents_parser/tests/test_heating_systems_corpus.py +++ b/backend/documents_parser/tests/test_heating_systems_corpus.py @@ -740,6 +740,24 @@ _EXPECTATIONS: tuple[_CorpusExpectation, ...] = ( # and PE −249.32→−0.0000 (× (1.5569−1.501)) now EXACT. Non-electric # heat networks (CH1 gas 51, CH6 coal 54) have no monthly factor set # → unchanged. + # + # CH6 — PROVEN PIN-FOREVER (Summary-export gap, not a mapper miss). + # CH6's P960 *worksheet input* lodges Distribution Loss = "Two + # adjoining dwellings sharing a single heating system" → Value 0.0 → + # (306) DLF = 1.0000, whereas CH4 lodges "Calculated" → 1.5 → (306) = + # 1.4500. That DLF choice swings SAP / cost / CO2 / PE materially. + # But it is NOT in the Summary PDF: a controlled pair differing ONLY + # by the adjoining-dwellings setting (`CH adjoined dwellings/Summary_ + # 001431 (1) vs (2).pdf`) is byte-identical across every RdSAP INPUT + # field — the two Summaries differ solely in the derived header + # (SAP 80 vs 75, bill £954 vs £1237, emissions 5.407 vs 7.394 t). A + # case-insensitive scan of the CH6 Summary for "distribution"/"adjoin" + # returns 0 hits. Since CH4 and CH6 Summaries are themselves identical + # bar fuel type, no Summary-derivable rule can yield CH4=1.45 AND + # CH6=1.0. Closing CH6 would require the P960 worksheet as a mapper + # input or an Elmhurst Summary-export change — neither is available. + # Pin held; do not re-litigate (verified 2026-06-02 with the + # user-supplied adjoining-dwellings pair). _CorpusExpectation(variant='community heating 1', block='11b', expected_sap_resid=+0.0000, expected_cost_resid_gbp=-0.0000, expected_co2_resid_kg=-0.0000, expected_pe_resid_kwh=+0.0000), _CorpusExpectation(variant='community heating 2', block='11b', expected_sap_resid=-0.0000, expected_cost_resid_gbp=-0.0000, expected_co2_resid_kg=+0.0000, expected_pe_resid_kwh=+0.0000), _CorpusExpectation(variant='community heating 3', block='11b', expected_sap_resid=+0.0000, expected_cost_resid_gbp=-0.0000, expected_co2_resid_kg=+0.0000, expected_pe_resid_kwh=-0.0000),