docs: retire the dormant next pre-release channel - #1078
Open
mlennie wants to merge 1 commit into
Open
Conversation
The `next` dist-tag was never pinned. `npm-sdk.yml` derives the tag from the version string alone, so any hyphenated version publishes under `next` and everything else under `latest`. `next` last moved on 2026-05-21 with 0.0.198-dev6, and 51 stable versions have shipped since with no prerelease among them, so the pointer sat still for three months. Docker Hub's `:next` is the same image, by digest. That made the documented tag scheme wrong in a way that mattered: deployment.md told readers `*-dev` tags were frozen and `:next` was the current pre-release channel, when `:next` resolved to one of those frozen `*-dev` builds. Anyone who followed the docs got a May image. The tags are being removed on both registries rather than automated forward. npm OIDC trusted publishing authenticates `npm publish` and `npm stage publish` only, so `npm dist-tag` would need a granular token, and this repo deliberately has none. Removal is also self-healing: the routing in `npm-sdk.yml` and `docker-image.yml` is untouched, so the first real prerelease recreates both tags with correct semantics. Drops `:next` from the tag list in deployment.md and from the two sibling references that repeat it, and records the decision and the OIDC constraint in the workflows CONTEXT.md. Docs only. No TypeScript and no workflow logic changes. Signed-off-by: Monty Lennie <montylennie@gmail.com>
Contributor
Author
|
Update 2026-08-27: the npm half of the merge gate in the description has cleared. The Still outstanding: the Leaving the description as written, since it was accurate when the PR opened. |
Sha-Bang
approved these changes
Aug 27, 2026
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 is
James asked why
@malloy-publisher/server's npmnexttag points at something old. It turns out the tag was never pinned and nobody configured it specially:npm-sdk.ymlderives the dist-tag from the version string alone, so any hyphenated version publishes undernextand everything else underlatest.nextlast moved on 2026-05-21 when0.0.198-dev6was published. Fifty-one stable versions have shipped since then and not one prerelease, so the pointer simply stayed where the last prerelease left it. Docker Hub's:nextis frozen at the same date and resolves to the same image by digest.That made our own documented tag scheme wrong in a way that mattered.
docs/deployment.mdtold readers that*-devtags were frozen and that:nextwas the current pre-release channel, when:nextresolved to one of those very*-devbuilds. Anyone who followed the docs to:nextgot a three-month-old image and had no way to tell from the tag name.What changes
docs/deployment.mddrops:nextfrom the tag list and replaces the paragraph that misdescribed it. The two sibling references that repeat the same inline list,docker-compose.example.ymlandpackages/server/README.docker.md, are updated to match so the three files agree..github/workflows/CONTEXT.mdrecords the decision, the constraint behind it, and what a future prerelease will do.Docs only. No TypeScript, no workflow logic.
Why retire rather than automate
Wiring this into the workflows is the obvious idea and it is not available in its obvious form. npm OIDC trusted publishing authenticates
npm publishandnpm stage publishonly;npm dist-tag addandnpm dist-tag rmneed a granular token, and this repo deliberately has noNPM_TOKEN(.github/workflows/CONTEXT.mdsays so and says it should not be added back). So CI can movenextonly by publishing a real prerelease under it. Re-pointing the tag at an existing stable release would mean reintroducing a token, which is a poor trade for a channel nothing reads.Removal is self-healing. The routing in
npm-sdk.ymlanddocker-image.ymlis untouched, so the first genuine prerelease recreates both tags with the correct meaning and no change here.Please read before merging
The docs describe the intended end state and say the tag "has been retired". At the time of writing the removals have not run yet: all three packages still show
next: 0.0.198-dev6and Docker Hub still lists:next. The two registry actions cannot run from CI and are being done by hand. Either merge after they land, or accept a short window where the docs lead the registries.How it was verified
The diff is four files with zero TypeScript, so the typecheck, lint, and test legs cannot be affected by it and were not run. Saying that explicitly rather than implying a full gate. What was run: the enumeration was checked with
git grep ':next'so the fix is not partial, and the only surviving hits are my own prose and the two intentional lines indocker-image.ymlthat recreate the tag on a prerelease; the relative link frompackages/server/README.docker.mdstill resolves;docs/deployment.mdis now prettier-conformant and the other three files were already non-conformant onmainand sit outside CI's prettier glob, which passes clean; the branch is zero behindorigin/mainand merges clean by exit code.Every number quoted above was measured against the live registries immediately before committing, not carried over from earlier in the investigation.
Follow-up
Nothing blocking. If anyone does want a live pre-release channel, the shape that works with OIDC is publishing a prerelease from
mainon merge or nightly under--tag next. That is a real publish per merge on a package already at 192 versions, so it is worth doing only if someone actually wants to consume it.