diff --git a/goodwe_controller/CHANGELOG.md b/goodwe_controller/CHANGELOG.md index 304cd96..4cebec5 100644 --- a/goodwe_controller/CHANGELOG.md +++ b/goodwe_controller/CHANGELOG.md @@ -1,5 +1,52 @@ # Changelog +## 0.8.0 + +⚠️ **A CONFIG THAT STARTED ON 0.7.0 CAN BE REFUSED ON 0.8.0, AND THAT IS WHY +THIS IS A MINOR BUMP.** [[SAFETY-39]] adds validator rule 10, which refuses an +explicit `slew_w` above `SLEW_RAIL_FRAC` x the site rail, where `SLEW_RAIL_FRAC` +is `LOOP_TICK_S / PLANT_SETTLE_S` = 2/18. On a 5000 W rail that ceiling is +**555.6 W**. + +⚠️ **THE VALUE THAT BREAKS IS 0.7.0'S OWN SHIPPED DEFAULT.** `slew_w` defaulted +to **1000** and the schema was `int(50,5000)`; 1000 > 555.6, so an install that +never touched the key and simply took the default is refused on 0.8.0 until the +value is lowered. That is as backward-incompatible as it gets, and it is the +whole justification for MINOR over PATCH. + +The schema also widens from `int(50,5000)` to `int(0,5000)`, and `slew_w: 0` - +**a value that was not legal before** - now means *follow the rail* and is the +shipped default. This is a new capability rather than a changed meaning. + +⚠️ Refusal is `SystemExit(78)` (`EX_CONFIG`): the add-on does not start. **Read +the live options and check them against the ceiling BEFORE `ha apps update`.** +That check is NOT performed by this PR and cannot be - see the PR body. + +CFG-04's rule and PKG-06's: the Supervisor keys the built image by `version:`, +so shipping a change without a bump means `ha apps update` is a silent no-op. +**Six merges accumulated behind an unbumped 0.7.0 before this was caught, for +the second time in two days.** The automated check that would catch it without +a human noticing is still unwritten, and that is PKG-06's standing follow-up. + +Contents, in merge order since 0.7.0 (`bbc903b`). ⚠️ Each row carries the merge +subject's **whole** claim, including the half that is not flattering: + +| | | +|---|---| +| `9e42cec` | CI-06 - `test_peakguard.py` answered two of its checks with the wall clock | +| `24c3d87` | SAFETY-38 - pin `site_standing` with shares that cannot answer for the site | +| `a4290d3` | SAFETY-39 - `slew_w` is a ratio to the rail, **and `gain` is the constant that is still wrong** | +| `c8dcb38` | SAFETY-37 - a stale reading is `None`, and arrival cannot be what says so | +| `0581648` | SAFETY-13 - the output freeze gets an exit, and only where it needs one | +| `464d398` | SAFETY-42 - a unit that stops delivering, **and the discriminator the card asked for does not exist** | + +⚠️ **TWO DISCLOSED RESIDUALS SHIP IN THIS RELEASE.** SAFETY-13's bounded +freeze-exit shows 0 spurious releases on the sweep's measured-plant slice but +**2 of 272 on a finer grid**, and the docs carry the 2-of-272 figure rather than +the flattering one. SAFETY-42's card proposed a discriminator that **turned out +not to exist**, and the branch says so rather than shipping a weaker check under +the original name. + ## 0.7.0 ⚠️ **SCHEMA CHANGE, AND IT IS WHY THIS IS A MINOR BUMP RATHER THAN A PATCH.** @@ -29,7 +76,19 @@ is a defect in this file, not in the release: the deployed 0.6.0 is `2d025ee` an the table above is what is new since it. Splitting it retroactively would mean guessing a boundary; saying so is more useful than a guess. -## Unreleased +## Detail notes — accumulated, NOT a separate release + +⚠️ **THIS HEADING USED TO SAY "Unreleased" AND IT WAS WRONG.** Everything below +has SHIPPED. The section accumulated across 0.6.0, 0.7.0 and 0.8.0 because each +release was cut without clearing it, so it names tickets from all three +([[SAFETY-18]] and [[SAFETY-30]] from the 0.6.0 era through [[SAFETY-42]] in +0.8.0). A reader who trusted the old heading would have concluded that shipped, +running behaviour was still pending — and there was a SECOND heading saying the +same thing further down, from the 0.4.x era. + +Retitled rather than re-sorted, on purpose: splitting ~3000 lines by release is +real work that does not belong inside a version bump, where it would bury the +one line that changes what the Supervisor installs. Card PKG-08 carries it. ⚠️ **THE OUTPUT FREEZE NOW HAS AN EXIT, AND ONLY WHERE IT CANNOT END ON ITS OWN ([[SAFETY-13]]).** While the loop is frozen the command's magnitude may fall but @@ -3381,7 +3440,12 @@ human to read rather than alarmed on - at a converged -10 W a 1 Wh register need about six minutes to move, so any threshold would false-trip at the target operating point. -## Unreleased +## Detail notes from the 0.4.x era — NOT unreleased + +⚠️ Retitled with the same correction as the section above: [[TEL-05]] and the +entries under this heading shipped long ago. Two headings in one file both +claiming "Unreleased" is how a reader ends up believing running behaviour is +still pending. **TEL-05.** A fourth `meter_source`, `homewizard_local`, which polls a HomeWizard P1's **own local API** (`GET /api/v1/data`) instead of watching a diff --git a/goodwe_controller/config.yaml b/goodwe_controller/config.yaml index f2b9333..ec8568a 100644 --- a/goodwe_controller/config.yaml +++ b/goodwe_controller/config.yaml @@ -1,5 +1,5 @@ name: GoodWe RS485 Controller -version: "0.7.0" +version: "0.8.0" slug: goodwe_controller description: >- Drives a GoodWe ES/BP battery inverter over RS485 by emulating its smart