Skip to content

publish.yml: notify on failure #101

Description

@stonematt

Problem

publish.yml fails silently. Nothing surfaces a failed release.

Concrete instance: run 33986727640 (2026-09-05) failed publishing v2.1.0. The NPM_TOKEN secret had expired on 2026-08-18, so npm publish returned:

npm error code E404
npm error 404 Not Found - PUT https://registry.npmjs.org/mcp-obsidian-cli
npm error 404  'mcp-obsidian-cli@2.1.0' is not in this registry.

The tag v2.1.0 was already pushed by that point, so the repo looked released while npm, the MCP Registry, and GitHub Releases all stayed on 2.0.4. It sat that way for three days and was only caught by accident while working on an unrelated PR.

The failure mode compounds: the npm step dies first, which skips the MCP Registry publish and the GitHub Release creation. One expired credential silently drops all three.

Acceptance criteria

  • publish.yml has a job or step guarded by if: failure() that fires when any publish step fails.
  • The notification names the failing step, the version being published, and links the run URL.
  • The notification is durable and pull-based, not a channel that scrolls away. An auto-opened GitHub issue is the default choice; a labeled issue is easy to spot and closes when fixed.
  • Repeated failures do not open duplicate issues for the same version.
  • Verified by a deliberate failure on a branch (e.g. a bad token in a test run), not just by reading the YAML.

Notes

Token expiry will recur — the replacement token has its own expiration date. This issue is about surfacing the class of failure, not preventing this one cause. See the Trusted Publishing issue for removing the token entirely.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    afk-readyTight enough for autonomous-agent pickup; orthogonal to status:*enhancementNew feature or requestkind:bseBug or small enhancement; opportunistic / throw-in workstatus: readySpec'd, awaiting pickup

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions