Fix Windows backend runtime isolation - #10
Conversation
Investigation summaryWhat happenedOn Windows, the MCP end-to-end test reached the Docker backend but failed when Kilntainers tried to start the Docker subprocess. The surfaced MCP error was empty because FastMCP wrapped the underlying exception; the actual exception was Why it happenedCLI parser construction discovers every backend. That discovery imported the Modal SDK even when Docker was the selected backend. Modal 1.3.2 changes the process-wide Windows asyncio policy to Parallel execution also exposed several independent sources of test instability: Windows architecture detection could intermittently receive incomplete WMI data, lifecycle tests relied on fixed timing delays, the HTTP lifecycle test used a wrapper process and a fixed port, and cleanup could affect containers created by another worker. What we changed
How we tested itThe original Docker MCP E2E path now passes. We also ran the complete suite in parallel on Windows with Docker available: We additionally ran formatting checks on every changed file, type checking on the changed production files, and What we did not test
|
Summary
Dependency
Depends on #9. This branch starts from #9's MCP 1.x compatibility commit because the implementation and full suite were verified with that constraint. Please merge #9 first; once it lands, GitHub will automatically remove the shared dependency commit from this PR's diff.
Test plan
uv run python -m pytest -q -n auto .— 344 passed, 88 skippeduvx ruff format --checkon all changed files — passeduvx ty checkon changed production files — passedgit diff --check— passed