Skip to content

ci(release): add a tag check, a full test gate and generated notes - #21

Merged
Dshuishui merged 1 commit into
mainfrom
ci/release-guards
Oct 24, 2026
Merged

Dshuishui merged 1 commit into
mainfrom
ci/release-guards

Conversation

@Dshuishui

@Dshuishui Dshuishui commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Makes a release safe to trigger and tested before it ships.

Changes

A published version can no longer be replaced. release.yml reads the version from package.json, and when its tag already existed it re-uploaded the bundles with --clobber. A forgotten version bump would therefore replace the bundles and SHA256SUMS of a published release without any error. A new preflight job runs scripts/check-release-tag.sh before anything is built:

Tag v<version> Result
does not exist the release proceeds
points at the commit being released the release proceeds (a re-run after a failed upload)
points at another commit the release fails: bump the version first

CI runs the whole test suite. It used to run only __tests__/kernel-*.test.ts, so the tests a pull request adds never ran in CI. It now runs the full suite after the kernel gate. The three daemon-older-version cases that fail on any fork build (see FORK.md) are skipped by test name, because each workspace project sets its own exclude, which overrides --exclude.

Release runs CI on the commit it publishes. A prerelease is usually cut from a branch no pull request has tested. ci.yml is now callable (workflow_call), Release calls it alongside the kernel builds, and the release job waits for both. The concurrency group now includes the workflow name, so a release's test run and a push to main do not cancel each other.

Release notes list what changed. After the existing description, the notes now carry GitHub's generated notes: the pull requests merged since the previous release, their authors, and a compare link.

Verification

  • scripts/check-release-tag.sh against this repository's tags: an unreleased version passes; v1.6.2-fmagent.2 at 869643b passes as a re-run; v1.6.2-fmagent.1 and v1.6.2-fmagent.2 at 190d40a fail; the annotated v1.6.0-fmagent.4 resolves to the commit it points at.
  • The new test step on Ubuntu 24.04 (Node 22, locally built kernel): 606 files, 7,358 tests passed and 40 skipped, which is the 37 skipped before plus the three cases above. Two bundle-launcher cases failed there because the machine has no zip; the GitHub runner has it, and they pass in this pull request's CI run.
  • actionlint 1.7.7 reports nothing.
  • End to end, from a throwaway branch: a version whose tag pointed at another commit stopped in preflight with the error above, and no other job ran. A fresh version ran every job: the test job took about ten minutes (606 files; 7,360 tests passed, 40 skipped), and the prerelease it published listed Fix C function extraction across conditional signatures #20 and a compare link in its notes. The throwaway release, tags and branch have been deleted.

Release read the version from package.json and, when its tag already
existed, re-uploaded the bundles with --clobber. A forgotten version bump
would therefore replace a published release's bundles and checksums
without any error. A new preflight job stops the release when the tag
points at another commit; a re-run of the same commit still goes through.

CI ran only the kernel suites, so the tests a pull request adds never ran
in CI. It now runs the whole suite, skipping by name the three
daemon-older-version cases that fail on any fork build (FORK.md). Release
calls CI on the commit it publishes, alongside the kernel builds.

Release notes now append GitHub's generated notes: the pull requests
merged since the previous release, their authors and a compare link.
@chatgpt-codex-connector

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 ⚠️ Failed 2026-10-24T13:35:47.940123Z
We couldn’t complete this review. Comment @codex review to try again.
f33d7b8 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.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@Dshuishui Dshuishui changed the title ci: guard releases against republishing and run the full test suite ci(release): add a tag check, a full test gate and generated notes Oct 24, 2026
@Dshuishui
Dshuishui merged commit 5aec973 into main Oct 24, 2026
1 check passed
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