fix(nibe_local): version the DER correction so the channel can publish it - #54
Closed
HuggeK wants to merge 1 commit into
Closed
fix(nibe_local): version the DER correction so the channel can publish it#54HuggeK wants to merge 1 commit into
HuggeK wants to merge 1 commit into
Conversation
…h it
The driver release failed on main with
error: nibe_local: changed artifact needs a higher version than 1.1.0
srcfl#53 corrected the manifest from ders: [meter] to ders: [heatpump] and read
that as catalog-only metadata, so it left the version at 1.1.0. It is not
catalog-only. _load_channel copies ders into the artifact's capabilities and
the channel signs source and metadata as one file, so the correction moved
the published bytes under a version that has already shipped. The channel
refused, and it was right to: that immutability is what lets an operator name
the bytes a site is running.
So nibe_local takes a patch. Patch rather than minor because no register,
field or emitted metric changed -- only the DER the catalog states. The Lua
source is untouched and its sha256 with it, and bump_driver leaves the DRIVER
table alone because the file is byte-identical to its FTW baseline, so the
provenance guarantee srcfl#29 established is spent on nothing.
Verified against the currently published beta manifest: of 80 drivers exactly
one differs from what is published, and after the bump nothing is blocked.
CONTRIBUTING said to raise the version whenever the Lua source changes, which
is what srcfl#53 followed. It now also names the manifest fields that reach the
signed artifact -- ders, protocol, and a tested_devices manufacturer and
model_family -- and warns that this check runs on main after the merge rather
than in the pull request, because only the release can read the channel.
Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
Collaborator
Author
|
Superseded by #55, which carries the same change plus the DCO |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The driver release failed on
mainwithNothing shipped, which is the correct outcome.
#53 corrected
nibe_local's manifest fromders: [meter]toders: [heatpump]and read that as catalog-only metadata, so it left the version at1.1.0. It is not catalog-only._load_channelcopiesdersinto the artifact'scapabilities, and the channel signs source and metadata as one file — so the correction moved the published bytes under a version that has already shipped. The channel refused, and it was right to: that immutability is what lets an operator name the bytes a site is running.So
nibe_localtakes a patch, 1.1.0 → 1.1.1.Why a patch and not a minor
No register, field or emitted metric changed — only the DER the catalog states. This follows the precedent in #32, where drivers that gained a control path took a minor because a host could now do something new, and the rest took a patch for a bytes-only move.
The Lua source is untouched and its
sha256with it, andbump_driverleaves theDRIVERtable alone because the file is byte-identical to its FTW baseline — so the provenance guarantee #29 established is not spent on this.Verified
Built the channel entries locally against the currently published beta manifest and compared every artifact digest:
Before the bump that same check reported
nibe_localblocked, reproducing the release failure exactly.nibe_localis the only driver that differs from what is published — the release stops at the first offender, so this confirms there is no second one waiting behind it.Other checks run
validate_manifest.py— 80 manifests, 0 errorsgenerate_index.py,generate_devices.py,generate_support_status.py— regenerated and idempotent;sync_manifests.py --id nibe_localreports the manifest matches its sourcegenerate_history.py --check— driver history intacthost_api_check.py --check,check_public_boundary.py— passpytest drivers/tests tests— 2947 passed. Four modules needing thepackageextra (cryptography) were skipped, and 10 tests fail identically on the unmodified base commit: they need thelua55interpreter the Makefile builds, plus one Windows path-handling issue intest_blueprint.py. Nothing here is affected by this change; CI runs all of them.The trap that caused it
CONTRIBUTING.mdsaid to raise the version whenever the Lua source changes, which is exactly what #53 followed. It now also names the manifest fields that reach the signed artifact —ders,protocol, and atested_devicesmanufacturerandmodel_family— and warns that this check runs onmainafter the merge rather than in the pull request, because only the release job can read the channel.Possible follow-up, deliberately not in this PR
The gap is structural: a PR that edits one of those manifest fields merges green and breaks the release afterwards. A pre-merge job could download the published
manifest.jsonand run the same comparison — it needs only the public key, which is already in the workflow env and not a secret. That is a new check rather than a fix to this failure, so it is left out here.The
CHANGELOG.mdentry from #53 is amended in the same commit: it claimed the version and the published bytes were untouched, and half of that is no longer true.