Model/tests/domain/epc_prediction
Khalim Conn-Kowlessar f2f954f459 feat(epc-prediction): slice-5d target assembly + eligibility gate
build_prediction_target assembles an EPC-less Property's PredictionTarget from
its identity (postcode), resolved coordinates, and Landlord-Override attributes
(property_type / built_form / wall_construction). The eligibility GATE: a Property
whose property_type is unknown returns None — never sized from a mixed-type
cohort (ADR-0031). property_type is the hard cohort filter.

The override attributes are read through a PredictionTargetAttributesReader port
(stub seam) — the real adapter (a read over property_overrides) is being built
separately by the team; ingestion wiring depends on the abstraction and tests
substitute a fake. 2 tests (assembly + gate); pyright strict clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 03:56:57 +00:00
..
__init__.py feat(epc-prediction): Comparable Properties selection ladder (ADR-0029) 2026-06-13 23:44:57 +00:00
test_comparable_properties.py fix(epc-prediction): dedupe re-lodgements + leak-free leave-one-out (ADR-0029) 2026-06-14 00:40:23 +00:00
test_component_accuracy_gate.py feat(epc-prediction): geo-proximity-weighted floor-area median 2026-06-16 00:08:05 +00:00
test_epc_prediction.py feat(epc-prediction): geo-proximity-weighted floor-area median 2026-06-16 00:08:05 +00:00
test_prediction_comparison.py feat(epc-prediction): roof-insulation +/-1-bucket reporting 2026-06-15 14:04:18 +00:00
test_prediction_target.py feat(epc-prediction): slice-5d target assembly + eligibility gate 2026-06-16 03:56:57 +00:00
test_validation.py refactor(epc-prediction): extract shared leave-one-out scorer + corpus loader (ADR-0030) 2026-06-14 09:12:08 +00:00