Releasing
GitHub is boussadjra/queryweave. npm is the
queryweave org, which owns the @queryweave/* scope. Those are independent names: do not move
the git repository to queryweave/queryweave.
The Release workflow only runs when github.repository is boussadjra/queryweave.
Every public package shares one version. pnpm publish:packages publishes in dependency order,
skips versions already on the registry, and chooses the dist-tag from the policy below. Do not use
changeset publish; the lockstep publisher is the source of truth.
Dist-tags
Section titled “Dist-tags”npm gave the first version ever published the latest tag, whatever its prerelease id. The policy
follows that fact rather than fighting it:
- Until a stable version exists, every publish goes to
latest, sopnpm add @queryweave/coreresolves the newest prerelease. There are no channel tags to remember, and the docs use bare package names. Thealphatag that the first publish created stays behind at0.1.0-alpha.1and is not maintained. - Once
0.1.0is on the registry,latestholds the stable line and a prerelease is published under its own id:0.2.0-beta.0underbeta,0.2.0-rc.0underrc.
pnpm publish:packages --tag <tag> overrides the policy for one run.
Cutting a new prerelease line
Section titled “Cutting a new prerelease line”Changesets is in pre mode, which decides the prerelease id of every automated version bump. Moving from alpha to beta needs both the pre-mode tag and the version to change, in this order:
pnpm changeset pre exitpnpm changeset pre enter betapnpm version:set -- 0.1.0-beta.0Commit the three results together. Later changesets then produce 0.1.0-beta.1, 0.1.0-beta.2,
and so on through the Version PR.
Do not run pnpm version:set and changeset version for the same release. Leaving pre mode for
the first stable release is pnpm changeset pre exit followed by a normal Version PR.
Before the next release
Section titled “Before the next release”-
Make the GitHub repository public. Provenance attestations, the
repositorylinks in every package manifest, the ADR links in this site, and private vulnerability reporting all depend on it. -
On each package page (
npmjs.com/package/@queryweave/core/access, and the same fortesting,browser,server,node,standard-schema,vue,vue-router,nuxt), confirm a GitHub Actions trusted publisher is attached:- Organization or user:
boussadjra - Repository:
queryweave - Workflow filename:
release.yml - Environment name:
release
The first-publish runs logged
Skipped OIDCbecause the packages did not exist yet; a publish that still logs it means this step is incomplete. - Organization or user:
-
Require 2FA and disallow tokens on those packages. Confirm no
NPM_TOKENsecret remains on the repository; the repository variableNPM_TRUSTED_PUBLISHINGis alreadytrue. -
Add a changeset for the release, merge, then merge the Version PR. Confirm the tag afterwards:
Terminal window npm view @queryweave/core versionnpm dist-tag ls @queryweave/core
Later releases
Section titled “Later releases”A user-visible change needs a changeset in the pull request. Merging to main opens a Version PR
that bumps the lockstep version and writes CHANGELOG.md. Merging that PR publishes with
pnpm publish:packages when NPM_TRUSTED_PUBLISHING is true.
The Release workflow never runs from a fork or a pull request. The publish jobs request
id-token: write only for themselves.
What is still deferred
Section titled “What is still deferred”Throttling, coalescing, and cancellation of transitions; date, JSON, object, and tuple codecs; per-parameter omission policy; and server response contribution are on the roadmap. Transitions are already serialized per runtime, so debouncing at the call site is about history entries, not correctness.