feat: GA-intent classification to cut real-project noise (Track D)

Classify every group address as functional/reserve/logic/scratch (intent.py)
and reclassify intentional non-functional GAs instead of crying wolf:
- reserve spare with no DPT -> INFO reserve_without_dpt (not a missing_dpt error)
- reserve name reused across DPTs -> no duplicate_name / inconsistent_dpt
- logic/virtual + scratch GAs -> excluded from missing-status warnings
dpt_mismatch_co and all real functional findings are untouched.

Driven by a real 685-GA Zennio project: false errors 29 -> 6,
missing-status noise 79 -> 45, all 12 real dpt_mismatch_co catches preserved.
Intent breakdown now exposed via list_group_addresses, report inventory and
the analyze_all summary. New regression test covers the reserve/logic/scratch
patterns and proves real DPT + status problems still surface.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Nikolay Miroshnichenko
2026-06-30 19:48:28 +02:00
co-authored by Claude Opus 4.8
parent 9a8d87869a
commit 2ffb6d371f
7 changed files with 192 additions and 7 deletions
+11
View File
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added
- **GA-intent classification — noise reduction on real projects** (`intent.py`). Every group
address is now classified as `functional` / `reserve` / `logic` / `scratch`. Intentional
non-functional GAs no longer "cry wolf": reserve spares with no DPT become an INFO note
(`reserve_without_dpt`) instead of a 🔴 error; reserve names repeated across different DPTs
are not flagged `duplicate_name` / `inconsistent_dpt`; internal logic / virtual signals and
scratch leftovers are excluded from missing-status warnings. The `dpt_mismatch_co` check and
every real functional finding are untouched. Driven by a real 685-GA Zennio project where
this cut false errors **29 → 6** and missing-status noise **79 → 45** while preserving all
12 real `dpt_mismatch_co` catches. `list_group_addresses`, the report inventory and the
`analyze_all` summary now expose the intent breakdown. New regression test covers the
reserve / logic / scratch patterns (and proves real DPT + status problems still surface).
- `docs/` — a self-contained GitHub Pages landing site (project overview, two-layer
architecture, demo-house stats, an interactive 5-tab dashboard preview, the HA "brain",
and a call for testers).