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

5.1 KiB
Raw Blame History

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.