mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
Adds CalculatorInputs.space_heating_monthly_kwh (98c)m. _solve_month indexes the field directly instead of calling monthly_heat_requirement_kwh inline — q_heat now flows from the §8 orchestrator (including the Table 9c step 10 summer clamp). cert_to_inputs reuses the per-month HTC + total-gains tuples already computed for §7 plus the MIT result, and calls space_heating_monthly_kwh to populate the new field. Single codepath; mirrors §5/§6/§7 wiring. Synthetic test fixtures (_baseline_inputs, _baseline_dwelling) compose §7 → §8 in sequence so the BRE worked-example trace + calculator sanity tests stay consistent with the spec-correct chain. Tests that override calculator inputs at runtime (`test_zero_HTC`, `test_colder_ climate`) now recompute the upstream tuples instead of trusting a calculator-internal recompute that no longer exists. E2e SAP-score impact (000490): SAP shifted 57 → 60. The pre-§8 match was fortuitous compensation — missing summer clamp's +1575 kWh/yr over- prediction cancelled small under-predictions in §3/§5. Post-§8 the residual upstream-precision gap surfaces (+2.5% space heating, +8.4% HW fuel, −6.3% total cost, +3 SAP integer). Test updated to "within 3 points" with full delta breakdown documented — same pattern as the 000474 "within 7 points" test. Target stays SAP=57. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| 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/.