feat(sdk-runner): add rust-sdk + per-spec-version config overlays - #419
Merged
Conversation
The mcp-conformance package's fixture bins follow the harness contract directly (URL argv + MCP_CONFORMANCE_SCENARIO env), and the server selects the SEP-2575 stateless lifecycle via STATELESS=1. Requires the repo's pinned Rust toolchain (rustup installs it on demand).
commit: |
Several KNOWN_SDKS entries needed a different invocation when targeting 2026-07-28 — go-sdk's -stateless flag, csharp-sdk's /stateless URL, rust-sdk's STATELESS=1 env, python-sdk's per-revision baseline — and each carried a comment telling the caller which flag to paste. Encode those variants in the entry instead: specOverrides maps a canonical spec version to a partial config that is merged over the base entry when a run targets that version (--spec-version, after 'draft' alias resolution, or the entry's own specVersion default). Explicit CLI flags still win. Keys are validated against the known spec versions at schema level so a 'draft' key or a typo'd date fails loudly instead of silently never matching.
…ation Reuses the canonical spec-version list from #421 instead of keeping a separate copy; SPEC_VERSION_TIMELINE is now exported so the validation message can enumerate the valid keys.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two related additions to the sdk-runner:
1.
rust-sdkinKNOWN_SDKS. Themcp-conformancepackage'sconformance-client/conformance-serverbins follow the harness contract directly (server URL argv +MCP_CONFORMANCE_SCENARIOenv), so no command bridging is needed. The server readsPORTandSTATELESSfrom the environment. Verified end-to-end at--spec-version 2026-07-28: client 333/336 checks (30/32 scenarios), server 112/113 (39/40) — the remaining failures are the pre-spec-#3002 discover shape plus SEP-2350 scope-step-up.2. Per-spec-version config overlays (
specOverrides). Several entries needed a different invocation when targeting 2026-07-28 — go-sdk's-statelessflag, csharp-sdk's/statelessURL, rust-sdk'sSTATELESS=1env, python-sdk's per-revision expected-failures baseline — and each carried a comment telling the caller which flag to paste. Those variants now live in the entry itself:The matching overlay is merged over the base entry when a run targets that version (
--spec-version, afterdraftalias resolution, or the entry's ownspecVersiondefault), sosdk go-sdk --mode server --spec-version 2026-07-28is the whole command. Precedence: explicit CLI flag > overlay > base entry. Keys are validated against the known spec versions at schema level, so adraftkey or a typo'd date fails loudly instead of silently never matching.Verified live for all four entries: go starts stateless with no flags at 2026-07-28, rust picks up
STATELESS=1via thedraftalias, python auto-selectsexpected-failures.2026-07-28.yml, and the no-flag control still starts go with-stateless=false.