Cohort residual slice 8: 000477 xfail re-diagnosed — space-heating residual unmasked

Slices 6+7 landed Table 3c, closing 000477's Σ(61) combi loss to spec
(HW kWh = 2119 vs PDF 2116, Δ<3 kWh). With the +575 kWh HW overshoot
removed, the underlying §9/§10 useful-space-heating residual is now
visible: useful_space_heating_kwh_per_yr = 9156 vs PDF 10111 = ~9.4%
undershoot, pushing SAP 67 vs PDF 65 (Δ=+2; previous Δ=+1 was masked
by the bogus Table 3a 600 kWh/yr combi-loss default).

Updates the xfail reason to reflect reality. The residual sits in
internal gains / mean internal temp / HLC / responsiveness — not
Appendix J. Tracked as a separate cohort residual; slices 9-11
(000516/000480/000487 build_epc lodgement) proceed independently and
will surface the same residual on those fixtures once their cert
fields close.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-05-22 18:39:59 +00:00
parent 62bbf863ff
commit 639b7ee2d7

View file

@ -74,15 +74,15 @@ _ELMHURST_000474_EXPECTED: Final[ElmhurstExpectedSap] = ElmhurstExpectedSap(
@pytest.mark.xfail(
reason=(
"Table 3c two-profile combi-loss override not yet implemented. PCDB "
"18118 (Vaillant ecoTEC sustain 24) lodges separate_dhw_tests=2 → "
"spec routes to Table 3c, which uses both Profile M (F1, R1) and "
"Profile L (F2, R2) loss factors. Our override gate (`_pcdb_table_"
"3b_combi_loss_override`) only accepts separate_dhw_tests==1 (Table "
"3b row 1, single-profile) → falls back to Table 3a keep-hot time-"
"clock 600 kWh/yr default = 25x overshoot on combi loss → +712 HW "
"kWh → continuous SAP +0.83 over PDF (66 vs 65). Re-enable when "
"Table 3c lands per the next ticket (see project memory)."
"Useful space-heating undershoot. Slice 6+7 landed Table 3c so "
"Σ(61) (combi loss) closes — HW kWh = 2119 vs PDF 2116 (Δ<3). "
"But useful_space_heating_kwh_per_yr = 9156 vs PDF 10111 = ~9.4% "
"undershoot, dominating an unmasked +£cost gain that pushes SAP "
"67 vs PDF 65 (Δ=+2, was Δ=+1 under the pre-Table-3c Table 3a "
"default which masked the residual with a +575 kWh HW overshoot). "
"The residual sits in the §9/§10 cascade (internal gains / mean "
"internal temp / HLC / responsiveness), not Appendix J. Tracked "
"separately under the cohort residual roadmap."
),
strict=True,
)