Skip to content

feat: add specVersion classification to conformance scenarios#147

Merged
pcarleton merged 5 commits intomainfrom
fweinberger/spec-version-classification
Feb 13, 2026
Merged

feat: add specVersion classification to conformance scenarios#147
pcarleton merged 5 commits intomainfrom
fweinberger/spec-version-classification

Conversation

@felixweinberger
Copy link
Contributor

@felixweinberger felixweinberger commented Feb 13, 2026

Summary

Add a specVersion field to Scenario and ClientScenario interfaces so SDK maintainers and tier-check scoring can filter tests by target spec version.

  • SpecVersion type: 2025-03-26 | 2025-06-18 | 2025-11-25 | draft | extension
  • All 32 server + 23 client scenarios tagged with their spec version
  • --spec-version CLI filter on client, server, and list commands (cumulative for date versions, exact-match for draft/extension)
  • list output shows [specVersion] tag next to each scenario
  • Tier-check output includes per-version pass rate breakdown
  • Helper functions: listScenariosForSpec, listScenariosUpToSpec, getScenarioSpecVersion, etc.

Preview

tier-check output mcp-sdk-tier-audit output
CleanShot 2026-02-13 at 17 21 39 CleanShot 2026-02-13 at 17 52 02

Motivation and Context

PR #1777 (SEP-1730) defines an SDK tiering system where Tier 2 SDKs must pass 80% of tests for the 2025-06-18 spec and Tier 1 must pass 100% for 2025-11-25. Without metadata on scenarios indicating which spec version they target, SDK maintainers cannot know which tests apply to them, and the tier-check scoring logic cannot filter by target version.

How Has This Been Tested

  • pnpm build — clean build, no type errors
  • pnpm test — 77/77 tests pass
  • node dist/index.js list — all scenarios show spec version tags
  • --spec-version 2025-06-18 — cumulative filter works correctly
  • --spec-version draft / extension — exact-match filter works correctly
  • TypeScript compiler enforces specVersion is required on all scenarios

Breaking Changes

  • Scenario and ClientScenario interfaces now require a specVersion field — any external implementations of these interfaces will need to add the field

Types of changes

  • New feature (non-breaking change which adds functionality)

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

@felixweinberger felixweinberger marked this pull request as draft February 13, 2026 14:31
@pkg-pr-new
Copy link

pkg-pr-new bot commented Feb 13, 2026

Open in StackBlitz

npx https://pkg.pr.new/modelcontextprotocol/conformance/@modelcontextprotocol/conformance@147

commit: 95aab33

@felixweinberger felixweinberger force-pushed the fweinberger/spec-version-classification branch 2 times, most recently from 4da4fb2 to 974ca0e Compare February 13, 2026 15:38
@felixweinberger felixweinberger changed the base branch from main to fweinberger/fix-parseoutputdir-recursion February 13, 2026 15:38
@felixweinberger felixweinberger force-pushed the fweinberger/spec-version-classification branch 3 times, most recently from 0af9522 to a2bdeac Compare February 13, 2026 16:10
Base automatically changed from fweinberger/fix-parseoutputdir-recursion to main February 13, 2026 16:13
@felixweinberger felixweinberger force-pushed the fweinberger/spec-version-classification branch from a2bdeac to 7ce9f91 Compare February 13, 2026 16:18
@felixweinberger
Copy link
Contributor Author

felixweinberger commented Feb 13, 2026

Output previews:

tier-check output mcp-sdk-tier-audit output
CleanShot 2026-02-13 at 17 21 39 CleanShot 2026-02-13 at 17 52 02

@felixweinberger felixweinberger force-pushed the fweinberger/spec-version-classification branch from 7ce9f91 to e5f080d Compare February 13, 2026 16:21
@felixweinberger felixweinberger marked this pull request as ready for review February 13, 2026 16:23
@felixweinberger felixweinberger marked this pull request as draft February 13, 2026 16:43
@felixweinberger felixweinberger force-pushed the fweinberger/spec-version-classification branch 2 times, most recently from 0b7797c to 879dffd Compare February 13, 2026 17:21
@felixweinberger felixweinberger marked this pull request as ready for review February 13, 2026 17:52
Each scenario declares which spec versions it applies to as a list.
Scenarios that carry forward (e.g. initialize) list all applicable versions
['2025-06-18', '2025-11-25']. Scenarios removed from newer specs (e.g.
backcompat auth) only list their original version ['2025-03-26'].

- specVersions list on Scenario and ClientScenario interfaces
- --spec-version CLI filter uses simple .includes()
- Tier-check conformance matrix (Server / Client: Core / Client: Auth)
  with per-version columns and unique All* count
- 7 unit tests for specVersions helpers
- Updated tier-audit skill docs with matrix format
The template had an orphan table header (Check | Value | T2 | T1)
with no rows above the conformance matrix, causing an empty table
to render. The scorecard rows below the matrix also lacked their
own header.

Fix: two self-contained tables with clear labels — 'Conformance:'
for the per-version matrix, 'Scorecard:' for the check rows.
Add asterisk footnote ('unique scenarios — a scenario may apply to
multiple spec versions') and rename 'Scorecard' to 'Repository Health'
to match the labels used by the tier-check CLI output.
Added in 83c446d on main after this branch diverged.
@felixweinberger felixweinberger force-pushed the fweinberger/spec-version-classification branch from a1b19a3 to dfa9036 Compare February 13, 2026 17:55
@pcarleton pcarleton enabled auto-merge (squash) February 13, 2026 18:07
@pcarleton pcarleton merged commit 3f9048a into main Feb 13, 2026
7 checks passed
@pcarleton pcarleton deleted the fweinberger/spec-version-classification branch February 13, 2026 18:08
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.

2 participants