Problem
The post-merge npm workflow for 0.39.51 reached npm publish but the registry returned E404 on the package PUT. The repository NPM_TOKEN was copied from the local granular token, but that token is IP-restricted for local release recovery and cannot authenticate from a GitHub-hosted runner.
Evidence:
No token value or allowed IP range is recorded here.
Durable fix
Migrate .github/workflows/npm-publish.yml to npm Trusted Publishing/OIDC:
- On npmjs.com, configure the package trusted publisher for:
- GitHub owner/user:
pitimon
- repository:
TokenTracker
- workflow filename:
npm-publish.yml
- allowed action:
npm publish
- Use Node >=22.14 and npm >=11.5.1 in the publish job.
- Grant the publish job
id-token: write and contents: read.
- Remove
NODE_AUTH_TOKEN/NPM_TOKEN from the publish step.
- Publish a patch version from GitHub Actions and verify the registry smoke receipt.
- Remove the unusable GitHub
NPM_TOKEN secret after OIDC is proven.
Acceptance criteria
- A new version is published by the GitHub-hosted workflow without a long-lived npm token.
- Provenance is present for the registry artifact.
- Fresh registry install and semantic dashboard/CLI smoke pass.
- The old GitHub secret is removed only after successful OIDC publication.
Problem
The post-merge npm workflow for
0.39.51reachednpm publishbut the registry returnedE404on the package PUT. The repositoryNPM_TOKENwas copied from the local granular token, but that token is IP-restricted for local release recovery and cannot authenticate from a GitHub-hosted runner.Evidence:
0.39.51: succeeded0.39.51, Node>=20.18.1, Undici7.29.0, production audit 0No token value or allowed IP range is recorded here.
Durable fix
Migrate
.github/workflows/npm-publish.ymlto npm Trusted Publishing/OIDC:pitimonTokenTrackernpm-publish.ymlnpm publishid-token: writeandcontents: read.NODE_AUTH_TOKEN/NPM_TOKENfrom the publish step.NPM_TOKENsecret after OIDC is proven.Acceptance criteria