feat(param_check): significance layer — a focus list of config-value outliers

Rank findings by significance: config_value (setpoint/hysteresis/time/threshold —
an odd device is usually a real mistake) vs config_flag (mode/type) vs label
(per-room text, often intentional). New focus list surfaces the config-value clear
outliers first. On a real 275-device project this turns 422 raw outliers into a
9-item focus that includes the thermostats whose init-setpoint differs from their
siblings. Multilingual name hints (EN/DE/RU). Test updated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Nikolay1
2026-07-14 22:28:32 +02:00
co-authored by Claude Opus 4.8
parent 81799169c5
commit 1e924ede6f
3 changed files with 53 additions and 11 deletions
+4
View File
@@ -75,6 +75,10 @@ def main():
assert h["majority_value"] == "5"
assert [d["value"] for d in h["odd_devices"]] == ["10"], h["odd_devices"]
assert h["odd_devices"][0]["address"] == "10"
# significance: "Hysteresis (K)" is a config VALUE -> shows up in focus
assert h["significance"] == "config_value", h["significance"]
assert r["focus_count"] >= 1
assert any(o["refid"].endswith("R-1") for o in r["focus"]), r["focus"]
# uniform param (mode, all "2") must NOT appear anywhere
assert not any(o["refid"].endswith("R-2") for o in r["clear_outliers"] + r["split_configs"])