Adds the next-agent handover and the BRE technical papers referenced
by the cohort-2 negative-band investigation:
- `HANDOVER_TABLE_3A_NO_KEEP_HOT.md` — picks up from Slice S0380.20.
Covers cohort distribution at HEAD `4879e8c3`, the verified
Table 3a Row 1 spec formula `(61)m = 600 × fu × nm / 365`, the
dispatch recipe for `pcdb_combi_loss_override`, watch-outs (cert
0360 / cohort-1 cert 000490 behaviour after the slice lands), the
diagnostic probe script, test baselines, and the open-thread
priority list (Ext1 roof, HP-COP, big-gap 2102, API path, parity).
- `specs/STP09-B04_Combi_boiler_tests.pdf` — 2009 BRE methodology
paper (Alan Shiret, BRE) defining the combi-loss test programme
that produced the SAP Table 3a 600/900 kWh/yr keep-hot assumptions.
Source: https://bregroup.com/documents/d/bre-group/stp09-b04_combi
_boiler_tests.
- `specs/sap10 technical papers/S10TP-{02..13}.pdf` — full SAP 10
supporting technical paper set (Issue 1.2 / 1.3 / 1.4 across the
eight papers). S10TP-12 §9.4 confirms: "No changes to the SEDBUK
calculation method for water heating efficiency were considered
necessary" — so the STP09-B04 (SAP 2009) Table 3a methodology
carries through to SAP 10 unchanged.
These docs replace web-fetched references with locally-tracked copies
so the slice S0380.21 implementor can grep / pdftotext them directly.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Locality of reference — SAP-specific docs, specs, and runtime data
now live alongside the calculator that consumes them, mirroring the
prior packages→domain layout moves.
Move targets:
- Narrative MDs → domain/sap10_calculator/docs/
NEXT_AGENT_PROMPT.md, HANDOVER_NEXT.md, SAP_CALCULATOR.md
- Spec PDFs → domain/sap10_calculator/docs/specs/
RdSAP 10 Specification 10-06-2025.pdf
PCDF_Spec_Rev-06b_12_May_2021.pdf
sap-10-2-full-specification-2025-03-14.pdf
sap-10-3-full-specification-2026-01-13.pdf
- PCDB runtime data → domain/sap10_calculator/tables/pcdb/data/
pcdb10.dat (8.3MB) + 7× pcdb_table_*.jsonl (18MB total)
Path code rewrites (load-bearing):
- tables/pcdb/__init__.py: replaced parents[4]/'docs'/'sap-spec' with
Path(__file__).resolve().parent/'data' for Table 105 JSONL loading.
- tables/pcdb/postcode_weather.py: same rebase for the pcdb10.dat path
read by _postcode_climate_table().
- tables/pcdb/etl.py __main__: same rebase for the manual ETL invocation
(source + output_dir both now point inside the package).
- tests/test_pcdb_etl.py: _PCDB_DAT_PATH now derives from
parents[1]/'tables'/'pcdb'/'data' (was parents[3]/'docs'/'sap-spec').
Citation rewrites:
- 12 .py docstrings and 4 .md docs (ADRs + READMEs + narrative docs)
had `docs/sap-spec/<file>` strings rewritten to their new locations.
- Two cases where the catch-all sed misfired (an ADR-0009 line about a
PCDB extract; the pcdb __init__.py docstring about ETL output) were
hand-corrected to point at tables/pcdb/data/ rather than docs/specs/.
docs/sap-spec/ is now empty (will be removed in a follow-up sweep or
left as a vestigial empty dir for future repurposing). ADRs 0009 and
0010 remain at docs/adr/ — they're part of the chronological
cross-cutting decision log, not calculator-specific narrative.
Verified:
- Calculator's 1e-4 production gate
(test_api_001479_full_chain_sap_matches_worksheet_pdf_exactly) GREEN.
- Wider sweep (domain/sap10_calculator/ + domain/sap10_ml/): 1654
passed / 20 failed — exact pre-move baseline. All 20 failures
pre-existing (10 hand-built skeleton + 4 cohort chain + 6 cohort
diff).
- Pyright net-zero on the 4 touched runtime/test files (0 errors)
and unchanged on heat_transmission.py (13) / cert_to_inputs.py (35) /
mapper.py (33).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>