From c8a686f3371cbce82616bc33173c50eb64c0bda0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Oct 2026 18:28:13 +0000 Subject: [PATCH 1/2] Bump the nuget group with 8 updates Bumps Microsoft.CodeAnalysis.NetAnalyzers from 10.0.401 to 10.0.402 Bumps Microsoft.EntityFrameworkCore from 10.0.12 to 10.0.13 Bumps Microsoft.Extensions.DependencyInjection from 10.0.12 to 10.0.13 Bumps Microsoft.Extensions.Hosting from 10.0.12 to 10.0.13 Bumps Microsoft.Extensions.Logging.Abstractions from 10.0.12 to 10.0.13 Bumps Microsoft.NET.Test.Sdk from 18.10.1 to 18.11.0 Bumps Microsoft.VisualStudio.Threading.Analyzers from 18.7.23 to 18.12.1 Bumps xunit.runner.visualstudio from 4.0.0 to 4.0.1 --- updated-dependencies: - dependency-name: Microsoft.CodeAnalysis.NetAnalyzers dependency-version: 10.0.402 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Microsoft.EntityFrameworkCore dependency-version: 10.0.13 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Microsoft.Extensions.DependencyInjection dependency-version: 10.0.13 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Microsoft.Extensions.Hosting dependency-version: 10.0.13 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Microsoft.Extensions.Logging.Abstractions dependency-version: 10.0.13 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.11.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: Microsoft.VisualStudio.Threading.Analyzers dependency-version: 18.12.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget ... Signed-off-by: dependabot[bot] --- Directory.Packages.props | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index b5f33da..3160c83 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -6,15 +6,15 @@ - - + + - - - - + + + + - + @@ -24,6 +24,6 @@ - + \ No newline at end of file From df454945dbef53538412701d457ef84ad257195c Mon Sep 17 00:00:00 2001 From: Valentin Clergue Date: Wed, 14 Oct 2026 20:38:01 +0200 Subject: [PATCH 2/2] test(mcp): pin per-request-revision test client to 2026-07-28 With ProtocolVersion unset, the SDK client probes server/discover with a 5-second DiscoverProbeTimeout and silently falls back to the initialize handshake when it elapses. On a loaded Windows runner that happened, so McpToolRootsTests ran against the session-scoped revision and failed (roots cached across requests / published to the shared cache). Pin the client to 2026-07-28 so it can never downgrade, and bound the probe by InitializationTimeout alone so a slow runner does not fail it. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../Helpers/InProcessMcpSession.cs | 12 +++++++++--- .../McpToolRootsTests.cs | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/tests/ProjGraph.Tests.Integration.Mcp/Helpers/InProcessMcpSession.cs b/tests/ProjGraph.Tests.Integration.Mcp/Helpers/InProcessMcpSession.cs index 039d611..aced357 100644 --- a/tests/ProjGraph.Tests.Integration.Mcp/Helpers/InProcessMcpSession.cs +++ b/tests/ProjGraph.Tests.Integration.Mcp/Helpers/InProcessMcpSession.cs @@ -86,8 +86,11 @@ public static McpServerOptions CreateServerOptions() /// When (the default), pins the client to the 2025-11-25 /// handshake so client capabilities are established session-scoped on the root /// — required by tests that drive that root instance directly. When - /// , the client negotiates the latest revision, where capabilities - /// arrive per request in _meta and are visible only on the request-scoped server. + /// , pins the client to 2026-07-28, where capabilities arrive + /// per request in _meta and are visible only on the request-scoped server. Pinning + /// matters: left unset, the client falls back to the initialize handshake whenever its + /// server/discover probe outlasts + /// (5 seconds), which a loaded CI runner can hit, silently testing the wrong revision. /// public static McpClientOptions CreateClientOptionsWithRoots( Func> rootProvider, @@ -98,7 +101,10 @@ public static McpClientOptions CreateClientOptionsWithRoots( #pragma warning disable MCP9005 return new McpClientOptions { - ProtocolVersion = pinDownLevel ? "2025-11-25" : null, + ProtocolVersion = pinDownLevel ? "2025-11-25" : "2026-07-28", + // The probe is only issued on 2026-07-28; leave it bounded by InitializationTimeout + // alone so a slow runner does not fail the connection. + DiscoverProbeTimeout = Timeout.InfiniteTimeSpan, ClientInfo = new Implementation { Name = "ProjGraph.Tests", diff --git a/tests/ProjGraph.Tests.Integration.Mcp/McpToolRootsTests.cs b/tests/ProjGraph.Tests.Integration.Mcp/McpToolRootsTests.cs index 6a9cd1d..1909d5a 100644 --- a/tests/ProjGraph.Tests.Integration.Mcp/McpToolRootsTests.cs +++ b/tests/ProjGraph.Tests.Integration.Mcp/McpToolRootsTests.cs @@ -49,8 +49,8 @@ public async Task CallTool_RelativePath_OnCurrentProtocol_ShouldResolveAgainstTh await using var session = await InProcessMcpSession.StartAsync( CreateServerOptionsWithTools(), - // Not pinned: the client negotiates the latest revision (2026-07-28), which drops the - // initialize handshake. This is the case that silently regressed on the v2 upgrade. + // Pinned to the latest revision (2026-07-28), which drops the initialize handshake. + // This is the case that silently regressed on the v2 upgrade. InProcessMcpSession.CreateClientOptionsWithRoots(() => [_temp.DirectoryPath], pinDownLevel: false)); var result = await session.Client.CallToolAsync(