fix: version the replaced drivers so the signed channel can publish them#29
Conversation
The driver release failed on both #27 and #28 with error: deye: changed artifact needs a higher version than 1.2.2 and it was right to. The channel refuses to publish changed bytes under a version it has already published; that immutability is what makes rollback mean anything. Nothing shipped, which is the correct outcome for a release that would have replaced 19 drivers' contents behind their own version numbers. So the 17 remaining replaced drivers move to a major version (pixii and sungrow already had). Major rather than patch because these are different implementations, not fixes, and an operator pinning a version needs to know that. bump_driver no longer rewrites the DRIVER table of a driver that is byte-identical to its FTW baseline. Doing so broke the byte-identity of 17 drivers, which cost them their test exemption and failed 13 checks -- and it spent the provenance guarantee on a field the tooling already accepts as differing. The manifest counts this repository's releases; the DRIVER table counts FTW's. Verified by building the signed publication locally against the currently published manifest: 80 drivers, 18 new, 19 bumped, zero version collisions. Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3c2ab18e86
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if is_ftw_baseline(path): | ||
| return False |
There was a problem hiding this comment.
Keep baseline package versions aligned with Lua metadata
When bump-driver runs for a byte-identical promoted driver, this early return skips both Lua metadata tables while main() still bumps the manifest and any tracking package recipe. For example, the changed SDM630 recipe now advertises 2.0.0 while its packaged DRIVER and DRIVER_MANIFEST still declare 1.1.1, producing a signed artifact that reports a different version from the package and defeating the version bump's identity guarantee. Baseline provenance should not override the repository requirement that package metadata match the Lua DRIVER block.
AGENTS.md reference: AGENTS.md:L27-L29
Useful? React with 👍 / 👎.
The driver release failed on both #27 and #28:
It was right to. The channel refuses to publish changed bytes under a version it has already published — that immutability is what makes rollback mean anything. Nothing shipped, which is the correct outcome for a release that would otherwise have swapped 19 drivers' contents behind their existing version numbers.
The fix
The 17 remaining replaced drivers move to a major version; pixii and sungrow already had. Major rather than patch because these are different implementations, not fixes, and an operator pinning a version needs to know that.
What this exposed in the tooling
bump_driveralso rewrote theDRIVERtable inside each driver. That broke the byte-identity of 17 promoted drivers, which cost them their test exemption and failed 13 checks.It was also pointless: the two version fields are supposed to differ. The manifest counts this repository's releases, the
DRIVERtable counts FTW's, and the publication checks already accept that. So the bump was spending the provenance guarantee to satisfy a rule that no longer exists.bump_drivernow leaves the Lua alone when a driver is byte-identical to its baseline. All 17 are identical again.Verification
Built the signed publication locally against the currently published manifest:
make check: 1981 passed, sandbox and host-API clean.🤖 Generated with Claude Code