Wires SAP 10.2 Table 12 "Primary energy factor" column into Table 12 helpers and onto CalculatorInputs as three per-end-use factors (space heating, hot water, other). calculate_sap_from_inputs now emits primary_energy_kwh_per_yr and primary_energy_kwh_per_m2 on SapResult, matching the cert's `energy_consumption_current` field (PEUI). Triggered by a decomposition that revealed I'd been comparing our delivered energy to the cert's primary energy — apples to oranges. With proper primary-energy comparison the actual finding is: 300-cert primary-energy diff (cert calibration prices): energy MAE: 57.3 kWh/m² energy bias: +51.6 (we over-predict by ~50%) energy P50: +49.5 This is a much bigger systemic bug than the SAP MAE 5.34 suggested. Closing it requires investigating either (a) demand model over-prediction, (b) HW losses, (c) PEF values per fuel, or (d) cert reporting convention differences. Targeted for the next context. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| ara | ||
| ml_training_data | ||
| README.md | ||
Services
Each subdirectory is a deployable unit — typically a Lambda image. Own pyproject.toml, own Dockerfile, own deps. Lambda bundle contains only that service's deps + its workspace deps.
| Service | Purpose |
|---|---|
ara/ |
The Domna retrofit modelling backend — ingestion + modelling pipelines, all 9 services in PRD §9.2. |
Other Domna services (address2uprn, hubspot, pashub, ecmk, magicplan) live in the legacy backend/ and etl/ trees for now; they are slated to migrate here as their owners pick them up — see PRD §11. When that work starts, scaffold the service under services/<name>/ and add it to the workspace members in the root pyproject.toml.
Service boundary
A service can import domain.*, import repos.*, import fetchers.*, import utils.* (workspace deps). It cannot import another service's modules — they are separate distributions with no cross-import path. This is the structural enforcement of the modelling/ingestion separation (ADR-0003).