Model/scripts
Jun-te Kim 11a637c6bd test(accuracy): ratchet 77.0% -> 77.3% via unsized-cylinder storage-loss fix
A hot-water cylinder lodging gov-API `cylinder_size=0` ("size not
determined", with has_hot_water_cylinder=true) resolved to a None volume
in `_cylinder_storage_loss_override` (which reads `_cylinder_volume_l_
from_code`, returning None for code 0). The subsequent `if volume_l is
None: return None` then DROPPED the cylinder's Table-2 storage loss
entirely — under-costing the DHW and over-rating the dwelling. Meanwhile
the Table-13 high-rate-fraction path already used `_hot_water_cylinder_
volume_l` (which defaults size 0 to 110 L), so the two DHW paths
disagreed on the same cylinder.

RdSAP 10 §10.5 Table 28 ("if the actual size is not determined, the size
is taken as according to Table 28") makes an unsized present cylinder the
110 L "Normal" baseline, which STILL incurs the storage loss. Fixed by
defaulting the storage-loss volume to 110 L for the explicit size-0 case.

Gated on the EXPLICIT 0 (not None): a full-SAP cert whose RdSAP
cylinder_size is simply unlodged (None, e.g. pinned 10091568921) keeps
its own cylinder handling rather than a forced 110 L RdSAP default.

7 corpus certs lodge cylinder_size=0 + has_cylinder=true. Gauge: within
77.0% -> 77.3%, SAP MAE ~flat (0.648), CO2 0.074 -> 0.073, PE 3.2 -> 3.05
(the previously-dropped storage loss now correctly counted in the demand
cascade). Unit-pinned in test_cert_to_inputs (storage loss non-None for
size 0); RealCertExpectation 200004017091 = 71.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:02:27 +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 77.0% -> 77.3% via unsized-cylinder storage-loss fix 2026-07-02 23:02:27 +00:00
eon added floats helper 2026-06-12 14:28:41 +00:00
hyde docs(elmhurst): validate slice-5 wall fix against accredited Elmhurst worksheet (uprn 200004296092) 2026-07-02 20:49:58 +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