feat(analyze): de-noise [LF] objects, central macros, separator scratch

Three false-alarm downgrades derived from validating on a larger multi-vendor
villa, each turning a false positive into an INFO note without hiding any real
defect:

- intent: divider/separator names (punctuation-only or a marker wrapped in it,
  e.g. "-----addition------", "---") classify as `scratch`, so a missing DPT on
  them is INFO, not a red error.
- analyze: typed GAs wired into Zennio "[LF] ... Data Entry" type-agnostic
  logic-function containers surface as INFO `dpt_on_logic_object` instead of a
  false `dpt_mismatch_co` warning.
- analyze: all-groups broadcast/central-macro commands surface as INFO
  `central_macro_no_status` instead of `missing_status_address`, since a fan-out
  broadcast has no single state to read back.

Adds a regression block covering all three; real DPT mismatches and real
missing-status gaps still warn. Unreleased; no version bump.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Nikolay Miroshnichenko
2026-07-01 13:55:37 +02:00
co-authored by Claude Opus 4.8
parent bc33273cd4
commit 87f065dde7
4 changed files with 128 additions and 6 deletions
+16
View File
@@ -6,6 +6,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
**Noise-reduction refinements from a 3646-GA multi-vendor villa.** Validated the tool on a
second real signed Zennio project (5× larger, no ETS Functions). Three de-noising rules,
each downgrading a false alarm to INFO without hiding any real problem — on that project
errors fell **36 → 32** and warnings **179 → 139**.
### Added
- **Divider/separator scratch detection** — commissioning placeholder names made only of
punctuation (`---`, `=====`) or a marker wrapped in it (`-----addition------`) now classify
as `scratch` intent, so a missing DPT on them is an INFO note, not a 🔴 error.
- **Logic-function object awareness** — a typed GA (e.g. 9.x temperature) wired into a Zennio
`[LF] … Data Entry` container (intentionally type-agnostic, raw 2-byte) surfaces as INFO
`dpt_on_logic_object` instead of a false `dpt_mismatch_co` warning.
- **Central-macro status tolerance** — all-groups broadcast commands (`Общее …`, `Все группы`,
`Все шторы - Стоп`) surface as INFO `central_macro_no_status` instead of a
`missing_status_address` warning, since a fan-out broadcast has no single state to read back.
## [0.2.0] — 2026-06-30
**Colour/climate entity assembly and GA-intent noise reduction.** Two feature tracks