Model/scripts
Jun-te Kim 0e784cbb1c test(accuracy): ratchet SAP MAE 0.658 -> 0.647 via wall added-insulation unknown-thickness default
A SOLID-BRICK or STONE wall lodging External/Internal insulation
(wall_insulation_type 1/3) but no measured insulation thickness (gov-API
"NI" -> None) was billed at its UNINSULATED §5.6/Table-6 U-value: the §5.8
added-insulation R-value adjustment gates on `insulation_thickness_mm > 0`,
so an unknown thickness fell straight through to the raw solid-wall U
(~1.4-1.7). This over-counted wall heat loss and under-rated the dwelling.

RdSAP 10 §5.4 (PDF p.32): "the U-value with additional insulation is based
on the thickness of insulation of mineral wool type (assume 100 mm if
thickness is unknown)". Apply that 100 mm default so the §5.8 Table-14
R-value fires. Scoped to solid brick / stone (the only constructions with
a §5.8 R-value path in u_wall) so cavity (composite path) and timber /
system-built walls are untouched.

Localised by deep-diving corpus cert 200004296092 (end-terrace, solid
brick 360 mm "with external insulation", NI): walls 101.7 W/K (U~1.40,
HLP 3.46 = absurd for an insulated wall) -> ~0.29; PE +59.6 -> ~0; engine
64.35 (Δ -6.65) -> 71.74 = lodged 71. ~8 solid-brick/stone corpus certs
carry this NI-thickness-with-insulation shape.

Gauge: within-0.5 held at 77.0%, SAP MAE 0.658 -> 0.647, CO2 0.074 ->
0.073, PE 3.2 -> 3.1 (floor ratcheted). Unit-pinned in test_rdsap_uvalues
(brick 360 mm external NI -> 0.29) + RealCertExpectation 200004296092 = 72.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 20:24:56 +00:00
..
audit Audit check: lodged cylinder with unresolvable insulation drops storage loss 2026-07-02 15:27:15 +00:00
corpus_1000 test(accuracy): ratchet SAP MAE 0.658 -> 0.647 via wall added-insulation unknown-thickness default 2026-07-02 20:24:56 +00:00
eon added floats helper 2026-06-12 14:28:41 +00:00
hyde docs: full-SAP baseline-downgrade follow-ups + Case A population sweep tool 2026-06-25 21:45:44 +00:00
lisasrequest Backfill uniform secondary-glazing overrides misfiled as Single glazing 2026-07-02 11:12:25 +00:00
analyse_api_sap_clusters.py scripts: promote the API SAP-accuracy toolkit from /tmp 2026-06-04 16:52:09 +00:00
build_epc_prediction_fixture.py feat(epc-prediction): geo-proximity weighting, per-component (#1227) 2026-06-15 14:58:42 +00:00
compare_epc_paths.py Validate SAP calculator vs Elmhurst; fix reduced-field window U; add accuracy harness 2026-06-15 15:26:11 +00:00
data_exports.py Add scripts/data_exports.py: principal-pitch export on the new DDD model 2026-06-30 17:39:46 +00:00
decompose_api_cost_error.py feat(diag): per-component cost decomposition for API SAP errors 2026-06-06 17:37:05 +00:00
decompose_co2_pe_error.py fix(heat-network): apply Table 4c(3) flat-rate charging factor to demand 2026-06-14 01:54:51 +00:00
dive_cert.py chore(scripts): triage PE/CO2 on the demand cascade in the corpus profilers 2026-06-18 14:21:00 +00:00
download_cotality_evidence.py new methods for downloading all core files for pashub URL. Download currently not being authorised 2026-03-24 08:47:59 +00:00
e2e_common.py feat(scripts): add full AraFirstRunPipeline local runner 2026-06-16 23:45:23 +00:00
elmhurst_input_sheet.py rename mains_gas to gas_connection_available 2026-07-01 10:50:58 +00:00
eval_api_sap_accuracy.py scripts: promote the API SAP-accuracy toolkit from /tmp 2026-06-04 16:52:09 +00:00
failed_modelling_e2e.md missing files 2026-06-23 12:25:52 +00:00
fetch_2026_epc_sample.py scripts: promote the API SAP-accuracy toolkit from /tmp 2026-06-04 16:52:09 +00:00
fetch_cohort2_api_jsons.py Move sap10_calculator tests to tests/domain/sap10_calculator/ for CI 2026-06-02 16:58:00 +00:00
fetch_corpus_coordinates.py feat(epc-prediction): thread coordinates onto Comparable + target (#1227) 2026-06-15 14:46:01 +00:00
fetch_epc_bulk_sample.py feat(modelling): sample a year from the EPC bulk export, offline-ready 2026-06-04 12:20:57 +00:00
fetch_epc_dump.py feat(modelling): CLI to fetch an EPC dump + build the inspection report 2026-06-04 11:26:17 +00:00
fetch_epc_prediction_corpus.py refactor(epc-prediction): PR review — rename ComparableProperty, relocate PredictionTarget 2026-06-16 13:34:44 +00:00
fetch_epc_prediction_dense_corpus.py chore(epc-prediction): dense-corpus fetcher + cross-postcode geo no-go 2026-06-16 03:03:15 +00:00
fetch_real_life_epc_sample.py Validate SAP calculator vs Elmhurst; fix reduced-field window U; add accuracy harness 2026-06-15 15:26:11 +00:00
fill_domna_addresses.py Resolve a landlord mains-gas override to the primary fuel code 🟩 2026-06-19 12:15:54 +00:00
finalise_to_property_table.py Resolve a landlord mains-gas override to the primary fuel code 🟩 2026-06-19 12:15:54 +00:00
historic_epc_demo.py added type hinting to uprn 2026-05-12 09:40:12 +00:00
hyde_epc_schema_versions.py Resolve a landlord mains-gas override to the primary fuel code 🟩 2026-06-19 12:15:54 +00:00
init_db.py init db 2026-03-31 11:45:59 +00:00
inspect_overlay.py move overlas to its own thing 2026-06-18 10:04:14 +00:00
list_properties_by_postcode.py tweak script to use provided input. track output in md file 2026-06-23 10:27:39 +00:00
north_northamptonshire_properties_by_postcode_812.txt allow for multiple scenarios for 1 portfolio without ignoring all properties in second scenario 2026-06-26 11:24:26 +00:00
null_predicted_lodged_performance.py Backfill the phantom Lodged Performance on predicted Properties to NULL 🟩 2026-06-30 22:17:57 +00:00
profile_api_error.py feat(diag): profile API SAP error against raw-API characteristics 2026-06-07 20:38:19 +00:00
profile_case34.py docs(profile-case34): mark the space-demand residual closed (450e33e1) 2026-06-11 09:01:41 +00:00
profile_corpus_error.py chore(tooling): add median column to corpus profiler; document shutter non-implementation 2026-06-23 08:46:00 +00:00
properties_by_postcode_796.txt tweak script to use provided input. track output in md file 2026-06-23 10:27:39 +00:00
query_failed_modelling_e2e.py solar + more logs 2026-06-23 18:07:10 +00:00
reclassify_flat_roof_thickness.py Re-classify flat-roof overrides with a known depth onto their thickness member 🟩 2026-07-01 10:19:09 +00:00
reclassify_heating_overrides.py One-time script to re-classify stale heating overrides 2026-06-30 20:30:59 +00:00
reclassify_main_heating.py Reclassify electric-underfloor overrides via the generalized main-heating reclassify 🟩 2026-07-01 16:51:22 +00:00
reclassify_mixed_glazing.py Re-classify aggregate-mix glazing overrides flattened to Double onto MIXED 🟩 2026-07-01 11:09:42 +00:00
reclassify_party_ceiling_roofs.py Re-classify party-ceiling roof overrides mis-read as external roofs 🟩 2026-07-01 09:46:01 +00:00
reclassify_water_heating.py Re-map house-coal water-heating overrides onto faithful biomass and immersion archetypes 🟩 2026-07-01 13:59:44 +00:00
resolve_uprns_for_finaliser.py Resolve a landlord mains-gas override to the primary fuel code 🟩 2026-06-19 12:15:54 +00:00
run_audit_generator_local.py empty commit to trigger workflows 2026-06-11 09:32:14 +00:00
run_first_run_e2e.py feat(scripts): add full AraFirstRunPipeline local runner 2026-06-16 23:45:23 +00:00
run_modelling_cohort.py feat(modelling): turnkey offline cohort script (tables + CSV) 2026-06-04 09:30:53 +00:00
run_modelling_e2e.py docs(adr): record nearby-postcode broadening (0034) + share HTTP retry primitive 2026-06-23 16:54:06 +00:00
run_property_report.py feat(modelling): CLI to fetch an EPC dump + build the inspection report 2026-06-04 11:26:17 +00:00
summary_to_sap.py chore(debug): summary_to_sap.py — Elmhurst Summary PDF -> our SAP + trail 🟪 2026-06-28 21:26:30 +00:00
trigger_modelling_e2e_sqs.py decrease lambda concurrency from 32 to 12 2026-06-29 13:32:53 +00:00
validate_epc_prediction.py refactor(epc-prediction): PR review — rename ComparableProperty, relocate PredictionTarget 2026-06-16 13:34:44 +00:00