Model/scripts/hyde/autonomous_run_findings.md
Jun-te Kim 5669676917 Annotate full worklist with autonomous-run triage results
Every worklist UPRN now carries schema · engine SAP / lodged · flag. Tally:
64 healthy, 19 MVHR-not-credited (🚩 flag B), 6 heat-pump fuel-39 (🚩 flag A),
4 sparse/NOT MAPPABLE (), 3 Elmhurst-pinned. MVHR is the largest accuracy gap.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 20:36:28 +00:00

91 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Autonomous corpus run — findings for review (2026-06-16)
> ## 🚩 MANUAL REVIEW NEEDED — heat-pump fuel code 39 mis-priced (CALCULATOR)
> **Owner action required.** Database heat-pump certs (fuel code 39) are priced
> at the **gas** rate instead of electricity → SAP over-rated by ~14
> (uprn_10093114053: eng 93 vs lodged 79). Root cause + evidence in §"BUGS" below
> and memory `heat-pump-fuel-39-mispriced`. NOT auto-fixable: the correct
> electricity tariff for a database heat pump (standard code 30 vs a heat-pump
> tariff) is a SAP-domain judgement and it touches the Table-12a off-peak split.
> Decide the tariff, then it's a normal TDD fix. Affects every fuel-39 cert.
Triaged the full remaining worklist (~95 UPRNs): capture → map → engine SAP,
flagging |englodged| ≥ 8. Most certs map within ±4 of lodged. The worklist is
fully annotated per-UPRN (schema · eng/lodged · flag).
## Corpus-wide tally (after annotation)
| Bucket | Count |
|---|---|
| Mapped, healthy (within tolerance) | 64 |
| 🚩 **MVHR not credited** (flag B) | **19** ← biggest |
| 🚩 heat-pump fuel-39 (flag A) | 6 |
| ⛔ sparse / NOT MAPPABLE | 4 |
| ⚠ other moderate gap (undiagnosed) | 1 |
| ✅ Elmhurst-pinned | 3 |
## ✅ Schema coverage ADDED this run (low-risk, tested, committed)
- **SAP-18.0.0** → full-SAP shape, dispatched to `from_sap_schema_17_1` (no
normalisation). Maps fine (e.g. 10094601287 → 80/lodged 84).
- **SAP-16.0** → same reduced-field 16.x path; only omitted `tenure`, now
defaulted in `_normalize_sap_schema_16_x`. Maps (100020933894 → 61/lodged 56).
- (16.2/16.3/17.0 were added earlier in the session.)
## ⛔ Genuinely SPARSE 16.x certs (insufficient data — cannot score)
Missing 18 required fields incl. core fabric (glazed_area, window, door_count,
habitable_room_count, multiple_glazing_type). Fail loud at from_dict (correct):
- uprn_10090844948 (16.3), uprn_10014314798 (16.2), uprn_10014314853 (16.3),
uprn_10014314830 (16.2). These are minimal "reduced-data" lodgements.
## 🐞 BUGS FOUND (diagnosed; NOT fixed — for your review)
### 1. Opening dimensions in millimetres read as metres — MAPPER bug (SEVERE) ✅ FIXED
**FIXED** (TDD, `_sanitise_opening_dimension_m` + `_sap_opening_area_m2`): any opening
dimension > 50 m is mm → ÷1000. Applied to windows, roof windows, and the door
area-weighting. The 3 broken certs now score 90 / 81 / 79 (were all 1). 3 RED→GREEN
slices + refactor; fixture sap_17_1_mm_openings.json; 0 new pyright errors.
Original report below.
Full-SAP certs whose `sap_building_parts[].sap_openings[]` lodge width/height in
**mm** (mixed with metre rows in the same array) → the 17.1 mapper treats all as
metres → multi-million-m² windows → HTC in the millions → **SAP clamps to 1**.
- **uprn_10093117227** (eng 1 / lodged 80): opening "Side Elevation" 2025×2100 (mm)
- **uprn_10090317693** (eng 1 / lodged 88): 940×2100, 700×1500 (mm)
- **uprn_10091636031** (eng 1 / lodged 85)
- Fix idea: sanitise `sap_openings` dims in `_sap_17_1_windows`/doors — any
dimension > ~50 m is impossible → it's mm, ÷1000. Cleanly separates the mm rows
(1000/2025/2100) from the m rows (3.06/3.6/1). Safe, high-value (3+ certs broken).
### 2. Heat-pump fuel code 39 mis-priced as gas — CALCULATOR bug
- **uprn_10093114053** (eng 93 / lodged 79, +14): PCDB heat pump COP 3.33, fuel 39.
- Code 39 absent from `table_12.UNIT_PRICE_P_PER_KWH` → gas default 3.64p; CO2
factor correctly electricity (0.136). Inconsistent across price vs Table-12a.
- Affects ALL database heat-pump certs (fuel 39). See memory
`heat-pump-fuel-39-mispriced`. Needs SAP-domain confirmation of the correct
electricity tariff (standard 30 vs heat-pump) → not an autonomous fix.
## ⚠ MODERATE gaps — now CLASSIFIED into two patterns
### Pattern A — heat-pump fuel-39 / high-COP certs (= bug #2, both directions)
- uprn_10090342180 (fuel 39): +9 (over-rates, classic fuel-39 mispricing)
- uprn_10093388053 (fuel 39): 7 · uprn_100090108846 (fuel 29 HP, COP 3.44): 15
- All resolve once the heat-pump fuel pricing is fixed (🚩 review item above).
### Pattern B — 🚩 MVHR heat recovery NOT modelled — CALCULATOR gap (NEW, REVIEW)
Full-SAP **gas** certs that UNDER-predict 6…12 ALL carry an **MVHR system index**
(`mechanical_vent_system_index_number` 500352 / 500230 / 500438 …). MVHR recovers
exhaust heat (big SAP boost), but the engine models mechanical ventilation as
**extract heat loss, not heat recovery** (same as the worked-ref note: "decentralised
MEV → EXTRACT_OR_PIV_OUTSIDE, priced as extract loss"). So every MVHR cert is
systematically under-credited.
- uprn_10090343767 (12), 10090341811 (9), 10093386427 (9), 202211170 (7),
10091636116 (8), 10093049867 (6), 10090034761 (6), 10091636031 (6).
- Needs the SAP Appendix Q / PCDB MVHR heat-recovery efficiency model — a feature,
not a one-line fix. See memory `mvhr-heat-recovery-not-modelled`.
### Other
- uprn_100061086424 (RdSAP-17.0, fuel 29, 15): not yet diagnosed (off-peak electric).
## NOT diagnosed individually
The ~70 within-±4 certs are not listed; they look healthy.