Slice 38: add LN12 cert as 8th golden fixture

End-terrace + 1 extension, TFA 80 m², gas combi (PCDB index 18119),
no PV, no secondary, postcode LN12 (PCDB Table 172 match). Schema-
21.0.1 / SAP 10.2 — the cleanest bread-and-butter cert in the cohort.

Residuals post sap_ventilation mapper fix:
  SAP  +1  (calc 66 vs lodged 65)
  PE   -10.6249 kWh/m²
  CO2  -0.1059 t/yr

Residual floor reflects remaining mapper gaps — notably schema-21
not carrying led_/cfl_fixed_lighting_bulbs_count for this cert, so
the §5 lighting efficacy falls back to defaults.

Also added to PCDB chain test — index 18119 flows through to
inputs.main_heating_efficiency (winter eff lookup deferred,
expected_winter_eff=None per the existing non-oil convention).

12/12 golden cohort green. Pyright net-zero.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-05-24 11:35:46 +00:00
parent 3ac07bd04a
commit 6a6811e548
2 changed files with 537 additions and 0 deletions

View file

@ -0,0 +1,520 @@
{
"uprn": 100032081004,
"roofs": [
{
"description": "Pitched, 300 mm loft insulation",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
{
"description": "Flat, no insulation",
"energy_efficiency_rating": 1,
"environmental_efficiency_rating": 1
}
],
"walls": [
{
"description": "Cavity wall, as built, no insulation (assumed)",
"energy_efficiency_rating": 2,
"environmental_efficiency_rating": 2
}
],
"floors": [
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"tenure": 2,
"window": {
"description": "Fully double glazed",
"energy_efficiency_rating": 2,
"environmental_efficiency_rating": 2
},
"addendum": {
"cavity_fill_recommended": "true"
},
"lighting": {
"description": "Good lighting efficiency",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"postcode": "LN12 2PT",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "MABLETHORPE",
"built_form": 3,
"created_at": "2026-03-31 19:45:46",
"door_count": 2,
"region_code": 3,
"report_type": 2,
"sap_heating": {
"number_baths": 1,
"cylinder_size": 1,
"number_baths_wwhrs": 0,
"water_heating_code": 901,
"water_heating_fuel": 26,
"main_heating_details": [
{
"has_fghrs": "N",
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"emitter_temperature": 0,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"central_heating_pump_age": 0,
"main_heating_data_source": 1,
"main_heating_index_number": 18119
}
],
"immersion_heating_type": "NA",
"has_fixed_air_conditioning": "false"
},
"sap_version": 10.2,
"sap_windows": [
{
"pvc_frame": "true",
"glazing_gap": 12,
"orientation": 2,
"window_type": 1,
"glazing_type": 3,
"window_width": 0.96,
"window_height": 1.2,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"glazing_gap": 12,
"orientation": 2,
"window_type": 1,
"glazing_type": 3,
"window_width": 0.96,
"window_height": 1.2,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"glazing_gap": 12,
"orientation": 2,
"window_type": 1,
"glazing_type": 3,
"window_width": 0.97,
"window_height": 1.18,
"draught_proofed": "true",
"window_location": 1,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"glazing_gap": 12,
"orientation": 2,
"window_type": 1,
"glazing_type": 3,
"window_width": 0.48,
"window_height": 1.2,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"glazing_gap": 12,
"orientation": 2,
"window_type": 1,
"glazing_type": 3,
"window_width": 1.45,
"window_height": 1.2,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"glazing_gap": 12,
"orientation": 6,
"window_type": 1,
"glazing_type": 3,
"window_width": 0.96,
"window_height": 1.2,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"glazing_gap": 12,
"orientation": 6,
"window_type": 1,
"glazing_type": 3,
"window_width": 0.96,
"window_height": 1.2,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"glazing_gap": 12,
"orientation": 6,
"window_type": 1,
"glazing_type": 3,
"window_width": 0.97,
"window_height": 1.2,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"glazing_gap": 12,
"orientation": 6,
"window_type": 1,
"glazing_type": 3,
"window_width": 0.98,
"window_height": 1.2,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"glazing_gap": 12,
"orientation": 4,
"window_type": 1,
"glazing_type": 3,
"window_width": 0.97,
"window_height": 1.2,
"draught_proofed": "true",
"window_location": 1,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
}
],
"schema_type": "RdSAP-Schema-21.0.1",
"uprn_source": "Energy Assessor",
"country_code": "ENG",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"air_tightness": {
"description": "(not tested)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"dwelling_type": "End-terrace house",
"language_code": 1,
"pressure_test": 4,
"property_type": 0,
"address_line_1": "7 Sutton Road",
"address_line_2": "Trusthorpe",
"assessment_type": "RdSAP",
"completion_date": "2026-03-31",
"inspection_date": "2026-02-24",
"extensions_count": 1,
"measurement_type": 1,
"total_floor_area": 80,
"transaction_type": 5,
"conservatory_type": 1,
"heated_room_count": 4,
"registration_date": "2026-03-31",
"sap_energy_source": {
"mains_gas": "Y",
"meter_type": 2,
"pv_connection": 0,
"photovoltaic_supply": {
"none_or_no_details": {
"percent_roof_area": 0
}
},
"wind_turbines_count": 0,
"gas_smart_meter_present": "true",
"is_dwelling_export_capable": "false",
"wind_turbines_terrain_type": 2,
"electricity_smart_meter_present": "true"
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"extract_fans_count": 2,
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"wall_dry_lined": "N",
"wall_thickness": 280,
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": {
"value": 2.33,
"quantity": "metres"
},
"floor_insulation": 1,
"total_floor_area": {
"value": 34.69,
"quantity": "square metres"
},
"party_wall_length": {
"value": 7.08,
"quantity": "metres"
},
"floor_construction": 1,
"heat_loss_perimeter": {
"value": 11.82,
"quantity": "metres"
}
},
{
"floor": 1,
"room_height": {
"value": 2.29,
"quantity": "metres"
},
"total_floor_area": {
"value": 34.69,
"quantity": "square metres"
},
"party_wall_length": {
"value": 7.08,
"quantity": "metres"
},
"heat_loss_perimeter": {
"value": 16.88,
"quantity": "metres"
}
}
],
"wall_insulation_type": 4,
"construction_age_band": "D",
"party_wall_construction": 0,
"wall_thickness_measured": "Y",
"roof_insulation_location": 2,
"roof_insulation_thickness": "300mm",
"wall_insulation_thickness": "NI",
"floor_insulation_thickness": "NI"
},
{
"identifier": "Extension 1",
"wall_dry_lined": "N",
"wall_thickness": 280,
"floor_heat_loss": 7,
"roof_construction": 1,
"wall_construction": 4,
"building_part_number": 2,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": {
"value": 2.23,
"quantity": "metres"
},
"floor_insulation": 1,
"total_floor_area": {
"value": 10.76,
"quantity": "square metres"
},
"party_wall_length": {
"value": 0,
"quantity": "metres"
},
"floor_construction": 1,
"heat_loss_perimeter": {
"value": 10.16,
"quantity": "metres"
}
}
],
"wall_insulation_type": 4,
"construction_age_band": "D",
"party_wall_construction": "NA",
"wall_thickness_measured": "Y",
"roof_insulation_location": 6,
"wall_insulation_thickness": "NI",
"floor_insulation_thickness": "NI",
"flat_roof_insulation_thickness": "AB"
}
],
"solar_water_heating": "N",
"habitable_room_count": 4,
"heating_cost_current": {
"value": 1083,
"currency": "GBP"
},
"insulated_door_count": 0,
"co2_emissions_current": 3.5,
"energy_rating_average": 60,
"energy_rating_current": 65,
"lighting_cost_current": {
"value": 56,
"currency": "GBP"
},
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"blocked_chimneys_count": 2,
"has_hot_water_cylinder": "false",
"heating_cost_potential": {
"value": 758,
"currency": "GBP"
},
"hot_water_cost_current": {
"value": 155,
"currency": "GBP"
},
"mechanical_ventilation": 0,
"percent_draughtproofed": 100,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": {
"value": 61,
"currency": "GBP"
},
"indicative_cost": "\u00a3900 - \u00a31,200",
"improvement_type": "A2",
"improvement_details": {
"improvement_number": 45
},
"improvement_category": 5,
"energy_performance_rating": 67,
"environmental_impact_rating": 65
},
{
"sequence": 2,
"typical_saving": {
"value": 208,
"currency": "GBP"
},
"indicative_cost": "\u00a3900 - \u00a31,500",
"improvement_type": "B",
"improvement_details": {
"improvement_number": 6
},
"improvement_category": 5,
"energy_performance_rating": 72,
"environmental_impact_rating": 72
},
{
"sequence": 3,
"typical_saving": {
"value": 57,
"currency": "GBP"
},
"indicative_cost": "\u00a35,000 - \u00a310,000",
"improvement_type": "W2",
"improvement_details": {
"improvement_number": 58
},
"improvement_category": 5,
"energy_performance_rating": 74,
"environmental_impact_rating": 74
},
{
"sequence": 4,
"typical_saving": {
"value": 225,
"currency": "GBP"
},
"indicative_cost": "\u00a38,000 - \u00a310,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 5,
"energy_performance_rating": 78,
"environmental_impact_rating": 75
}
],
"co2_emissions_potential": 2.4,
"energy_rating_potential": 78,
"lighting_cost_potential": {
"value": 56,
"currency": "GBP"
},
"schema_version_original": "21.0.1",
"alternative_improvements": [
{
"improvement": {
"sequence": 1,
"typical_saving": {
"value": 59,
"currency": "GBP"
},
"improvement_type": "Q2",
"improvement_details": {
"improvement_number": 55
},
"improvement_category": 6,
"energy_performance_rating": 74,
"environmental_impact_rating": 74
}
}
],
"hot_water_cost_potential": {
"value": 155,
"currency": "GBP"
},
"renewable_heat_incentive": {
"water_heating": 2080.04,
"space_heating_existing_dwelling": 12615.25
},
"draughtproofed_door_count": 2,
"energy_consumption_current": 241,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "5.02r0335",
"energy_consumption_potential": 156,
"environmental_impact_current": 62,
"current_energy_efficiency_band": "D",
"environmental_impact_potential": 75,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": 44,
"low_energy_fixed_lighting_bulbs_count": 9,
"incandescent_fixed_lighting_bulbs_count": 0
}

View file

@ -132,6 +132,22 @@ _EXPECTATIONS: tuple[_GoldenExpectation, ...] = (
expected_co2_resid_tonnes_per_yr=-0.2234,
notes="Semi-detached, TFA 102, age C, gas PCDB-listed.",
),
_GoldenExpectation(
cert_number="0390-2254-6420-2126-5561",
actual_sap=65,
expected_sap_resid=+1,
expected_pe_resid_kwh_per_m2=-10.6249,
expected_co2_resid_tonnes_per_yr=-0.1059,
notes=(
"End-terrace + 1 extension, TFA 80, gas combi PCDB index 18119, "
"no PV, no secondary, postcode LN12 (PCDB Table 172 match). "
"Cleanest bread-and-butter cert in the cohort; the +1 SAP / -10.6 "
"PE residual is the post-sap_ventilation-fix floor under the "
"remaining mapper gaps (notably schema-21 doesn't carry "
"led_/cfl_fixed_lighting_bulbs_count for this cert, so the §5 "
"lighting efficacy falls back to defaults)."
),
),
# Retired early at P2.2: 9390-2722-3520-2105-8715 (mid-floor flat,
# heat network cat 6 sap_code 301). Drifted to SAP residual -7
# under SAP 10.2 spec prices because cert-cal had absorbed
@ -204,6 +220,7 @@ _PCDB_CHAIN_EXPECTATIONS: tuple[tuple[str, int, float], ...] = (
("7536-3827-0600-0600-0276", 17679, None), # Vaillant gas PCDB-listed
("0300-2747-7640-2526-2135", 17992, None), # gas PCDB-listed
("8135-1728-8500-0511-3296", 17702, None), # gas PCDB-listed
("0390-2254-6420-2126-5561", 18119, None), # LN12 gas combi PCDB-listed
)