Skip to content

fix: build the release canary manifest with its components member - #2541

Merged
jeremi merged 1 commit into
mainfrom
fix/release-canary-components
Nov 1, 2026
Merged

jeremi merged 1 commit into
mainfrom
fix/release-canary-components

Conversation

@jeremi

@jeremi jeremi commented Nov 1, 2026

Copy link
Copy Markdown
Member

What this fixes

Release Canary has failed on every scheduled run since 2026-10-27 with:

error: manifest has a non-closed schema: missing components

Since 0.44.0, release_candidate.py requires a components member on every stack candidate at or after release_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 components from its placeholder payloads with release/scripts/rstack_components.py, the same way release-candidate.yml does, 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):

    • before the fix it stops with the same missing components error;
    • after the fix it seals, verifies the candidate, and verifies the canary.
  • 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

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>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-01T13:08:14.116766Z 38cac95 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@jeremi
jeremi added this pull request to the merge queue Nov 1, 2026
Merged via the queue into main with commit c1da271 Nov 1, 2026
56 checks passed
@jeremi
jeremi deleted the fix/release-canary-components branch November 1, 2026 16:14
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