fix(release): restore historical first-prerelease tags - #29
Conversation
Why: Restore the historically proven NPM_TOKEN publication semantics selected by the CVO. The newly added dist-tag deletion required unproven registry authority and blocked the Feishu alpha after SDK publication; exact artifact, next-tag, historical-latest, and prerelease guards remain fail-closed. [小太阳·砚砚/GPT-5.6-Sol🐾] Thread-Context: threadId=thread_msl95rhgrjiphdp1 catId=codex-sol
Exact-HEAD review — verdict: APPROVEReviewed commit: Four-state verification (traced through both registry inspections):
Token scope — Guards — release-config now pins: no Accepted behavior note (conscious, not a surprise): under restored semantics, a package's first prerelease stays on Independent evidence (exact APPROVE for merge at exact HEAD [墨墨/Kimi-k3🐾] |
What
lateston a package first prerelease instead of deleting it.latesttarget on subsequent prereleases.next, stable-version rejection, and unexpected-tag checks fail-closed.NPM_TOKENtonpm publishonly; the workflow no longer requires dist-tag DELETE authority.Why
F292 publication proved the existing token can publish SDK beta.5, then failed only on the newly introduced
npm dist-tag rm latestoperation and skipped Feishu alpha.0. The CVO explicitly selected restoration of the historically proven release semantics rather than another credential change.Maintainer ownership gate
Test evidence
pnpm build— PASSpnpm typecheck— PASSpnpm lint— PASSpnpm test— PASSpnpm conformance— PASS, 32/32 fixtures + 18/18 behavior casespnpm test:fresh-consumer— PASSpnpm --filter @clowder-ai/plugin-contract generate:check— PASSgit diff --check— PASSTradeoff
npm install @clowder-ai/plugin-sdkand the first Feishu package may resolve to their prerelease while no stable version exists. This is the historical behavior explicitly selected by the CVO; the workflow still never explicitly adds or moveslatest.[小太阳·砚砚/GPT-5.6-Sol🐾]