Repository navigation
Build the Windows probe with a Visual Studio the runner actually has - #29
Merged
Merged
Conversation
CMake's default search on Windows falls back to NMake Makefiles, which needs a developer prompt this step does not have, so the runner image moving to VS 2026 broke both windows-x64 targets. vswhere says which Visual Studio is installed and CMake says what it calls that one, so neither name is written down here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Naming the generator is not enough on its own: the build is pinned to CMake 3.31.10 to match the pinned vcpkg baseline, and that CMake has no Visual Studio 2026 generator to name. Install a newer one for the Windows verification step, which only consumes the installed package and so is independent of the pin. Also report a cmake --help failure as itself rather than as no generator found. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The two windows-arm64 legs skip the probe, so the extra install was a download that could only fail for them. A mutable @latest in a job that holds GH_TOKEN is also worth removing; both uses now name the commit that latest points at. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Code Review
This pull request updates the behavioral probe verification script on Windows to dynamically detect the installed Visual Studio version using vswhere and select the appropriate CMake generator, preventing build failures due to CMake falling back to NMake. The design documentation is also updated to reflect these changes. Feedback on the changes highlights a critical issue where the use of head -1 in a pipeline under pipefail can cause a SIGPIPE (exit code 141) and abort the script; a suggestion is provided to temporarily disable pipefail within the subshell to resolve this.
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.
⊙ Problem
Both
windows-x64targets failed in run 37891970381, in the behavioural probe:The other eight targets passed, and the archive itself was correct on Windows. The counter-name check ran there for the first time and behaved exactly as designed:
Both libraries carry the name, because vcpkg compiles release objects with
/Z7and the identicalPerfContextBasefield reaches the archive as CodeView type info. Only the strict inequality separates them. A presence test would have failed all four Windows targets.💡 Solution
The runner image is now
windows-2025-vs2026. Two things were wrong, and only the pair fixes it.The probe never named a generator, so the runner image chose our toolchain. CMake's Windows default search found no Visual Studio it could use and fell back to NMake Makefiles, which needs a developer prompt this step does not have.
The CMake on
PATHwas 3.31.10, not the image's 4.4.3. The build pins that version to match the pinned vcpkg 2026.06.24 baseline, andlukka/get-cmakeprepends it. TheVisual Studio 18 2026generator arrived in CMake 4.2, so 3.31.10 had nothing to fall back to. Naming the generator alone would still have failed both jobs — only with a readable error. Verified against a CMake 3.31-shapedcmake --help: the lookup returns empty for VS major 18.The build's pin is deliberate and stays. The probe only consumes the installed package, so it gets its own CMake on the Windows legs that actually run it.
🔧 Changes
.github/scripts/verify-prebuild-archive.shvswheregives the installed VS major version andcmake --helpgives that generator's name, so neither is hardcoded. Every lookup failure exits with its own message rather than falling through to a default that cannot build..github/workflows/build.ymlrun_probe, after the build so the pinned 3.31.10 still builds the libraries. The two x64 entries also name-A x64instead of inheriting the host architecture..github/DESIGN.md✅ Verification
Route: local runs on
darwin-arm64plus fixture tests for the Windows-only path, which cannot be reached on this machine.nm59 vs 0, probeuser_key_comparison_count40,959 vs 0.cmake --helpfixture: VS major 18 →Visual Studio 18 2026, 17 →Visual Studio 17 2022, 19 → empty. Against a CMake 3.31-shaped fixture, 18 → empty, which is the evidence that the CMake bump is load-bearing.18.10.12217.157and17.7.34009.444, CRLF included.no vswhere.exe at …instead of falling through to a default generator.shellcheckclean.Not verified here: that the selected generator builds the probe on the runner, and that CMake 4.4.3 installs cleanly alongside the pinned 3.31.10.
build.ymlhas nopull_requesttrigger, so a dispatch is the only proof — the same gap that let the previous two defects reachmain.🤖 Generated by Claude (Anthropic); posted via @cb1kenobi.
Related PRs: #28 overlaps (repaired the same verification step; merged), #27 overlaps (added it; merged)
Complexity: medium
Review-Coverage: authored=claude; ran=cursor-composer,codex,gemini,cursor-muse; adjudicated=domain; declined=cursor-grok,cursor-kimi; rounds=3; full=2 @ 4229597
Review-Attention: read ~3m (decisions: probe-generator-strategy, windows-vswhere-hard-requirement) @ 4229597