Release 0.2.2

Bump the manifest to 0.2.2 and add CHANGELOG.md with upgrade, reset and
rollback notes covering all reliability work since 0.2.1. The README
drops its accumulated "Unreleased" sections in favor of the changelog
and gains a Diagnostics section explaining the Status attributes and how
to choose freshness limits. The package check now fails if the manifest
version has no changelog entry. ROADMAP marks the Milestone 0 items now
backed by tests and resets the next-session backlog; AUDIT.md records
this round's findings.

Still observation-only. Tested in the HA Core harness with HA 2025.12.0
and 2026.2.3; not on HAOS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
buzeraandClaude Opus 5.5 committed 2026-10-26 21:55:02 +02:00
1 parent 67fbda79a6
commit cd8b65ac2f
6 files changed
+236 -145

No files matched your search

+25 -10
View File
@@ -10,6 +10,9 @@ Success means predictable comfort, understandable decisions, safe operation and
## Current baseline — v0.2.1
> **Current release: 0.2.2** — Milestone 0 reliability work on top of this
> baseline; see [CHANGELOG.md](CHANGELOG.md). The lists below describe 0.2.1.
**Implemented (experimental):**
- [x] Native Home Assistant integration with UI-based Config Flow and Options Flow.
@@ -41,14 +44,14 @@ Current behavior: **shadow mode only**. `generic_thermostat` remains the one and
- [x] Perform a source audit of v0.2.1: pure model, optimizer, config/options, coordinator update timing, persistent model and entity lifecycle.
- [x] Add Home Assistant test harness coverage for initial setup, update, restart/reload, options changes, missing sensors, `heat/off`, target changes, teardown and uninstall.
- [ ] Verify that **zero physical-device service calls** occur in observation mode, including restart and failed update cases.
- [ ] Establish deterministic handling of 5-minute transitions, polling jitter, timestamp discontinuities, missing data and real switch transitions between samples.
- [x] Verify that **zero physical-device service calls** occur in observation mode, including restart and failed update cases. *(0.2.2: service-call guard on every HA Core test, including cold start with a stored model and optimizer failure, plus a static source check. Not yet observed on HAOS.)*
- [x] Establish deterministic handling of 5-minute transitions, polling jitter, timestamp discontinuities, missing data and real switch transitions between samples. *(0.2.2: relay changes timestamped by a read-only listener; offline and HA Core tests. Sensor alignment remains open.)*
- [x] Add input freshness thresholds and diagnostics that identify exactly which source is missing/stale/invalid.
- [ ] Verify that source switching, entity renaming, adding/removing rooms and replacing the relay do not silently reuse incompatible fitted coefficients.
- [x] Verify that source switching, entity renaming, adding/removing rooms and replacing the relay do not silently reuse incompatible fitted coefficients. *(0.2.2: tests for outdoor-source switching, adding, removing and re-adding rooms, and relay replacement. A renamed sensor is handled as removing one room and adding another; its old model is retained under the old ID.)*
- [ ] Version persisted model schema; test corrupted/older state and migration/rollback behavior.
- [ ] Verify calculated sample totals and successful/failed fitting counters; expose reasons why training/prediction is unavailable.
- [ ] Add CI, linting, tests and packaging validation (including HACS metadata/translations).
- [ ] Update installation/release documentation and remove packaged `__pycache__`/`.pyc` files if present.
- [x] Update installation/release documentation and remove packaged `__pycache__`/`.pyc` files if present. *(0.2.2: CHANGELOG with upgrade/rollback notes; package check rejects tracked bytecode.)*
**Exit criteria:** No control writes; reproducible tests covering HA lifecycle; clean upgrade/removal; clear status during outages; no significant model-data loss or silent corruption on restart.
@@ -78,6 +81,10 @@ shadow-only tripwire test. Relay transitions between polls are now integrated at
their timestamp; multiple changes within one poll still need event-based relay
history before the transition item below can be checked.
Release 0.2.2 adds that event-based relay history (read-only listener), keeps
models of rooms removed in Options, shows each sensor's longest report gap, stops
recording volatile attributes, and tests against HA 2025.12.0 and 2026.2.3.
## Milestone 1 — Explainable forecasts and dashboards (target v0.3.0)
**Objective:** Users can verify what the model predicts and whether it is actually accurate.
@@ -154,13 +161,21 @@ Only after the Milestone 3 gate has been satisfied:
- Guaranteeing a fuel saving based solely on relay-state history.
- Auto-switching the user's HVAC mode between `off` and `heat`.
## Priority backlog for the next Codex session
## Priority backlog for the next session
1. Confirm the imported repository contents match v0.2.1; run existing tests and write an honest baseline audit.
2. Review HA lifecycle, polling/sample timing, options reload, storage/cleanup and failure handling; fix P0 problems before features.
3. Add a test harness (HA fixtures/mocks) and a shadow-only invariant test prohibiting all actuator service calls.
4. Add forecast recording and held-out evaluation, then expose a trajectory usable by an HA dashboard.
5. Only then consider richer weather inputs and the live-control **design**; do not implement live control without separate authorization.
Items 1–3 of the original backlog are done (see AUDIT.md and CHANGELOG.md 0.2.2).
1. **HAOS acceptance of 0.2.2 by the user:** install, restart, options reload, room
removal and re-adding, manual heat/off, a missing sensor, uninstall on a
disposable entry; confirm Generic Thermostat behavior is unchanged.
2. Finish Milestone 0: decide the stale-room policy (pause all rooms, as now, or
keep learning healthy rooms); committed rollback/migration fixtures; failed-fit
counters; lint/type checks; remote CI run.
3. Milestone 1: record forecasts with their input snapshot and evaluate them
walk-forward at 15/30/60/120 minutes against persistence, replaying the actual
relay sequence; then expose trajectories for a dashboard.
4. Only then consider richer weather inputs and the live-control **design**; do not
implement live control without separate authorization.
## Definition of done for each milestone