From 8e3734f5ea14e9b385ac4e5957d5396a8d077d63 Mon Sep 17 00:00:00 2001 From: glenn schrooyen Date: Mon, 7 Sep 2026 00:47:11 +0200 Subject: [PATCH] PKG-12: the live options WERE checked, and the changelog said they were not MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Review approved the bump and, in doing so, dated one of its own paragraphs. When this section was written the pre-deploy check had not been run and the changelog said so, correctly. The owner then exported the reference install's options and the check cleared, which makes the shipped sentence false in the release notes an operator reads at the hardware. Replaced with what was measured, twice: stored blob as-is exit 0, CLEARED effective post-upgrade config exit 0, CLEARED (the 70 stored keys merged OVER 0.9.0's 71 config.yaml defaults) max_w 5000, slew_w 400, rule-10 ceiling 555.6 W. ⚠️ AND THE SECOND CHECK IS NOT CEREMONY. The stored blob has 70 keys, not 71: `delivery_hold_s` arrived with SAFETY-42 in 0.8.0, so a box running 0.7.0 has never stored it, and it is REQUIRED in the schema with no trailing `?` - the exact shape that becomes exit 78. It resolves to its `options:` default of 185 because the Supervisor sets `App.options = deepmerge(defaults, stored)`, which `tools/supervisor_selfapi_probe.py` §D pins against a real Supervisor image. Review re-derived that independently rather than taking the reasoning on trust. "Your saved settings are valid" and "what the box will actually run is valid" are different questions, and only the second one is the one being asked before a deploy. Suite: 26 files, all pass. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01BwRLw7eKYj2byVdwB6kbjU --- goodwe_controller/CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/goodwe_controller/CHANGELOG.md b/goodwe_controller/CHANGELOG.md index d2e7865..df0a58d 100644 --- a/goodwe_controller/CHANGELOG.md +++ b/goodwe_controller/CHANGELOG.md @@ -59,6 +59,22 @@ behind it, which is why this section exists: Exit `0` cleared, `1` REFUSED, `2` NOT CLEARED. ⚠️ **2 is not a pass.** +✅ **RUN AGAINST THIS RELEASE, 2026-09-07: CLEARED, exit 0.** The reference +install's options were exported from the Supervisor (70 keys) and checked twice +- the stored blob as-is, and the **effective post-upgrade config**, being those +70 keys merged over 0.9.0's 71 defaults. Both pass. `max_w` 5000, `slew_w` 400 +against a rule-10 ceiling of 555.6 W. + +⚠️ **THE STORED BLOB HAS 70 KEYS, NOT 71, AND THAT IS THE INTERESTING PART.** +`delivery_hold_s` arrived with SAFETY-42 in 0.8.0, so an install running 0.7.0 +has never stored it - and it is REQUIRED in the schema, no trailing `?`, which +is the shape that becomes exit 78. It resolves to its `options:` default of +**185**, because the Supervisor sets `App.options = deepmerge(config.yaml +defaults, stored options)`; `tools/supervisor_selfapi_probe.py` §D pins that +against a real Supervisor image rather than assuming it. The second check above +exists because "your saved settings are valid" and "what the box will actually +run is valid" are different questions, and only the second one matters. + ⚠️ **THE VERSION WENT UNBUMPED FOR THE THIRD TIME IN THREE DAYS** - PKG-06 six merges, PKG-07 six, this one five - and this time it was caught by PKG-09's own tool during PKG-09's review rather than by a person. `ha apps update` against an