Skip to content

fix(ci): remove the ungated publish workflow that could ship 0.2.0 over the real 0.1.8 - #66

Open
yakimoto wants to merge 1 commit into
mainfrom
fix/remove-ungated-publish
Open

fix(ci): remove the ungated publish workflow that could ship 0.2.0 over the real 0.1.8#66
yakimoto wants to merge 1 commit into
mainfrom
fix/remove-ungated-publish

Conversation

@yakimoto

@yakimoto yakimoto commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Closes #65.

Deletes .github/workflows/publish.yml. One file, 27 lines, nothing added.

What was armed

This repo could publish over the real @wave-av/mcp-server with nothing but a tag — no version bump, no edit. That's the difference from the equivalent hazard in wave-av/adk#64, where the local version is behind the published one and a tag fails on duplicate-version.

value
package.json here 0.2.0
npm latest 0.1.8

0.2.0 is unpublished and higher, so npm accepts it, and npm publish with no --tag writes to latest regardless of semver.

What would have shipped

Roughly a third of the package it replaced:

copy version src files LOC files in src/tools
this repo 0.2.0 13 882 7
the copy matching what npm serves 0.1.8 27 2,864 21

Consumers importing any of the other 14 tools would break on a release that reads, from the version number alone, like a routine minor bump.

This repo is not the publisher — measured, not assumed

$ curl -s https://registry.npmjs.org/@wave-av%2Fmcp-server   # → 0.1.8, gitHead e8ae9597…
$ git cat-file -t e8ae9597e859ffe015590b184fedf9a0948fa5e3
fatal: git cat-file: could not get object info

The commit that produced the published 0.1.8 does not exist in this repository. publish.yml was also this repo's only release workflow, so removing it leaves no publish path — which is the correct state until the 21-tool copy is deliberately reconciled here. If this repo is meant to become the publisher, that should happen on purpose, with a gate, not as a side effect of a tag.

The workflow was ungated in every dimension

No version check · no dist-tag routing · no environment · --no-provenance · unpinned actions/checkout@v4 and actions/setup-node@v4 mutable tags in a job holding publish rights.

One correction to the issue, and it changes what this PR is

#65 says "NPM_TOKEN is set on this repo." It isn't — anywhere. Re-measured:

$ gh api repos/wave-av/{mcp-server,sdk,adk,sdks}/actions/secrets   # → zero secrets, all four
$ gh api /orgs/wave-av/actions/secrets --paginate | grep -E 'NPM|NODE_AUTH'   # → no match

So secrets.NPM_TOKEN resolves empty and this workflow would fail at auth rather than publish. That makes this the removal of a latent path, not a live incident — and it means the "revoke the credential" half of the suggested fix is already a no-op, so this PR carries no blast radius at all.

A latent path that re-arms silently the moment someone adds an NPM_TOKEN for an unrelated reason is exactly the kind worth deleting while it's quiet.

CI

Cannot run. Actions are refusing every job org-wide on an account-level billing lock (plan=free, locked=yes). There will be no check here, and an absent check is not a passing one. Nothing to verify by execution in any case — this is a pure deletion, and .github/workflows/ still holds _checks.yml, foundation-gate.yml, issue-ops-triage.yml, lint.yml, public-repo-guard.yml.

Part of the publishing audit in wave-av/sdks#42.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Note

Low Risk
Deletes a latent CI publish path only; no application code or secrets change, and no npm publish can occur from this repo until a new gated workflow is added.

Overview
Removes .github/workflows/publish.yml, which was the repo’s only path to npm publish on v* tag pushes. After this change, tagging alone cannot ship @wave-av/mcp-server from here.

That workflow had no version or dist-tag checks and would publish to latest with --access public --no-provenance. With package.json at 0.2.0 while npm latest is 0.1.8, a successful run would have promoted a much smaller tree (fewer tools) as the default install—not a routine minor bump.

Other workflows (foundation-gate, lint, public-repo-guard, etc.) are unchanged; this is a pure deletion with no runtime blast radius.

Reviewed by Cursor Bugbot for commit 9659363. Configure here.


Summary by cubic

Remove the ungated npm publish workflow to prevent accidentally shipping @wave-av/mcp-server@0.2.0 to latest over the real 0.1.8 (closes #65). Deleting .github/workflows/publish.yml leaves no publish path until a gated flow is added.

  • Bug Fixes
    • Workflow could publish on any v* tag with no checks, dist-tags, or provenance.
    • No NPM_TOKEN is set today, so this was a latent path; removing it prevents silent re-arming if a token is added later.

Written for commit 9659363. Summary will update on new commits.

Review in cubic

…er the real 0.1.8

This repo could publish over the real `@wave-av/mcp-server` with nothing but a tag — no
version bump and no edit required. `package.json` here is 0.2.0 while npm serves 0.1.8 as
`latest`, so 0.2.0 is both unpublished and higher, and `npm publish` with no `--tag` writes
to `latest` regardless of semver. One `v*` tag would have become the version every
`npm install @wave-av/mcp-server` resolves to.

What would have shipped is roughly a third of the package it replaced: 13 source files and
7 tool definitions here, against 27 files and 21 tools in the copy that matches what npm
actually serves. Consumers importing any of the other 14 tools would break on a release that
reads, from the version number alone, like a routine minor bump.

This repo is not the publisher, and that is measured rather than assumed: the published
0.1.8 carries `gitHead` e8ae9597e859ffe015590b184fedf9a0948fa5e3, which is not a valid git
object in this repository. `publish.yml` was also its only release workflow, so removing it
leaves the repo with no publish path — which is the correct state until the 21-tool copy is
deliberately reconciled here.

The workflow was ungated in every dimension: no version check, no dist-tag routing, no
environment, `--no-provenance`, and unpinned `actions/checkout@v4` / `actions/setup-node@v4`
mutable tags in a job holding publish rights.

Worth stating precisely, because it changes what this PR is: `NPM_TOKEN` does not currently
exist. It is absent from this repo, from wave-av/{sdk,adk,sdks}, and from the org-level
secret list, so `secrets.NPM_TOKEN` resolves empty and this workflow would fail at auth
rather than publish. That makes this the removal of a latent path rather than a live
incident — and a latent path that re-arms silently the moment anyone adds an NPM_TOKEN for
an unrelated reason is exactly the kind worth deleting while it is quiet.

Closes #65. Part of the publishing audit in wave-av/sdks#42.
@changeset-bot

changeset-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 9659363

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@cursor

cursor Bot commented Jul 28, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_46d97a92-b7dc-4825-81c8-147a6fa1dde1)

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

💤 Files selected but had no reviewable changes (1)
  • .github/workflows/publish.yml
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: c82701b2-753f-4a0e-9591-facbd02f0e0d

📥 Commits

Reviewing files that changed from the base of the PR and between a199245 and 9659363.

📒 Files selected for processing (1)
  • .github/workflows/publish.yml

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/remove-ungated-publish
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch fix/remove-ungated-publish

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

This repo can publish 0.2.0 over the real 0.1.8 with a single tag — shipping a third of the tool surface to latest

1 participant