docs: handover — golden SAP drive-to-zero priority (2130/7536); 0240 architectural

Add a CURRENT PRIORITY section: of 53 pinned golden certs, 3 have non-zero
SAP residual. 2130 (+0.85 cont) + 7536 (+0.57 cont) are real multi-part-wall
fabric over-predictions (the drive-to-zero targets, possibly one shared
cause). 0240 (-1) is architectural — the lodged 73 needs an unpreserved
2013+ pump; document the cause, do NOT re-pin (user decision).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-06-04 00:00:23 +00:00
parent b9bbcecb42
commit f50195ac54

View file

@ -6,14 +6,47 @@ state after closing the 0240 investigation and fixing the first of several
API-mapper/cascade bugs the audit surfaced.
- **Branch:** `feature/per-cert-mapper-validation`
- **HEAD:** `ee484d9f` (S0380.213). Confirm with `git rev-parse HEAD`.
- **HEAD:** `b9bbcecb` (docs after S0380.213). Confirm with `git rev-parse HEAD`.
- **Baseline:** `2386 passed, 1 skipped, 0 failed` (AGENT_GUIDE §4 suite command).
ALSO run `domain/sap10_ml/tests/` when touching `rdsap_uvalues.py` — 2 PRE-EXISTING
stone-formula failures there, see Thread 1.
- **Next slice number:** **S0380.214**.
- **Open:** Thread 2 *demand* tail only — 9390 ~7% demand over-count (SAP -2, PE 220 vs
205) = heat-source-efficiency-default / fabric residual. CO2/PE collision (S0380.212) +
standing charge (S0380.213) FIXED. Threads 1 + 3 **CLOSED**.
---
## ★ CURRENT PRIORITY — drive golden-fixture SAP residuals to ZERO
`_EXPECTATIONS` in `test_golden_fixtures.py` holds **53 pinned golden certs**. The suite
is GREEN. **Only 3 have a non-zero SAP integer residual**, and they split into two kinds:
| cert | lodged | cont SAP | resid | nature |
|---|---|---|---|---|
| **2130-1033-4050** | 82 | **83.349** | **+1** | REAL +0.85 over-prediction — multi-part **solid-brick** wall fabric |
| **7536-3827-0600** | 68 | **69.071** | **+1** | REAL +0.57 over-prediction — multi-bp **D/L/F cavity** wall fabric |
| **0240-0200-5706** | 73 | **72.462** | **1** | **ARCHITECTURAL — do NOT chase, do NOT re-pin** (see below) |
**The two real targets are 2130 + 7536.** Both are fabric *over*-predictions on **multi-part
wall** geometry (a wall with alternative-construction sub-areas / multiple building parts),
so they may share a single root cause in the §3 per-part wall area/U handling — a fix to
one could close both. Method: walk the §3 heat-transmission cascade per-part vs the lodged
register subsystem ratings (the certs are API-only — no worksheet — so the bar is ±0.5 SAP
vs lodged, but the goal is the integer flip 83→82 / 69→68, i.e. shave ~0.85 / ~0.57 off the
continuous SAP). If a multi-part-wall U or area is over-counted, that is the lever. The user
generates Elmhurst worksheets on request — ASK for a simulated case mirroring 2130's wall
(multi-part solid brick) rather than guess a U-value (the session methodology lesson).
**0240 (1) is NOT driveable from the JSON and the user has decided NOT to re-pin it —
document the cause only.** Continuous SAP is 72.462; the true SAP is **72**. The lodged
**73 requires a "2013 or later" circulation pump (41 kWh)**; 0240's open-data API lodges
`central_heating_pump_age=0` = **Unknown → 115 kWh**. The encoding was proven across 13
API+Summary pairs (`0`=Unknown, `2`=2013+). The export did not preserve the pump age that
produced the lodged 73, so 73 is unreachable without inventing data. Both fabric bugs that
masked it are now fixed (wall S0380.209 + roof S0380.211 → cont 72.462). **Leave the pin at
`actual_sap=73, expected_sap_resid=-1`; the notes already record this.** Driving it to zero
would mean fudging the pump age — don't.
Latent (lower priority): **9390** (community, 2, **unpinned**/retired) ~7% demand
over-count — see Thread 2.
---