Skip to content

release: one-time npm dist-tag sweep for the pre-release tags that 18.1.0 left stale (maintainer-run) #25764

Closed

Description

@objectstack-fleet

Filing-gate category: ① a measured, user-visible defect on a public entry (the npm registry), the one-time half of #25581. Maintainer-directed: Tesla ruled on 2026-10-25 (director thread) that the manual cleanup gets its own maintainer-owned card instead of waiting for the next stable release.

Maintainer-action: once #26196 has landed (it teaches scripts/release-dist-tags.mjs to remove the retired rc tag rather than move it), run node scripts/release-dist-tags.mjs (plan) and then node scripts/release-dist-tags.mjs --apply from a checkout of main, logged in to npm with an account that holds publish rights on @objectstack. It is done when npm view @objectstack/spec dist-tags shows only latest and next, with next at the newest stable or above, and the planning run reports 0 tags would change. (Rescoped 2026-10-26 on the maintainer's 「现在只有 latest 和 next」 / 「同意」: rc is removed, not moved. The original line had next and rc both moved to 18.1.0 or above.)

What a user sees

Measured on the registry at 2026-10-25 09:10Z, identically for the 73 published packages of the fixed group:

{ "rc": "17.0.0-rc.6", "next": "18.0.0-next.5", "latest": "18.1.0" }

npx create-objectstack@next or npm i @objectstack/cli@next installs 18.0.0-next.5, a pre-release of a version already two stable releases behind latest; @rc is a whole major behind. The plan run of the sweep script reports 141 tag moves (next and rc on each of 73 packages → 18.1.0), 0 kept, 0 skipped.

Why a maintainer, and why a card

Not in scope

Business rationale: an evaluator or an AI agent that picks @next today receives already-fixed bugs as current ones; the fix is a two-minute action by the one person who can do it.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Rescoped on the maintainer's word: rc is removed, not moved · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-26T15:19Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    18.2.0 reading: the release step moved next but could not remove rc · devx project thread · 2026-10-27T08:26Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. hotlong commented on Oct 27, 2026

    @hotlong
    Contributor

    Plan reading for the remaining half, 2026-10-27 ~08:55Z · cloud ops seat. ⛔ Not a claim, and nothing was applied.

    node scripts/release-dist-tags.mjs was run in plan mode only, from an archive of objectstack main 7dd5a2ffa9. Result:

    0 tag(s) would move, 68 retired tag(s) would be removed, 0 kept ahead of latest, 0 package(s) skipped, 0 failure(s).

    • The 68 are 67 @objectstack/* packages plus create-objectstack. Each has rc: 17.0.0-rc.6 → removed (retired channel).
    • next is already at 18.2.0; the 18.2.0 release step moved it.
    • @object-ui/* carries no rc tag. For example, react, core and components read { latest: 18.2.0 }.

    The same login can do the other maintainer-only npm step for 18.2 at the same time: npm deprecate @object-ui/sdui-parser "moved to @objectstack/sdui-parser", noted on #25753. That package is still at latest: 18.1.0, with no deprecation set.

    This card stays OPEN until npm view @objectstack/spec dist-tags reads back only latest and next.

  4. hotlong commented on Oct 27, 2026

    @hotlong
    Contributor

    Done, verified 2026-10-27: the retired rc tag is gone from all 68 packages that carried it

    维护者速读

    68 个包的 rc 都已删除。现在每个包只剩 latest 和 next,都指向 18.2.0。计划模式重跑结果是 0 处要改,这张卡按完成关闭。

    Readback

    • node scripts/release-dist-tags.mjs (plan, from a main archive): 0 tag(s) would move, 0 retired tag(s) would be removed, 0 kept ahead of latest, 0 package(s) skipped, 0 failure(s). This is over the same 109 packages as the earlier plan (comment 6437227769), which listed 68 removals.
    • A direct registry read of the 68 packages: rc remaining 0, unreadable 0.
    • @objectstack/spec: {"latest":"18.2.0","next":"18.2.0"}. create-objectstack: {"latest":"18.2.0","next":"18.2.0"}.

    How it was applied, and what it means for the release workflow

    • --apply with the maintainer's saved npm token got 403 on every DELETE …/dist-tags/rc. That is the same failure CI hit on the 18.2.0 publish. npm's notice says why: tokens that bypass 2FA are being restricted for account changes and direct publishing. The same token could still npm deprecate, so the 403 is specific to dist-tag deletion.
    • The tags were removed by the maintainer, logged in through web auth with 2FA, using npm dist-tag rm <pkg> rc --otp=<code> one package at a time.
    • Effect on release.yml: its post-publish sweep can still move next, which happened on 18.2.0. It cannot remove a tag with the CI token. No retired tag is left, so nothing is pending today. If a channel is retired in the future, the removal will need a maintainer again, or a token that npm allows to delete. Separately, npm's bypass-2FA restriction may eventually affect CI publishing too. I have not filed a card for that; it is noted here for the release owner.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions