Release 0.3.0
Tests / tests (requirements-test-latest.txt) (push) Successful in 1m30s
Tests / tests (requirements-test.txt) (push) Successful in 1m39s

First part of Milestone 1: Forecast Error sensors scoring the thermal
model against reality, forecast trajectories, Learning Progress and Last
Sample sensors, rejected-sample and poll-outcome counters, plus lint
and rollback-contract tests. README explains forecast accuracy, the
30-minute learning wait after a restart and where Developer Tools now
lives. ROADMAP marks the items now backed by tests; AUDIT records the
evaluation design and evidence. Still observation-only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
buzeraandClaude Opus 5.5 committed 2026-10-26 22:39:25 +02:00
1 parent d2bd398a0f
commit e59c08f586
5 files changed
+122 -12

No files matched your search

+44
View File
@@ -2,6 +2,50 @@
Engineering findings and test evidence behind each change are in [AUDIT.md](AUDIT.md).
## 0.3.0 — 2026-10-26
First part of Milestone 1: the integration now measures how accurate its thermal
model is. Still **observation-only**; no new options. Upgrading from an earlier
version: also read the notes of each version in between.
### Added
- Four sensors, **Heating MPC Forecast Error 15/30/60/120 min**: the thermal
model's mean absolute error over the last 7 days, scored out of sample against
what actually happened, using the relay's real ON/OFF history. Attributes show
the bias, the error of a no-change forecast (`persistence_mae`), `skill` and
per-room details. See README, "Forecast accuracy".
- **Heating MPC Learning Progress** (% towards forecasts being used) and **Heating
MPC Last Sample** (what the last poll did for learning, with English and Romanian
state names), so learning activity is visible without opening attributes.
- Room forecast entities: `forecast_15min` (temperature every 15 minutes over the
horizon) and `plan_15min` (the proposed ON/OFF plan), labelled counterfactual.
- Status: `rejected_samples` per room in `models`, `sample_results_since_start`
counting how each poll was handled, and `sample_result: waiting_for_inputs` when
the relay, thermostat, outdoor temperature or every room is missing.
### Changed
- The model is saved after each poll's forecasts are scored, with the forecast
statistics (about 8 KB for five rooms, at most 18 KB).
### Upgrade notes
- Six new entities appear (four forecast-error sensors, learning progress, last
sample). The error sensors stay unknown until forecasts can be scored: 15 minutes after
start for the 15-minute sensor, 2 hours for the 120-minute one. Early numbers
include the learning phase and are pessimistic.
- Rollback to 0.2.x is safe: older versions ignore the new saved keys, and the six
new sensors become unavailable (remove them in the entity settings if you roll back
permanently).
### Development
- Bug-finding lint (ruff: pyflakes, bugbear) in the checks and CI.
- Tests for restoring a model saved by 0.2.1 and for 0.2.1 being able to read
today's saved model.
- `.DS_Store` files are ignored and rejected by the package check.
## 0.2.3 — 2026-10-26
A stale or failed room sensor no longer pauses the whole integration. Still