Model/tests/infrastructure
Khalim Conn-Kowlessar 3f6129afc6 Bill a sheltered wall to a stairwell at Ru 2.1, not the corridor 0.5 🟩
RdSAP 10 §5.9 "U-values of sheltered walls" (PDF p.43): a wall between a
flat/maisonette and an unheated buffer takes SAP 10.2 §3.3's U = 1/(1/U0 + Ru),
and Ru depends on the BUFFER TYPE — "Use Ru = 0.5 m²K/W for corridors and
Ru = 2.1 m²K/W for stairwell."

The buffer type is lodged on `SapFlatDetails.heat_loss_corridor` (0-based per
item 1-11, PDF p.70: 0 none, 1 heated, 2 unheated corridor, 3 unheated
stairwell). That field was read NOWHERE under domain/ — corridor presence was
inferred only from a lodged sheltered alternative wall — so every sheltered wall
took the corridor 0.5 and every stairwell flat over-billed its sheltered wall,
under-rating the dwelling.

Distinct from `_SHELTERED_GABLE_ADDED_RESISTANCE_M2K_W`, which is RdSAP 10
Table 4 (p.22) for a room-in-roof sheltered gable — same 0.5, different rule,
deliberately untouched.

Corpus gauge ratcheted UP: within-0.5 78.8% -> 79.8% (+10 certs), SAP MAE
0.626 -> 0.613, PE MAE 2.9 -> 2.8. Failure set and pyright count identical to
main. Portfolio 824 is stairwell-heavy (60 properties at code 3); property
749898 over-bills 4.44 W/K on a 48 m2 flat.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 22:02:31 +00:00
..
abri Always send a bookable resource on Abri amend_job 2026-07-10 10:37:35 +00:00
chatgpt Group landlord property-override enums under domain/epc/property_overrides 🟪 2026-06-19 14:49:58 +00:00
email Bulk download: readable email, deal-name folders, visible worker logs 2026-07-08 15:02:38 +00:00
epc_client Bill a sheltered wall to a stairwell at Ru 2.1, not the corridor 0.5 🟩 2026-07-21 22:02:31 +00:00
magic_plan define MagicPlanConfig class to get environment variables 2026-06-05 15:46:32 +00:00
postcodes_io docs(adr): record nearby-postcode broadening (0034) + share HTTP retry primitive 2026-06-23 16:54:06 +00:00
postgres UploadedFile, FileTypeEnum, FileSourceEnum importable from infrastructure.postgres.uploaded_file_table 🟥 2026-06-09 11:42:53 +00:00
solar Pace Solar calls per container to stay under the 600 QPM fleet cap 🟥 2026-06-25 15:59:00 +00:00
__init__.py get rid of comments 2026-05-20 13:21:11 +00:00
conftest.py get rid of comments 2026-05-20 13:21:11 +00:00
test_address2uprn_queue_client.py tests framework completed 2026-05-20 14:00:19 +00:00
test_csv_s3_client.py updated rdsap option; seperated s3 location in infrastrucutre; added open ai api 2026-05-22 14:00:33 +00:00
test_gzip_csv_s3_client.py historic EPC: read via infrastructure/s3, not the utils.s3 utility 2026-06-30 09:19:57 +00:00
test_http_retry.py Add opt-in full-jitter backoff to de-synchronise concurrent retries 🟩 2026-06-25 10:45:00 +00:00
test_s3_client.py Stream a local file to S3 with managed multipart upload 🟥 2026-07-08 09:50:10 +00:00
test_s3_document_downloader.py PR review: best-effort read path, true per-member streaming, race-safe 409, local email 🟩 2026-07-08 11:08:46 +00:00
test_s3_uri.py updated rdsap option; seperated s3 location in infrastrucutre; added open ai api 2026-05-22 14:00:33 +00:00
test_sqs_client.py tests framework completed 2026-05-20 14:00:19 +00:00