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. added
    toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface
    domain:devxDomain lane — seat card indexed by label:pm:seat
    pm:awaiting-maintainerAwaiting a manual maintainer action — ruling already given; no dispatch, no machine exit
    on Oct 25, 2026
  2. 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

  3. 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

  4. 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.

  5. 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.
  6. removed
    pm:awaiting-maintainerAwaiting a manual maintainer action — ruling already given; no dispatch, no machine exit
    on Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:devxDomain lane — seat card indexed by label:pm:seatpriority:p3toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions