Skip to content

fix: version the replaced drivers so the signed channel can publish them#29

Merged
frahlg merged 1 commit into
mainfrom
29-version-the-replaced-drivers
Jul 26, 2026
Merged

fix: version the replaced drivers so the signed channel can publish them#29
frahlg merged 1 commit into
mainfrom
29-version-the-replaced-drivers

Conversation

@frahlg

@frahlg frahlg commented Jul 26, 2026

Copy link
Copy Markdown
Member

The driver release failed on both #27 and #28:

error: deye: changed artifact needs a higher version than 1.2.2

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_driver also rewrote the DRIVER table 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 DRIVER table 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_driver now 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:

Drivers published 80 (was 62)
New 18
Version-bumped 19
Version collisions 0

make check: 1981 passed, sandbox and host-API clean.

🤖 Generated with Claude Code

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>
@frahlg
frahlg merged commit 1f67078 into main Jul 26, 2026
5 checks passed
@frahlg
frahlg deleted the 29-version-the-replaced-drivers branch July 26, 2026 09:18

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread tools/bump_driver.py
Comment on lines +83 to +84
if is_ftw_baseline(path):
return False

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant