chore: stage cert 0330 fixtures (boiler pilot)

Adds the (API JSON + Summary PDF) fixtures for cert
0330-2249-8150-2326-4121 — the boiler pilot identified in the
handover. Property: 17 Summerfield Road, MANCHESTER M22 1AE
(mid-terrace house, mains gas boiler PCDB idx 10241, age D).

Source: API JSON fetched via EpcClientService from
https://api.get-energy-performance-data.communities.gov.uk
(OPEN_EPC_API_TOKEN). Summary PDF copied from
`sap worksheets/Additional data with api/0330-2249-8150-2326-4121/
Summary_000897.pdf` (where the user provided the triple).

Worksheet target: SAP 61.5993 (continuous), from `dr87-0001-000897
.pdf` in the same source directory.

Current state on these fixtures (uncommitted before this slice):
  - Summary mapper cascade SAP: 62.0660 (Δ +0.4667 vs worksheet)
  - API mapper cascade SAP:     63.7446 (Δ +2.1453 vs worksheet)

Both paths RED at 1e-4. Two specific cascade-component gaps
identified in the handover for follow-up slices:

  1. Windows HLC +6.71 W/K (API vs Summary) — likely glazing_type=14
     not in Slice 93's `_API_GLAZING_TYPE_TO_TRANSMISSION` (only
     codes 3 and 13 mapped).
  2. HW kWh +1060 (API 3172.65 vs Summary 2112.00) — §4 subsystem
     gap; needs occupancy/shower/cylinder probe.

This commit stages the fixtures only — no tests added yet. The
follow-up slice should add a RED Layer 2 test (Summary path 1e-4
vs 61.5993) and proceed slice-by-slice.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-05-26 17:37:14 +00:00
parent c783a15ff1
commit 460f17352a
2 changed files with 510 additions and 0 deletions

Binary file not shown.

View file

@ -0,0 +1,510 @@
{
"uprn": 77055139,
"roofs": [
{
"description": "Pitched, 300 mm loft insulation",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
}
],
"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": 3,
"environmental_efficiency_rating": 3
},
"addendum": {
"addendum_numbers": [
15
],
"cavity_fill_recommended": "true"
},
"lighting": {
"description": "Good lighting efficiency",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"postcode": "M22 1AE",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "MANCHESTER",
"built_form": 4,
"created_at": "2026-05-21 14:56:08",
"door_count": 2,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"number_baths": 1,
"cylinder_size": 1,
"shower_outlets": [
{
"shower_wwhrs": 1,
"shower_outlet_type": 2
}
],
"number_baths_wwhrs": 0,
"water_heating_code": 901,
"water_heating_fuel": 26,
"secondary_fuel_type": 29,
"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": 10241
}
],
"immersion_heating_type": "NA",
"secondary_heating_type": 691,
"has_fixed_air_conditioning": "false"
},
"sap_version": 10.2,
"sap_windows": [
{
"pvc_frame": "true",
"orientation": 4,
"window_type": 1,
"glazing_type": 2,
"window_width": 1.92,
"window_height": 1.29,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"orientation": 4,
"window_type": 1,
"glazing_type": 2,
"window_width": 0.61,
"window_height": 1.29,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"orientation": 4,
"window_type": 1,
"glazing_type": 2,
"window_width": 0.46,
"window_height": 1.03,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"orientation": 4,
"window_type": 1,
"glazing_type": 2,
"window_width": 0.95,
"window_height": 1.26,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"orientation": 4,
"window_type": 1,
"glazing_type": 2,
"window_width": 1.93,
"window_height": 1.17,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"orientation": 8,
"window_type": 1,
"glazing_type": 2,
"window_width": 1.71,
"window_height": 1.15,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"orientation": 8,
"window_type": 1,
"glazing_type": 2,
"window_width": 0.44,
"window_height": 0.86,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"orientation": 8,
"window_type": 1,
"glazing_type": 2,
"window_width": 0.88,
"window_height": 1.18,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"orientation": 8,
"window_type": 1,
"glazing_type": 2,
"window_width": 1.39,
"window_height": 1.18,
"draught_proofed": "true",
"window_location": 0,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"orientation": 8,
"window_type": 1,
"glazing_type": 2,
"window_width": 2.23,
"window_height": 1.46,
"draught_proofed": "true",
"window_location": 1,
"window_wall_type": 1,
"permanent_shutters_present": "N",
"permanent_shutters_insulated": "N"
},
{
"pvc_frame": "true",
"orientation": 2,
"window_type": 1,
"glazing_type": 2,
"window_width": 0.4,
"window_height": 1.43,
"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": "Mid-terrace house",
"language_code": 1,
"pressure_test": 4,
"property_type": 0,
"address_line_1": "17 Summerfield Road",
"assessment_type": "RdSAP",
"completion_date": "2026-05-21",
"inspection_date": "2026-05-21",
"extensions_count": 1,
"measurement_type": 1,
"total_floor_area": 91,
"transaction_type": 5,
"conservatory_type": 1,
"heated_room_count": 5,
"registration_date": "2026-05-21",
"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": "Room heaters, electric",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"extract_fans_count": 2,
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"wall_dry_lined": "N",
"wall_thickness": 300,
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": {
"value": 2.44,
"quantity": "metres"
},
"floor_insulation": 1,
"total_floor_area": {
"value": 43.79,
"quantity": "square metres"
},
"party_wall_length": {
"value": 5.87,
"quantity": "metres"
},
"floor_construction": 1,
"heat_loss_perimeter": {
"value": 17.98,
"quantity": "metres"
}
},
{
"floor": 1,
"room_height": {
"value": 2.4,
"quantity": "metres"
},
"total_floor_area": {
"value": 43.79,
"quantity": "square metres"
},
"party_wall_length": {
"value": 11.74,
"quantity": "metres"
},
"heat_loss_perimeter": {
"value": 14.92,
"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": 300,
"floor_heat_loss": 7,
"roof_construction": 1,
"wall_construction": 4,
"building_part_number": 2,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": {
"value": 2.44,
"quantity": "metres"
},
"floor_insulation": 1,
"total_floor_area": {
"value": 2.98,
"quantity": "square metres"
},
"party_wall_length": {
"value": 0,
"quantity": "metres"
},
"floor_construction": 1,
"heat_loss_perimeter": {
"value": 4.93,
"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": 5,
"heating_cost_current": {
"value": 1260,
"currency": "GBP"
},
"insulated_door_count": 0,
"co2_emissions_current": 3.1,
"energy_rating_average": 60,
"energy_rating_current": 62,
"lighting_cost_current": {
"value": 58,
"currency": "GBP"
},
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"has_hot_water_cylinder": "false",
"heating_cost_potential": {
"value": 888,
"currency": "GBP"
},
"hot_water_cost_current": {
"value": 327,
"currency": "GBP"
},
"mechanical_ventilation": 0,
"percent_draughtproofed": 100,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": {
"value": 289,
"currency": "GBP"
},
"indicative_cost": "\u00a3900 - \u00a31,500",
"improvement_type": "B",
"improvement_details": {
"improvement_number": 6
},
"improvement_category": 5,
"energy_performance_rating": 68,
"environmental_impact_rating": 75
},
{
"sequence": 2,
"typical_saving": {
"value": 83,
"currency": "GBP"
},
"indicative_cost": "\u00a35,000 - \u00a310,000",
"improvement_type": "W2",
"improvement_details": {
"improvement_number": 58
},
"improvement_category": 5,
"energy_performance_rating": 70,
"environmental_impact_rating": 77
},
{
"sequence": 3,
"typical_saving": {
"value": 228,
"currency": "GBP"
},
"indicative_cost": "\u00a38,000 - \u00a310,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 5,
"energy_performance_rating": 74,
"environmental_impact_rating": 78
}
],
"co2_emissions_potential": 2.1,
"energy_rating_potential": 74,
"lighting_cost_potential": {
"value": 58,
"currency": "GBP"
},
"schema_version_original": "21.0.1",
"alternative_improvements": [
{
"sequence": 1,
"typical_saving": {
"value": 83,
"currency": "GBP"
},
"improvement_type": "Q2",
"improvement_details": {
"improvement_number": 55
},
"improvement_category": 6,
"energy_performance_rating": 70,
"environmental_impact_rating": 77
}
],
"hot_water_cost_potential": {
"value": 327,
"currency": "GBP"
},
"renewable_heat_incentive": {
"water_heating": 2477.21,
"space_heating_existing_dwelling": 10849.22
},
"draughtproofed_door_count": 2,
"energy_consumption_current": 199,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "5.02r0344",
"energy_consumption_potential": 133,
"environmental_impact_current": 68,
"current_energy_efficiency_band": "D",
"environmental_impact_potential": 78,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": 34,
"low_energy_fixed_lighting_bulbs_count": 10,
"incandescent_fixed_lighting_bulbs_count": 0
}