mirror of
https://github.com/NickoScope/nickol-knx-mcp.git
synced 2026-09-29 19:31:12 +02:00
fix(P5): classifier dogfood round — range-map depth bug, fallback-DPT softness, RU terms
Building a deliberately messy synthetic house instantly exposed four real gaps: - _build_range_name_map: a middle group 0 starts at the same raw address as its main, so the modulo heuristic let "Вкл/Выкл" clobber "Освещение" and the main-range rescue silently died. Depth in the range tree decides now. - a category from a whole-main DPT fallback (e.g. 20.609 -> hvac) was treated as strong; only an exact (main,sub) table entry is strong now (is_exact_dpt). - DPT 1.010 start/stop marked soft: ventilation timers use it, not just shutters. - terms learned: Cyrillic а/с, сплит, вытяжк, яркост (RU only); weather/метео in sensor, and sensor now outranks hvac so weather-station temperature is a sensor, not an HVAC actuator. Real-project noise after the round: Minsk 1 outlier/685 GAs (was 31 pre-P5), demo 2/239, Razdory 46/3646. Regressions in test_domain_classifier. 13/13 green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
e9105d45aa
commit
3c086fe228
@@ -39,6 +39,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
parameters as the cross-cutting GAs they are. `explain_ga` shows the winning signal and tier; the HA
|
||||
generator still emits a switch for a now-HVAC simple on/off, so no device is dropped.
|
||||
|
||||
Dogfooding the classifier against a deliberately messy synthetic house then hardened it further:
|
||||
the **main-range name map no longer lets a "middle 0" clobber its main group's name** (both start at
|
||||
the same raw address, so the old modulo heuristic overwrote "Освещение" with "Вкл/Выкл" and the
|
||||
range rescue silently died — depth in the range tree decides now); a category that comes from a
|
||||
**whole-main-group DPT fallback is soft** (a guess by construction — only an exact `(main, sub)`
|
||||
table entry is strong), so a vendor enum like 20.609 no longer poses as authoritative HVAC;
|
||||
**DPT 1.010 start/stop is soft** (ventilation timers use it too, not just shutters); terms learned:
|
||||
Cyrillic **а/с**, **сплит**, **вытяжк**, **яркост** (RU only — EN "brightness" also means weather
|
||||
lux), meteo/weather (sensor now outranks hvac so "Метеостанция - Температура" is a sensor, not an
|
||||
HVAC actuator). Real-project noise after the round: Minsk 1 outlier / 685 GAs, demo 2 / 239.
|
||||
|
||||
### Added
|
||||
|
||||
- **Explainable aggregate scores** (`advanced.py`, `handover.py`). Every headline percentage now ships
|
||||
|
||||
Reference in New Issue
Block a user