GitHub
10/24/2026, 9:52 AMmsiexec timeouts, but has no dependency on it.
Problem
• The Set target warning and the node page treated a host as Windows only when its platform was exactly windows, while pkg/nodes already recognises windows, win, win32 and win64.
• Two tests still carried titles from before Windows was supported.
• The docs did not say that Windows hosts need the new osctrld, or that Windows MSI upgrades are amd64 only.
Change
• Platform names:
• CountWindowsByEnv now counts nodes whose lowercased platform is in the same list pkg/nodes uses for its Windows bucket, exposed as WindowsPlatforms().
• The frontend isWindows uses the same four names, case-insensitively.
• The Set target warning now appears for environments with win32 hosts, and the node page shows the Windows warning for them.
• The other platform rules are unchanged: the node-row deny-list (freebsd) and `Resolve`'s GOOS request platform.
• Test titles:
• The node page test that mocked platform_unsupported is retitled to say it covers an unsupported, non-Windows host.
• The "unsupported" case in TestOsqueryHandlerNeverAnswers404 now uses freebsd/amd64/deb, a genuinely unsupported combination.
• Docs: ARCHITECTURE.md now says Windows hosts need the new osctrld to upgrade. Until then they count as eligible and waiting in rollout progress and as behind in osctrld_osquery_behind. It also says Windows MSI upgrades are amd64 only.
Security and operational impact
None. No API, schema or permission changes, and no OpenAPI change. The SQL list is a package-level constant of lowercase literals bound as a parameter.
Validation
• go test ./pkg/... ./cmd/... -count=1, go vet ./..., gofmt -l cmd pkg
• `golangci-lint run ./pkg/... ./cmd/...`: 0 issues
• Frontend: npm test (666 tests) and npm run check
• New tests cover:
• CountWindowsByEnv counting win32, Win64 and windows, and not ubuntu, darwin, another environment or a deleted node
• a frontend table test for isWindows with windows, Windows, WIN, Win32, win64, ubuntu, darwin, an empty string and undefined
• the node page warning for a win32 host
Notes
• WindowsPlatforms() returns the shared list rather than a copy. Nothing mutates it today.
• applyPlatformBucket and NormalizePlatformBucket still compare platform names case-sensitively, as before. CountWindowsByEnv is now case-insensitive, so an unusual spelling like Windows is counted as a Windows host here but bucketed as "other" elsewhere. This predates the change and is left alone.
jmpsec/osctrlGitHub
10/24/2026, 10:22 AM