mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
MainFuelType had no individual wood-logs member — only "biomass (community)" — so the LLM classifier funnelled "Solid Fuel: Wood Logs" into the community fuel, inventing a community heat network the dwelling isn't on (and mislabelling the connection). main_fuel had no deterministic guard at all, so nothing caught it. Verified against domain/sap10_calculator/docs/specs: RdSAP 10 Specification Table 32 lists "wood logs" as a solid fuel (code 20, 0.028 kgCO2e/kWh); the calculator's input scheme (the gov EPC API fuel enum) codes it 6 -> Table 32 20 (sap_efficiencies._API_TO_TABLE32), and water_heating_overlay already pins the same fuel to 6. So _FUEL_CODES["wood logs"] = 6 is confirmed, not guessed. Adds MainFuelType.WOOD_LOGS + the _FUEL_CODES entry, a main_fuel_guard mirroring water_heating_guard (claims the "wood log" token; dual fuel keeps its own member since it has no "wood log" substring), and wires main_fuel through a GuardedColumnClassifier so the live path is deterministic. Applied the scoped backfill to portfolio 796 (Hyde): 21 rows off "biomass (community)" -> "wood logs". property_overrides (TEXT) only; the classifier-cache pgEnum member is deferred to the FE Drizzle migration. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| addresses | ||
| billing | ||
| data_transformation | ||
| elmhurst | ||
| epc | ||
| epc_prediction | ||
| fuel_rates | ||
| geospatial | ||
| magicplan | ||
| modelling | ||
| property | ||
| property_baseline | ||
| sap10_calculator | ||
| sap10_ml | ||
| tasks | ||
| building_geometry.py | ||
| postcode.py | ||