Skip to content

[DO NOT MERGE] demo: prove the new channel preflight catches the change that broke the release - #58

Closed
HuggeK wants to merge 2 commits into
srcfl:mainfrom
HuggeK:demo/preflight-catches-53
Closed

[DO NOT MERGE] demo: prove the new channel preflight catches the change that broke the release#58
HuggeK wants to merge 2 commits into
srcfl:mainfrom
HuggeK:demo/preflight-catches-53

Conversation

@HuggeK

@HuggeK HuggeK commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

Throwaway proof for #57not for merge, will be closed as soon as the checks report.

This reconstructs #53 in the shape it merged in: nibe_local's ders moved, no Lua touched, the version left at the one already published, and index.yaml / devices.yaml / the support status regenerated — so every check that existed at the time passes, exactly as they did then.

Expected: every pre-existing check green, and only signed channel accepts this tree red. That is the gap #57 closes.

Note this PR is stacked on #57, so it carries that branch's commit as well.

claude and others added 2 commits July 31, 2026 11:48
The signed channel refuses to republish changed artifact bytes under a version
it has already published. That is the rule that makes a version name a set of
bytes an operator can pin, and it was the one release check no pull request
could run: asking it needs the published channel, so it only ever ran from the
release job on main. srcfl#53 merged with five green checks and took the release
down; the repair had to be a second pull request against a main that was
already broken.

Nothing about the question needs the signing key. The published manifest is a
public release asset, its signature verifies with the public key already in
the workflow, and the bytes a driver would publish as come from the tree. So
check-versions builds the artifacts in memory, signs nothing, and answers what
the release would answer -- on every pull request, forks included, since a
fork needs no secret to read a public asset.

_version_collisions is now the single statement of the rule. Both the release
and the check read it, because a rule stated twice drifts, and a check that
drifts from the release is worse than no check at all:
test_check_versions_answers_what_the_release_would_answer holds them to the
same verdict on the same tree.

The check reports every colliding driver rather than the first, each with the
bump_driver command that fixes it. The release still stops at one; it has
nothing else to do, and someone fixing a branch wants the list.

test_check_versions_catches_a_manifest_only_edit is srcfl#53 in the shape it
arrived in -- a manifest field corrected, no Lua touched, the published bytes
moved anyway. Verified against the live channel as well: the current main
passes, and replaying that edit is refused before a merge.

CONTRIBUTING no longer says this fails only after the merge, and carries the
command to ask it locally. It also states the one sharp edge: the comparison
is against the published channel, not against main, so a main that is itself
unpublishable fails this on unrelated pull requests until it is fixed.

Signed-off-by: Hugo Karlsson <48095810+HuggeK@users.noreply.github.com>
Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
…aught

Not for merge. This is srcfl#53 in the shape it merged in: nibe_local's ders moved,
no Lua touched, the version left at the published one, and index.yaml,
devices.yaml and the support status regenerated so every check that existed at
the time still passes.

The expected result is that only the new signed-channel job fails.

Signed-off-by: Hugo Karlsson <48095810+HuggeK@users.noreply.github.com>
Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
@HuggeK

HuggeK commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator Author

Proof captured — closing as planned. All five pre-existing checks passed (exactly as they did on #53) and only signed channel accepts this tree failed:

error: the signed channel would refuse this tree:
  nibe_local: changed artifact needs a higher version than 1.1.1 (published) -- make bump-driver ID=nibe_local LEVEL=patch

That is the gap #57 closes.

@HuggeK HuggeK closed this Jul 31, 2026
@HuggeK
HuggeK deleted the demo/preflight-catches-53 branch July 31, 2026 09:53
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.

2 participants