Skip to content

ci(windows): add windows-process workflow for OpenProcess liveness verification (#1911 follow-up) - #1913

Merged
topcheer merged 1 commit into
mainfrom
ci/windows-process-smoke
Sep 9, 2026
Merged

ci(windows): add windows-process workflow for OpenProcess liveness verification (#1911 follow-up)#1913
topcheer merged 1 commit into
mainfrom
ci/windows-process-smoke

Conversation

@topcheer

@topcheer topcheer commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Follow-up to #1911 per the standing windows-real-machine policy.

Why: CI is ubuntu-only; the Windows branch of IsProcessAlive (OpenProcess + non-blocking WaitForSingleObject, incl. the new ERROR_INVALID_PARAMETER=dead verdict) never executes in CI. windows-proxy covers only the proxy stack. TestIsProcessAlive_NonExistent asserts false and turns red on a real Windows kernel exactly when the 87 branch regresses (stated in #1911).

What: new windows-process workflow mirroring windows-proxy (#761) conventions: windows-latest, path-triggered on internal/util/process*.go + the workflow file itself, plus workflow_dispatch. Test step: go test -tags goolm -count=1 -v -run "IsProcessAlive" ./internal/util/ — filter covers all 5 tests (TestIsProcessAlive_CurrentProcess/NonExistent/InvalidPID, TestIsProcessAliveProc_CurrentProcess/Nil, name cross-checked per prior filter-miss lessons).

Validation (isolated clone at f21ef8f):

  • YAML parses clean
  • GOOS=windows GOARCH=amd64 go build -tags goolm ./internal/util/ exit 0
  • Filter ↔ test-name cross-check: 5/5 match

🤖 Generated with ggcode

…rification

Follow-up to PR #1911 (fix(util): OpenProcess ERROR_INVALID_PARAMETER
means dead, #1723 case 1). CI runs ubuntu-only, so the Windows branch of
IsProcessAlive (OpenProcess + non-blocking WaitForSingleObject) never
executes in CI; windows-proxy only covers the proxy stack. This workflow
runs the IsProcessAlive tests on a real windows-latest kernel, where
TestIsProcessAlive_NonExistent is the regression sentinel for the 87
verdict. Mirrors windows-proxy (#761) conventions; per the standing
windows-real-machine policy.

Co-Authored-By: ggcode <noreply@ggcode.dev>

@topcheer topcheer left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Real-machine evidence (windows-latest runner, run 34332189217, head 56f67ab) — all 5 IsProcessAlive tests PASS on a real Windows kernel, including the #1911 regression sentinel:

--- PASS: TestIsProcessAlive_CurrentProcess (0.00s)
--- PASS: TestIsProcessAlive_NonExistent (0.00s)   <- 87=dead verdict guard
--- PASS: TestIsProcessAlive_InvalidPID (0.00s)
--- PASS: TestIsProcessAliveProc_CurrentProcess (0.00s)
--- PASS: TestIsProcessAliveProc_Nil (0.00s)
PASS

This IS the post-#1911 windows-real-machine smoke per standing policy; the workflow makes it permanent (path-triggered on internal/util/process*.go). Static evidence: YAML OK, GOOS=windows go build ./internal/util/ exit 0. Will merge via admin exemption channel per the shared-credential rule.

@topcheer
topcheer merged commit 8a13812 into main Sep 9, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant