Skip to content

ci(release): add MCP release candidate dry-run workflow #85

Description

@JSONbored

Parent roadmap: #82

Background

MCP releases need repeatable preflight checks before a tag is pushed. The package is public, and release mistakes are harder to undo than normal PR mistakes.

Goal

Add a release-candidate workflow that validates the package, changelog, tarball, CLI smoke, and provenance readiness without publishing.

Current Behavior

Release checks exist across scripts/workflows, but there is no single dry-run path that maintainers can run before creating a release tag.

Desired Behavior

A maintainer can run one manual workflow or local command set and know whether an MCP release candidate is safe to tag.

Implementation Requirements

  • Add or wire a release-candidate check that does not publish.
  • Verify package version and intended tag format.
  • Verify MCP changelog has a real target version section.
  • Run package tarball allowlist and secret scan.
  • Run packed-package CLI smoke.
  • Verify trusted publishing workflow configuration stays tokenless.

Public/Private Output Boundaries

Dry-run logs must not print tokens, npm credentials, GitHub auth details, local paths, or environment dumps.

Acceptance Criteria

  • Maintainers can run the dry-run before tagging.
  • The workflow fails on malformed tag/version assumptions.
  • The workflow fails if tarball contents include secrets or unintended files.
  • The workflow emits clear next steps without requiring a publish attempt.

Testing Requirements

  • npm run test:ci must pass.
  • Global coverage must remain at or above 97% for lines, statements, functions, and branches.
  • Aim for 98%+ branch coverage locally to avoid CI variance.
  • Add tests for every new branch, fallback path, sanitizer rule, and regression.
  • Add invariant/property-style tests when behavior depends on sorting, gating, scoring, queue pressure, source-upload safety, public/private boundaries, or upstream drift.
  • Public GitHub output must be tested against forbidden language: wallet, hotkey, raw trust score, payout, reward estimate, farming, private reviewability, and public score estimate.
  • MCP/local tooling must prove source contents are not uploaded.

Additional Test Scenarios

  • Success fixture with matching package/version/changelog.
  • Failure fixture for missing changelog section.
  • Failure fixture for unexpected tarball file.
  • Failure fixture for tag/package mismatch.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions