Document second audit pass

Record findings, evidence, compatibility notes and remaining gaps in
AUDIT.md; add user-facing upgrade notes to README and update test
counts; note progress against Milestone 0 in ROADMAP. No version bump.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
buzeraandClaude Opus 5.5 committed 2026-10-26 21:21:43 +02:00
1 parent df69dc9645
commit af0a564279
3 files changed
+89 -1

No files matched your search

+33 -1
View File
@@ -128,6 +128,38 @@ Options to match your sensors, and verify fallback/recovery with an unavailable
source. Generic Thermostat remains the sole controller. No HAOS trial was performed.
## Unreleased: radiator-lag tracking and learner stability
See the second-pass section of [AUDIT.md](AUDIT.md). Still shadow-only; no new
options, translations or entities; the manifest version is unchanged.
- **Radiator lag now follows the relay.** Previously the lag estimate jumped to
fully hot or fully cold at each relay change, which biased the learned heating
coefficient low and gave wrong starting points to forecasts right after a boiler
cycle. A relay change between polls is now integrated at its timestamp.
- **Learning pauses briefly when the lag is unknown**: after an HA restart, a relay
outage, or two relay changes inside one five-minute poll. The Status attribute
`heat_lag_uncertainty` shows the error bound; learning resumes once it is at most
0.1, about 32 minutes after a restart. Forecasts continue meanwhile.
- **Long OFF periods no longer destabilize learning.** The learner's covariance is
bounded, so a summer without heating cannot make coefficients jump when heating
resumes, and older saved models with large covariance are loaded rather than reset.
- **Optional weather sources can be removed in Configure.** Clearing wind, cloud or
any additional metric now saves an empty list instead of restoring the old sources.
- The proposed-heat entity is no longer marked unavailable when only a
diagnostic weather sensor or the thermostat's current temperature changed during
the calculation.
- New Status attributes: `heat_lag`, `heat_lag_uncertainty`, `sample_result` (why the
last poll was or was not learned).
**After upgrading:** saved models load unchanged, but coefficients learned before
this change were fitted with the wrong lag. Expect them to re-converge over a few
days of heating and judge forecasts only on data after the upgrade, or delete and
re-add the integration for a clean model (this deletes learned data). After a
restart, check that `sample_result` moves from `lag_uncertain` to `learned` within
about 35 minutes. Generic Thermostat remains the sole relay controller. No HAOS
trial was performed.
## Developer checks and Forgejo/Gitea Actions
The HA Core test suite targets **Home Assistant 2025.12.0 on Python 3.13**,
@@ -142,7 +174,7 @@ python -m pip install -r requirements-test.txt
sh scripts/check.sh
```
The check script runs dependency consistency checks, 42 offline tests, 14 tests
The check script runs dependency consistency checks, 56 offline tests, 16 tests
using the real HA Core/fixture package, compilation, lightweight package metadata
and translation checks, and diff whitespace checks. A compatible DNS dependency
is pinned because pycares 5 breaks the older HA dependency's import. The script