mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
Review findings on PR #1527: - The 'which goals are goal-aligned' set lived in two adjacent if-chains (_objective_for and _require_budget_for_goal_aligned) that had to stay in sync — a new goal-aligned goal added to one but not the other would slip the budget guard. Both now read a single _GOAL_ALIGNED_OBJECTIVES table. - The goal strings are the canonical PortfolioGoal enum values, not re-declared string constants, so goal-value drift can't silently degrade a goal to max-SAP; _target_sap reads the enum too. - _scored_candidate_groups takes objective without a default (its only caller passes it). - scoring.py: 'cached: float | None' -> Optional[float] per the CLAUDE.md 'Use Optional over | None' rule. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| generators | ||
| optimisation | ||
| scoring | ||
| __init__.py | ||
| ashp_rates.json | ||
| considered_measures.py | ||
| contingencies.py | ||
| heating_rates.json | ||
| measure_type.py | ||
| plan.py | ||
| portfolio_goal.py | ||
| product.py | ||
| products.py | ||
| recommendation.py | ||
| scenario.py | ||
| simulation.py | ||
| solar_potential.py | ||
| solar_rates.json | ||
| valuation.py | ||