Skip to content

fix(tier-check): extract semver from monorepo release tags, add --tag-prefix#411

Open
hashemix wants to merge 2 commits into
modelcontextprotocol:mainfrom
hashemix:fix/tier-check-monorepo-release-tags
Open

fix(tier-check): extract semver from monorepo release tags, add --tag-prefix#411
hashemix wants to merge 2 commits into
modelcontextprotocol:mainfrom
hashemix:fix/tier-check-monorepo-release-tags

Conversation

@hashemix

@hashemix hashemix commented Jul 26, 2026

Copy link
Copy Markdown

Description:

tier-check's stable-release check fails for any SDK monorepo that publishes per-package releases.

Two flaws:
1- it picks the first non-draft release regardless of which package it belongs to
2- tag_name.replace(/^v/, '') can only parse plain vX.Y.Z tags and fails on package prefixes.

This PR fixes both by extracting semver from anywhere in the tag and adding --tag-prefix to scope release detection to a single package's tag line. Applied to both stable-release and spec-tracking checks.

Motivation and Context

Closes #151

Our monorepo (rust-mcp-stack/rust-mcp-sdk) uses release-please per-crate tags (rust-mcp-sdk-v1.0.1, rust-mcp-transport-v1.0.0). tier-check is not able to parse the right release tag, because parseInt("rust-mcp-sdk-v1.0.1")NaNis_stable = false.

The mcp-use monorepo in #151 hits the sibling problem: the first release in API order belongs to a different package/canary line (mcp-use@1.18.0-canary.3 instead of python-v1.5.2).

How Has This Been Tested?

  • npm test - all tests pass (22 new vitest cases in release.test.ts)
  • npm run lint - clean
  • npm run typecheck - clean
  • npm run build - clean
  • End-to-end: tier-check --repo rust-mcp-stack/rust-mcp-sdk --skip-conformance now shows ✓ Stable Release 1.0.0 (was ✗ Stable Release rust-mcp-transport-v1.0.0)

Breaking Changes

None for single-package repos with plain v1.2.3 tags — behavior is unchanged. Monorepos now need --tag-prefix to scope to the right package, but without it they graduate from "always fails" to "picks the first parseable semver tag."

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

N/A

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.

tier-check: support monorepos with multiple SDK packages

1 participant