mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
`_CYLINDER_SIZE_CODE_TO_LITRES` held only codes 2/3/4 (Normal/Medium/Large → 110/160/210 L); codes 5 (Inaccessible) and 6 (Exact) fell through to None, so the Table-13 high-rate fraction AND the cylinder storage loss were skipped for those certs (20 code-6 certs in the API sample). Per RdSAP 10 Specification (10-06-2025) §10.5 Table 28 (PDF p.55): - Code 6 "Exact": use the lodged measured volume. The gov API carries it in `cylinder_size_measured` (e.g. 150 L) — now plumbed through the 21.0.0/21.0.1 schema → mapper → `SapHeating.cylinder_volume_measured_l`. - Code 5 "Inaccessible": 210 L if off-peak electric dual immersion, 160 L from a solid-fuel boiler, otherwise 110 L (n=0 in the current sample, but spec-complete). New `_cylinder_volume_l_from_code` centralises Table 28 resolution and replaces the three raw-dict call sites (`_hot_water_cylinder_volume_l`, the cylinder storage-loss path, and the PCDB performance check) so all three honour codes 5/6 identically. `_cylinder_inaccessible_volume_l` applies the code-5 context rule via the existing immersion/off-peak-meter/solid-fuel-boiler detectors. Worksheet harness UNAFFECTED (47/47, 0 divergers): the Summary path lodges neither code 5/6 nor a measured volume. API gauge: within-0.5 64.4% -> 65.1% (mean|err| 1.085 -> 1.075) — the 20 code-6 certs now size their cylinder from the measured volume. 4 AAA tests (code 6 measured; code 5 solid-fuel/default/ off-peak-dual-immersion). pyright net-zero. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| applications | ||
| domain | ||
| infrastructure | ||
| orchestration | ||
| repositories | ||
| utilities | ||
| __init__.py | ||
| conftest.py | ||
| test_lambda_packaging.py | ||