Repository navigation
fix: build the release canary manifest with its components member - #2541
Merged
Merged
Conversation
Since 0.44.0 the candidate validator requires `components` on every stack candidate at or after the first rstack release. The canary seals a 1.2.3 manifest but never built that member, so every scheduled run stopped at "manifest has a non-closed schema: missing components". The canary now derives the member from its placeholder payloads with rstack_components.py, as release-candidate.yml does, and a structure test ties the requirement to the canary version. Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
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.
What this fixes
Release Canary has failed on every scheduled run since 2026-10-27 with:
Since 0.44.0,
release_candidate.pyrequires acomponentsmember on every stack candidate at or afterrelease_roster.RSTACK_FIRST_RELEASE. The canary seals a 1.2.3 candidate, so the rule applies, but the canary's draft manifest never built that member.The canary now derives
componentsfrom its placeholder payloads withrelease/scripts/rstack_components.py, the same wayrelease-candidate.ymldoes, and adds it to the draft before sealing. A structure test asserts that the canary version sits at or past the first rstack release and that the workflow builds the member.Verification
Ran the "Exercise dispatch, candidate, advisory, and draft contracts" step in a Debian container (python:3.13-slim with jq, GNU coreutils and tar):
missing componentserror;The new test fails against the unfixed workflow and passes after the fix.
python3 -m unittest release/scripts/test_release_workflow_structure.py: 94 tests pass.python3 -m unittest release/scripts/test_registry_release.py: pass (1 skipped).check-gates-inventory.py: pass.actionlint: clean.Not verified: the later canary steps that need GitHub (upload, attestation, download, attestation verify). They only run on schedule or dispatch, so the first scheduled run after merge will exercise them.
I reviewed the submitted changes