Repository navigation
Conversation
|
The red It is GHSA-vfj7-8cjw-p6xm on I tried bumping the dependency that pulls it before reporting. I reverted that rather than push a major bump of the tool Written up with the evidence in #129, where the remaining choices are policy ones — an ignore entry, a qualified gate, or merging past it — which seemed yours to make rather than mine to guess at. This PR needs nothing. |
…-on-every-publish # Conflicts: # packages/core/src/intercept/resolve.ts
Closes #35.
What this changes
Measured on
main, every publish but npm's own reached the registry as an ordinary shell line:So a rule naming
npm.publishcovered the one spelling most projects do not use. All four clients now reach the same action — the registry cannot tell them apart, so neither should a rule — whilebecausestill names the client that ran it, so a ledger row sayspnpm publishrather than claiming npm did.Classes in the new tables, named as the contributing guide asks
cargo— destructive:yank. Write:publish(tagged production),install,owner. Read:search.helm— destructive:uninstall,delete. Write:installandupgrade(tagged production),rollback. Read:list,status,get.pulumi— destructive:destroy. Write:up(tagged production),config set(tagged secrets). Read:preview,stack ls.Package installs:
bun,uv,pipx,gemandbrewnow classify as installing code that then runs here, which only npm, pnpm, yarn and pip did.uv pip installis handled, since it puts the verb one word further along than every other manager.Nothing in an existing table moved.
The one judgement call
Only the publishing verbs route onto npm's table —
publish,unpublish,dist-tag. Routing all ofpnpmthere was the obvious reading of "alias to npm", and it is wrong:pnpm add xispackage.installtoday, and npm's table would have made itnpm.add, a write. That is a real class moving under a command people run fifty times a day. Three tests pinpnpm add,pnpm installandyarn addas package installs so the next person widening this notices.How it was verified
Twenty cases in
resolve.test.ts, all of which fail onmain: the three workalike spellings resolve to whatevernpm publishresolves to (compared against it rather than hard-coded, so the two cannot drift), every cargo, helm and pulumi verb above, the five new package managers, and the three no-regression rows.pnpm format && pnpm typecheck && pnpm test && pnpm deadcodeall clean, pluspnpm build, on Node 24.npm-workalike.tsis its own module becauseresolve.tswent 11 lines over the five-hundred-line cap with it inline, andhouse-style.test.tssaid so.Checklist
pnpm format && pnpm typecheck && pnpm test && pnpm deadcodeall passany, no magic values, noconsole.*outsidecli-output.tsscannow lists three more CLIs, which the changeset names