Model/domain/modelling/generators
Khalim Conn-Kowlessar 276dd1a500 feat(modelling): planning protection picks secondary over double glazing
Slice 3 of the glazing generator (ADR-0022): a conservation/listed/heritage
protection (PlanningRestrictions.blocks_external) hard-picks secondary_glazing
instead of double_glazing -- an internal second pane, since the external units
can't be replaced on a protected building. Each single-glazed window upgrades
to the secondary target pinned from cert 001431 (glazing_type=7, u_value=2.90,
solar_transmittance=0.85 -- the outer single pane still drives solar gain).

The before/after cascade pins for both measures remain deferred behind the
glazing-label mapper coverage (owned by another agent).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 09:18:17 +00:00
..
__init__.py refactor(modelling): group domain/modelling into generators/scoring/optimisation 2026-06-03 13:48:36 +00:00
floor_recommendation.py feat(modelling): persist recommendation.material_id from the catalogue 2026-06-04 08:26:58 +00:00
glazing_recommendation.py feat(modelling): planning protection picks secondary over double glazing 2026-06-05 09:18:17 +00:00
roof_recommendation.py feat(modelling): roof dispatcher insulates a flat roof 2026-06-04 21:16:00 +00:00
solid_wall_recommendation.py feat(modelling): system-built walls take EWI+IWI (blocked on basement-code fix) 2026-06-04 18:26:08 +00:00
ventilation_recommendation.py feat(modelling): persist recommendation.material_id from the catalogue 2026-06-04 08:26:58 +00:00
wall_recommendation.py feat(modelling): persist recommendation.material_id from the catalogue 2026-06-04 08:26:58 +00:00