This repo can publish over the real @wave-av/mcp-server, and unlike the equivalent hazard in wave-av/adk (wave-av/adk#64), it needs nothing but a tag — no version bump, no edit. The result would be a package one third the size of the one it replaces, on latest.
Why it's armed right now
on:
push:
tags: ['v*']
...
- run: npm publish --access public --no-provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_TOKEN is set on this repo. There is no version gate, no dist-tag, and no environment.
|
value |
package.json here |
0.2.0 |
npm latest |
0.1.8 |
0.2.0 is unpublished and higher, so npm accepts it. npm publish with no --tag writes to latest regardless of semver. So one v* tag pushed here becomes the version every npm install @wave-av/mcp-server resolves to.
That is the difference from wave-av/adk#64: there, the local version (1.0.2) is behind the published one and already taken, so a tag fails on duplicate-version and the hazard only opens if someone bumps. Here the gap is already open.
What would ship
This repo does not publish @wave-av/mcp-server today. Measured from git refs, not working trees:
| copy |
version |
src files |
LOC |
files in src/tools |
| this repo |
0.2.0 |
13 |
882 |
7 |
| the copy that matches what npm serves |
0.1.8 |
27 |
2,864 |
21 |
So the version number is ahead while the package is roughly a third of the size, with a third of the tool definitions. Consumers importing any of the other 14 tools would break on a release that looks, from the version alone, like a routine minor bump.
I want to be explicit that I got this backwards at first: I read 0.2.0 > 0.1.8 and concluded this repo was the readier one. It isn't. A higher version number is not evidence of a fuller package, and that's precisely why a version-only guard doesn't catch this class.
Suggested fix
Same shape as wave-av/adk#64 — stop this repo from being able to publish:
- Remove the
push: tags: ['v*'] trigger from .github/workflows/publish.yml, or delete the workflow.
- Revoke
NPM_TOKEN on this repo. That alone disarms it immediately, needs no merge and no CI, and is trivially reversible if this repo later becomes the real publisher.
If this repo is meant to become the publisher, that's a reasonable outcome — but it should happen deliberately, after the 21-tool copy is reconciled into it, not as a side effect of a tag.
Context
Part of the publishing audit in wave-av/sdks#42. Filing rather than fixing: revoking a publish credential is outside my lane, and org Actions are billing-locked right now so nothing here can be verified in CI anyway.
This repo can publish over the real
@wave-av/mcp-server, and unlike the equivalent hazard inwave-av/adk(wave-av/adk#64), it needs nothing but a tag — no version bump, no edit. The result would be a package one third the size of the one it replaces, onlatest.Why it's armed right now
NPM_TOKENis set on this repo. There is no version gate, no dist-tag, and no environment.package.jsonherelatest0.2.0is unpublished and higher, so npm accepts it.npm publishwith no--tagwrites tolatestregardless of semver. So onev*tag pushed here becomes the version everynpm install @wave-av/mcp-serverresolves to.That is the difference from wave-av/adk#64: there, the local version (1.0.2) is behind the published one and already taken, so a tag fails on duplicate-version and the hazard only opens if someone bumps. Here the gap is already open.
What would ship
This repo does not publish
@wave-av/mcp-servertoday. Measured from git refs, not working trees:src/toolsSo the version number is ahead while the package is roughly a third of the size, with a third of the tool definitions. Consumers importing any of the other 14 tools would break on a release that looks, from the version alone, like a routine minor bump.
I want to be explicit that I got this backwards at first: I read
0.2.0 > 0.1.8and concluded this repo was the readier one. It isn't. A higher version number is not evidence of a fuller package, and that's precisely why a version-only guard doesn't catch this class.Suggested fix
Same shape as wave-av/adk#64 — stop this repo from being able to publish:
push: tags: ['v*']trigger from.github/workflows/publish.yml, or delete the workflow.NPM_TOKENon this repo. That alone disarms it immediately, needs no merge and no CI, and is trivially reversible if this repo later becomes the real publisher.If this repo is meant to become the publisher, that's a reasonable outcome — but it should happen deliberately, after the 21-tool copy is reconciled into it, not as a side effect of a tag.
Context
Part of the publishing audit in wave-av/sdks#42. Filing rather than fixing: revoking a publish credential is outside my lane, and org Actions are billing-locked right now so nothing here can be verified in CI anyway.