test(corpus): ratchet SAP floor 0.65->0.67, ceiling 1.08->1.00

Lock in the detailed-RR slope + stud-wall gain (corpus within-0.5
67.3% -> 67.5%, MAE 1.020 -> 0.987). The corpus is a fixed 1000-cert
deterministic gauge, so the thresholds track measured HEAD with a small
margin per the ratchet convention.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-06-16 05:57:27 +00:00
parent 363f14fbb2
commit e4adab0e88

View file

@ -82,8 +82,19 @@ _CORPUS = Path(
# -> 0.68) and case 42 (rafters 50mm -> 0.88; rafters genuine-unknown band C
# -> 2.30 per Table 18 footnote 1 "applies for unknown and as built"). Do NOT
# revert the rafters column.
_MIN_WITHIN_HALF_SAP = 0.65
_MAX_SAP_MAE = 1.08
#
# DETAILED RR SLOPE + STUD WALL (RdSAP 10 §3.9 Figure 4 + §5.11.3 Table 17 cols
# 1/3, p.43-44): the gov API lodges a Detailed RR's sloping ceilings (slope_*)
# and stud/knee walls (stud_wall_*) alongside the gable + flat-ceiling surfaces.
# Those fields were UNDECLARED on the schema, so `from_dict` dropped them and the
# mapper built only gable + flat-ceiling — the (large) sloping roof and knee
# walls contributed ZERO heat loss -> undercounted RR fabric -> over-rate.
# Declaring + threading slope/stud into `detailed_surfaces` (cascade already
# routes both to the roof aggregate) recovered the 15-cert /tmp cohort from
# mean|err| 4.26 -> 2.05 (e.g. 0390-2538 +5.95 -> +3.56). Corpus within-0.5
# 67.3% -> 67.5% (MAE 1.020 -> 0.987).
_MIN_WITHIN_HALF_SAP = 0.67
_MAX_SAP_MAE = 1.00
_MAX_CO2_MAE_TONNES = 0.35 # t CO2 / yr vs co2_emissions_current
_MAX_PE_PER_M2_MAE = 16.0 # kWh / m2 / yr vs energy_consumption_current