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.
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
Public/Private Output Boundaries
Dry-run logs must not print tokens, npm credentials, GitHub auth details, local paths, or environment dumps.
Acceptance Criteria
Testing Requirements
npm run test:cimust pass.Additional Test Scenarios