ci(sdk): correct the publish workflow's account of why auth failed - #36
Conversation
The setup-node comment claimed registry-url's placeholder token was the cause of
the publish failure. It was *a* cause, not *the* cause, and leaving that
uncorrected would send the next person down one branch of a two-part problem.
What actually happened across four runs:
E404 30397586602 — registry-url's placeholder _authToken shadowed OIDC
ENEEDAUTH 30398261989 — credential path clear; npm still never attempted the
ENEEDAUTH 30398531344 exchange, because the npmjs trusted-publisher entry
did not match this repo + workflow filename
published 30398802432 — after the npmjs entry was corrected
Both had to be right. Fixing either alone still failed, with a different error
each time, and neither error names the real cause: E404 (not E401) because npm
will not leak which private packages exist, and ENEEDAUTH with no preceding log
line at all because npm does not announce that it is skipping OIDC.
So this records the failure signatures, states plainly that dropping registry-url
is necessary but not sufficient, and notes on the OIDC gate that a green result
proves only the runner side — the trusted-publisher entry lives on npmjs.com and
is invisible from here.
Also pins the exact npmjs trusted-publisher values in the header. They are
reconstructible only by reading the workflow carefully (basename not path, empty
environment, GitHub org not npm scope), and getting any of them wrong reproduces
the silent ENEEDAUTH.
Bumps setup-node 4.4.0 -> 7.0.0, clearing the Node 20 deprecation warning this
workflow emitted on every run. ci.yml's eight floating @v4 uses are left to
Dependabot, which already handles that class of bump (#31) and would otherwise
conflict.
Header no longer describes the carrier drift in the present tense: 0.1.0-dev.4
shipped it. The stale `latest` -> 0.1.0-dev.2 pointer is called out instead,
since that one is still true.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing |
🤖 wrokin code reviewThe diff upgrades the
No other logic, security, or style issues found. 🌾 wrokin contribution signal
Advisory — signals worth a closer look, not a verdict or a score. Model: deepseek/deepseek-v4-pro · your key, your model (BYOK) |
🛡️ wrokin security hunterNo vulnerabilities were proven in this pull request — the hunter found nothing it could exploit and prove by execution. Advisory only — this check never blocks your PR. |
🤖 wrokin code reviewNo high-signal issues — the diff only updates comments, adds a note about trusted publisher failure modes, and bumps Model: deepseek/deepseek-v4-pro · your key, your model (BYOK) |
🤖 wrokin security auditNo security-relevant findings in this diff. The changes are documentation updates and a routine version bump of Model: deepseek/deepseek-v4-pro · your key, your model (BYOK) |
Problem
0.1.0-dev.4published successfully (run 30398802432), but the workflow's own comments now tell a wrong story about how it got there. Thesetup-nodeblock asserts thatregistry-url's placeholder token was the cause of the failure. It was a cause, not the cause — and leaving that uncorrected sends the next person down one branch of a two-part problem.Change summary
Corrects the record. What actually happened across four runs:
E404registry-url's placeholder_authTokenshadowed OIDCENEEDAUTHENEEDAUTHBoth had to be right. Fixing either alone still failed, with a different error each time — and neither error names its real cause:
E404rather thanE401because npm won't leak which private packages exist, andENEEDAUTHwith no preceding log line at all because npm doesn't announce that it's skipping OIDC.setup-nodecomment now states that droppingregistry-urlis necessary but not sufficient, and records both failure signatures.ENEEDAUTH.Bumps
setup-node4.4.0 → 7.0.0 (SHA-pinned), clearing the Node 20 deprecation warning this workflow emitted on every run.Header de-staled: it described the carrier drift in the present tense, but
0.1.0-dev.4shipped it. Thelatest→0.1.0-dev.2pointer is called out instead, since that one is still true.Tests
Comments and a pinned action bump — no logic change. YAML re-validated: 13 steps, permissions unchanged (
contents: read,id-token: write), bothuses:lines SHA-pinned.The bumped
setup-nodeis exercised on the next dispatch. Its inputs (node-version,cache,cache-dependency-path) are unchanged and stable across v4→v7; the majors dropped Node 20 support, which is the point.Not scoped in:
ci.yml's eight floatingsetup-node@v4uses emit the same deprecation. Left to Dependabot, which already handles that class of bump (#31 did exactly this forcheckout) and would conflict with a manual edit here.Risk
Very low. The only executable change is the action version; everything else is comments. The workflow is inert until dispatched, and every publish gate still runs ahead of the irreversible step.
Backwards-compat
None affected. No source, no published artifact, no other workflow touched.
0.1.0-dev.4on npm is unaffected.Privacy copy
No user-facing privacy copy.
🤖 Generated with Claude Code