Releasing
How versions, changelogs, and releases ship: changesets, the release workflow, provenance, and versioned docs.
@vortex-api/convex-auth releases are driven by changesets and GitHub
Releases. The compatibility contract lives in
VERSIONING.md;
this page is the operator runbook.
Normal release flow
- Every PR that changes
packages/source carries a changeset — enforced by thechangeset-gateCI check. A PR can opt out only with theno-releaselabel. Major-bump changesets must include aMigration note:line. - Merge to
main. Changesets accumulate. - Run the Release workflow (
workflow_dispatch).changesets/actionopens achore: version packagesPR that bumps versions, consumes pending changesets, and prepends their entries topackages/auth/CHANGELOG.md. The changelog file is committed and load-bearing —changesets/actionreads it at publish time to build the GitHub Release body, and silently skips the release if it is missing. - Merge the version PR, then re-dispatch the workflow. The publish run
pushes npm, creates the git tag, and creates the GitHub Release via the
GITHUB_TOKEN. Tags are@vortex-api/convex-auth@X.Y.Z(the changesets workspace format), immutable, and never moved. - The docs changelog updates itself — the Blume site sources
changelog/*pages from GitHub Releases, so release notes appear on the docs site (with RSS) on the next site build/deploy. No hand-editing.
Supply chain
- npm publishes run with
NPM_CONFIG_PROVENANCE=true, producing sigstore provenance attestations that link each tarball to this repo’s release run. - GitHub Releases are created by the release workflow via
GITHUB_TOKEN, so tags and release commits are GitHub-verified.
Major releases
A major additionally requires:
- A
Migration note:line in the changeset (gate-enforced). - A migration page under
docs/(migrations)/linked from the release notes. - After release, freeze the previous major’s docs:
blume version v<N>insite/— the old line stays reachable whilelatestmoves forward. - If the HTTP contract changed, the
openapi/auth.yamldiff must already be merged — theOpenAPI contract guardCI check fails any PR where code routes and spec paths diverge.
What the gates check
| Check | Blocks merge when |
|---|---|
changeset-gate |
packages/ source changed without a changeset or no-release label; major changeset missing Migration note: |
OpenAPI contract guard |
A code route is missing from openapi/auth.yaml, or the spec documents a route that no longer exists |
checks |
Lint/format/typecheck/tests/docs-smoke fail on Node 22 and 24 |
prc |
Release-blocking production-readiness checks fail |