mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
ADR-0010 §1: the file was a SAP 10.2 prices + SAP 10.3 CO2 hybrid,
incorrectly labelled "SAP 10.3" throughout. Realigns the CO2 column
to SAP 10.2 PDF page 189 — the table the calculator's Validation
Cohort certs were emitted against.
CO2 corrections (kg CO2e per kWh delivered):
- Mains gas: 0.214 → 0.210
- LPG (2, 3, 5, 9): 0.24 → 0.241 (precision restore)
- Biogas (7): 0.029 → 0.024
- HVO (71): 0.041 → 0.036
- FAME (73): 0.058 → 0.018
- B30K (75): 0.226 → 0.214
- Bioethanol (76): 0.072 → 0.105
- Coal / anthracite (11, 15): 0.398 → 0.395
- Smokeless (12): 0.398 → 0.366
- Wood logs (20): 0.023 → 0.028
- Wood pellets (22, 23): 0.048 → 0.053
- Wood chips (21): 0.018 → 0.023
- Dual fuel (10): 0.084 → 0.087
- Standard electricity (all grid tariffs):
0.086 → 0.136 (biggest swing — the
annual-average factor changes between
SAP 10.2 and 10.3 by -37%)
- Heat-network variants realigned to match their parent fuels
- _DEFAULT_CO2_KG_PER_KWH: 0.214 → 0.210
Header docstring rewritten:
- Re-labelled "SAP 10.2 (14-03-2025 amendment)"
- Dropped the misleading "+25% shift from SAP 10.2" block — those
13.19 → 16.49 figures were SAP 10.1 → SAP 10.2, not 10.2 → 10.3
- Notes the SAP 10.3 re-pointing trigger (corpus migration)
New test file packages/domain/src/domain/sap/tests/test_table_12.py
locks SAP 10.2 values for mains gas, standard electricity, 7h low,
24h heating, bulk LPG, heating oil, default, plus sanity checks
on the unchanged unit price + PE factor columns.
All 161 SAP + ml_training_data tests pass. CO2 corrections don't
affect SAP score (cost-driven) or PEUI (PEF-driven), so golden
fixtures and probe pinned values remain green.
P2 complete:
P2.1 (
|
||
|---|---|---|
| .. | ||
| src/domain | ||
| pyproject.toml | ||
| README.md | ||
domna-domain
Shared domain types — Property, Properties, BaselinePerformance, Plan, PlanPhase, Scenario, ScenarioPhase, ScenarioSnapshot, Recommendation, OptimisedPackage, EpcPropertyData, etc.
Boundary: types only. No persistence, no IO, no business logic. Other packages and services depend on domna-domain; this package depends on nothing internal.
Domain definitions live in ../../CONTEXT.md. New types added here must match the glossary terms.
Layout
src/domain/
├── __init__.py
├── property.py # Property, Properties, PropertyIdentity
├── site_notes.py
├── landlord_overrides.py
├── baseline_performance.py # lodged + effective pair (ADR-0004)
├── plan.py # Plan, PlanPhase, OptimisedPackage
├── scenario.py # Scenario, ScenarioPhase, ScenarioSnapshot (ADR-0005)
├── recommendation.py
├── geospatial.py
├── solar.py
├── anomaly_flags.py
└── ml/
├── __init__.py
├── transform.py # EpcMlTransform (versioned per §8.3)
└── schema.py
When datatypes/epc/domain/ folds in, the EPC schema types move under src/domain/epc/.