Repository navigation
Fix Windows background test-run signal coverage - #377
Conversation
Track: pm-2kkl Avoid sending OS-level signals from background test child fixtures to the Vitest worker parent on Windows. The signal coverage now emits SIGTERM/SIGINT from the test process after worker progress is observed, which preserves the stop-path assertions without terminating the test runner. Add the background test-run spec to the required Windows regression slice so GH-376 is covered before nightly. Keep the MCP dynamic upgrade routing test dry-run only so coverage remains network-free. Validation: pm test pm-2kkl --run --progress; node scripts/run-tests.mjs coverage (100/100/100/100); pnpm release:gates; manual isolated dist/cli.js temp smoke.
|
@codex review |
|
Warning Review limit reached
More reviews will be available in 37 minutes and 57 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Repository UI (base), Organization UI (inherited) Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (6)
📝 WalkthroughWalkthroughThe PR updates Windows investigation records, adds Windows regression coverage, hardens two worker-shutdown tests, and narrows the Docs workflow push trigger paths. ChangesWindows regression investigation and hardening
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
✅ Action performedFull review finished. |
|
To use Codex here, create a Codex account and connect to github. |
There was a problem hiding this comment.
Code Review
This pull request hardens the background test run lifecycle tests on Windows by replacing child process self-termination (process.kill) with process-level event emission (process.emit) from the parent test process once progress is detected in the stderr log. It also updates an MCP dynamic package integration test to use a dry-run option to avoid network requests. The reviewer identified a potential race condition in one of the modified tests due to a hardcoded 50ms timeout for emitting SIGTERM and suggested polling the stderr log for progress instead to ensure test stability on slow CI environments.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
There was a problem hiding this comment.
Code Review
This pull request addresses Windows Vitest worker self-termination issues in background-run signal tests by refactoring signal handling to use parent process event emission instead of child process kills, and updates the MCP dynamic package upgrade test to run as a dry-run. The review feedback highlights potential flakiness in the test-runs-command tests: first, using a hardcoded 50ms timeout to emit SIGTERM is prone to race conditions and should be replaced with a polling mechanism; second, the 500ms polling limit in the progress-ready signal helper should be increased to 10 seconds to ensure stability on slower CI environments.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Track: pm-2kkl Address Gemini review feedback by replacing the remaining fixed 50ms SIGTERM timer with stderr-progress polling and extending the signal readiness window to 10 seconds. Validation: node scripts/run-tests.mjs test -- tests/unit/commands/test-runs-command.spec.ts; PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/cli/cli-main-errors.spec.ts tests/unit/core/schema/runtime-schema-path-win32-guard.spec.ts tests/unit/helpers/scriptModule.spec.ts tests/unit/scripts/ tests/unit/packages/runtime-loaders.spec.ts tests/unit/core/telemetry/telemetry-runtime.spec.ts tests/unit/commands/test-runs-command.spec.ts; pm test pm-2kkl --run --progress.
|
@codex review Re-requesting review after pushing 2c69fcf, which addresses Gemini feedback by replacing the remaining fixed signal timer with progress polling and extending readiness polling to 10 seconds. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@tests/unit/commands/test-runs-command.spec.ts`:
- Around line 795-812: The `signalWhenProgressReady` helper in
`runBackgroundTestRunWorker` is racing on slow Windows CI because it gives up
too quickly before `stderr` contains `id=pm-stop`. Increase the polling budget
in that helper (either by more attempts or a longer fixed timeout) so the marker
is observed before emitting `SIGTERM` and `SIGINT`, keeping the `stopped`
assertions deterministic.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: ASSERTIVE
Plan: Pro
Run ID: b93bd4b6-b670-45e7-870b-884d90e9d53a
📒 Files selected for processing (5)
.agents/pm/history/pm-2kkl.jsonl.agents/pm/issues/pm-2kkl.toon.github/workflows/ci.ymltests/integration/mcp-dynamic-package-actions.spec.tstests/unit/commands/test-runs-command.spec.ts
|
To use Codex here, create a Codex account and connect to github. |
|
✅ Action performedFull review finished. |
Track: pm-2kkl Record that PR #377 follow-up commit addressed Gemini timing feedback and that review agents were re-requested on the updated head.
|
@codex review Re-requesting review after final tracker-evidence commit 579e0fc. Code changes are unchanged from 2c69fcf; this commit only records pm review-loop evidence. |
|
To use Codex here, create a Codex account and connect to github. |
|
✅ Action performedFull review finished. |
There was a problem hiding this comment.
Code Review
This pull request updates issue tracking logs and hardens tests to prevent Vitest worker self-termination on Windows. Specifically, in tests/unit/commands/test-runs-command.spec.ts, the background test run lifecycle tests are modified to emit SIGTERM and SIGINT signals directly from the test process via process.emit once progress is detected, rather than relying on child processes killing the parent process. Additionally, the MCP dynamic package action integration test is updated to run as a dry run. The reviewer suggested using Promise.prototype.finally() in one of the test blocks for consistency with other similar implementations in the file.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
There was a problem hiding this comment.
Code Review
This pull request updates tracking files, configures the MCP dynamic package upgrade integration test to use a dry-run option, and refactors background test run lifecycle tests to emit process signals locally instead of calling process.kill on the parent process. The review feedback highlights that emitting global SIGTERM and SIGINT events on the process object can still trigger Vitest's own signal handlers, potentially causing unexpected worker exits. It suggests mocking process.on and process.off to capture and invoke the registered signal handlers directly, thereby isolating the signal simulation.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Track: pm-2kkl Address current Gemini review feedback by capturing the SIGTERM/SIGINT handlers registered by runBackgroundTestRunWorker and invoking those handlers directly instead of emitting process-wide signals in Vitest. Validation: node scripts/run-tests.mjs test -- tests/unit/commands/test-runs-command.spec.ts; PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/cli/cli-main-errors.spec.ts tests/unit/core/schema/runtime-schema-path-win32-guard.spec.ts tests/unit/helpers/scriptModule.spec.ts tests/unit/scripts/ tests/unit/packages/runtime-loaders.spec.ts tests/unit/core/telemetry/telemetry-runtime.spec.ts tests/unit/commands/test-runs-command.spec.ts; pnpm typecheck; pm test pm-2kkl --run --progress.
|
@codex review Re-requesting review after f633255, which addresses current Gemini feedback by capturing and invoking the worker SIGTERM/SIGINT handlers directly instead of emitting process-wide signals. |
|
To use Codex here, create a Codex account and connect to github. |
|
✅ Action performedFull review finished. |
There was a problem hiding this comment.
Code Review
This pull request hardens the background test run lifecycle tests on Windows by replacing real OS signal termination with mocked process event listeners, and updates the MCP dynamic package upgrade test to run as a dry-run. The review feedback correctly identifies a potential test hang in the new polling logic if the background worker fails or exits early, and suggests introducing a flag to terminate the polling loop immediately.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Track: pm-2kkl Address latest Gemini review feedback by adding workerFinished guards to background signal readiness polling so early worker exit cannot add a 10-second wait. Validation: node scripts/run-tests.mjs test -- tests/unit/commands/test-runs-command.spec.ts; PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/cli/cli-main-errors.spec.ts tests/unit/core/schema/runtime-schema-path-win32-guard.spec.ts tests/unit/helpers/scriptModule.spec.ts tests/unit/scripts/ tests/unit/packages/runtime-loaders.spec.ts tests/unit/core/telemetry/telemetry-runtime.spec.ts tests/unit/commands/test-runs-command.spec.ts; pnpm typecheck; pm test pm-2kkl --run --progress.
|
@codex review Re-requesting review after d3b4c42, which addresses latest Gemini feedback by adding workerFinished guards so signal-readiness polling exits promptly if the worker finishes early. |
|
To use Codex here, create a Codex account and connect to github. |
|
✅ Action performedFull review finished. |
There was a problem hiding this comment.
Code Review
This pull request resolves Windows Vitest worker self-termination issues in background-run signal tests by replacing real process signals with mocked process.on and process.off handlers to simulate SIGTERM and SIGINT events. It also updates an integration test to run the MCP upgrade action as a dry-run to keep it network-free. The reviewer points out that mocking global singletons like process.on and process.off without delegating unhandled events to their original implementations can lead to flaky tests, and provides code suggestions to delegate non-targeted events to their original implementations.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
|
✅ Action performedFull review finished. |
There was a problem hiding this comment.
Code Review
This pull request refactors the background test run lifecycle tests in tests/unit/commands/test-runs-command.spec.ts to prevent Windows Vitest worker self-termination. Instead of having child processes send signals to the parent process via process.kill, the tests now capture and manually invoke registered SIGTERM and SIGINT handlers using a new captureProcessSignalHandlers helper. Additionally, the MCP dynamic package upgrade test is updated to use a dry-run option to keep it network-free. The review feedback correctly identifies that the immediately-invoked function expressions (IIFEs) used for signal polling should have .catch(() => {}) appended directly to them to prevent potential unhandled promise rejections.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Track pm-2kkl. Address current Gemini feedback on PR #377 by attaching catch handlers directly to the signal readiness IIFE promises and awaiting the already-handled promises in finally.\n\nVerification:\n- node scripts/run-tests.mjs test -- tests/unit/commands/test-runs-command.spec.ts\n- PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/cli/cli-main-errors.spec.ts tests/unit/core/schema/runtime-schema-path-win32-guard.spec.ts tests/unit/helpers/scriptModule.spec.ts tests/unit/scripts/ tests/unit/packages/runtime-loaders.spec.ts tests/unit/core/telemetry/telemetry-runtime.spec.ts tests/unit/commands/test-runs-command.spec.ts\n- pnpm typecheck\n- git diff --check\n- PM_AUTHOR=codex-gpt5 pm test pm-2kkl --run --progress
|
Review agents: new head 4197d88 addresses current Gemini feedback by attaching catch handlers directly to the signal readiness IIFE promises and awaiting the already-handled promises in finally. Please re-review the current diff.\n\n@codex review\n/gemini review\n@gemini-code-assist review\n@coderabbitai full review |
|
To use Codex here, create a Codex account and connect to github. |
|
✅ Action performedFull review finished. |
There was a problem hiding this comment.
Code Review
This pull request hardens the background test run lifecycle tests on Windows by capturing and manually triggering SIGTERM and SIGINT handlers instead of using process.kill, which was causing Vitest worker self-termination. It also updates MCP dynamic package actions to use a dry-run option. The reviewer suggests extending the signal-capturing mock to cover process.addListener and process.removeListener aliases for completeness and robustness.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Track: pm-2kkl - add addListener/removeListener alias capture to the shared background signal test helper - record current linked pm test evidence for the PR review follow-up Verification: - node scripts/run-tests.mjs test -- tests/unit/commands/test-runs-command.spec.ts - PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/cli/cli-main-errors.spec.ts tests/unit/core/schema/runtime-schema-path-win32-guard.spec.ts tests/unit/helpers/scriptModule.spec.ts tests/unit/scripts/ tests/unit/packages/runtime-loaders.spec.ts tests/unit/core/telemetry/telemetry-runtime.spec.ts tests/unit/commands/test-runs-command.spec.ts - pnpm typecheck - git diff --check - PM_AUTHOR=codex-gpt5 pm test pm-2kkl --run --progress
|
@codex review |
|
To use Codex here, create a Codex account and connect to github. |
|
✅ Action performedFull review finished. |
There was a problem hiding this comment.
Code Review
This pull request hardens the background test run lifecycle tests in tests/unit/commands/test-runs-command.spec.ts to prevent Vitest worker self-termination on Windows. Instead of having child processes send signals to the parent process, the tests now capture and manually invoke the registered SIGTERM and SIGINT handlers once progress is observed in the stderr log. Additionally, the MCP dynamic package upgrade test in tests/integration/mcp-dynamic-package-actions.spec.ts has been updated to use a dry-run option to keep it network-free and stable. The issue tracking files have also been updated to reflect these changes. As there are no review comments, I have no feedback to provide.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Track: pm-2kkl - ensure the required Docs and Skills check is emitted for non-doc PRs - keep push-to-main docs workflow path filters unchanged Verification: - pnpm quality:docs-skills - pnpm quality:docs-links - git diff --check - PM_AUTHOR=codex-gpt5 pm test pm-2kkl --run --progress
|
Review agents: new head d7ebc20 fixes the required Docs and Skills check by running docs.yml on every pull_request while preserving push path filters. Please re-review the current diff. @codex review |
|
✅ Action performedFull review finished. |
There was a problem hiding this comment.
Code Review
This pull request refactors background test-run signal tests in tests/unit/commands/test-runs-command.spec.ts to capture and trigger signal handlers manually, preventing Vitest worker self-termination on Windows. It also updates tests/integration/mcp-dynamic-package-actions.spec.ts to use a dry-run option for the upgrade action. Feedback on the changes suggests simplifying the offSpy implementation in the signal capture helper by consolidating redundant fallback return statements.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.agents/pm/issues/pm-2kkl.toon (1)
17-51: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick winUpdate the canonical issue synopsis to match the new scope.
Lines 17-51 now document GH-376 / Windows Node 24 investigation, expanded regression coverage, and the docs-gate unblock, but the top-level
title/description/bodystill describe GH-348 / Node20 and the older 4-spec regression slice. Any tooling or triage flow that reads the issue metadata instead of the comment log will surface the wrong incident and verification state.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.agents/pm/issues/pm-2kkl.toon around lines 17 - 51, The issue synopsis metadata is stale and still points to GH-348 / Node 20 plus the old 4-spec regression scope, while the comment log now reflects GH-376 / Windows Node 24 and the docs-gate unblock. Update the canonical issue fields in this file’s top-level title, description, and body so they match the current incident and verification state. Keep the synopsis aligned with the latest notes and regression coverage referenced in the issue log so tooling and triage read the correct status.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@tests/unit/commands/test-runs-command.spec.ts`:
- Around line 855-877: The signal-stop and force-kill tests both reimplement the
same polling-and-signal dispatch logic, so extract that block into a shared
helper to prevent divergence. Move the `signalWhenProgressReady` behavior into a
reusable function (for example near the affected test cases) parameterized by
the stderr marker and the signal handler groups, and reuse it from both the
existing test around the `sigtermHandlers`/`sigintHandlers` flow and the
force-kill test so the `progressObserved`/`workerFinished` guard stays
consistent in one place.
---
Outside diff comments:
In @.agents/pm/issues/pm-2kkl.toon:
- Around line 17-51: The issue synopsis metadata is stale and still points to
GH-348 / Node 20 plus the old 4-spec regression scope, while the comment log now
reflects GH-376 / Windows Node 24 and the docs-gate unblock. Update the
canonical issue fields in this file’s top-level title, description, and body so
they match the current incident and verification state. Keep the synopsis
aligned with the latest notes and regression coverage referenced in the issue
log so tooling and triage read the correct status.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: ASSERTIVE
Plan: Pro
Run ID: 38f622ce-fdd2-463d-807d-cb70cb07e56c
📒 Files selected for processing (4)
.agents/pm/history/pm-2kkl.jsonl.agents/pm/issues/pm-2kkl.toon.github/workflows/docs.ymltests/unit/commands/test-runs-command.spec.ts
💤 Files with no reviewable changes (1)
- .github/workflows/docs.yml
Track: pm-2kkl - consolidate captured process.off fallback handling - share progress-marker signal dispatch across background signal tests - refresh pm item synopsis for GH-348/GH-376 and docs gate follow-up Verification: - node scripts/run-tests.mjs test -- tests/unit/commands/test-runs-command.spec.ts - PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/cli/cli-main-errors.spec.ts tests/unit/core/schema/runtime-schema-path-win32-guard.spec.ts tests/unit/helpers/scriptModule.spec.ts tests/unit/scripts/ tests/unit/packages/runtime-loaders.spec.ts tests/unit/core/telemetry/telemetry-runtime.spec.ts tests/unit/commands/test-runs-command.spec.ts - pnpm typecheck - git diff --check - PM_AUTHOR=codex-gpt5 pm test pm-2kkl --run --progress
|
Review agents: new head 6c27a3a addresses current Gemini and CodeRabbit feedback by sharing the progress-marker signal dispatch helper, simplifying process.off fallback handling, and refreshing pm-2kkl synopsis metadata. Please re-review the current diff. @codex review |
|
To use Codex here, create a Codex account and connect to github. |
|
✅ Action performedFull review finished. |
There was a problem hiding this comment.
Code Review
This pull request hardens the background test-run signal tests to prevent Vitest worker self-termination on Windows. It introduces captureProcessSignalHandlers and dispatchSignalsWhenProgressReady helpers in tests/unit/commands/test-runs-command.spec.ts to mock and simulate SIGTERM and SIGINT signals in-process instead of sending real signals via process.kill. Additionally, it updates tests/integration/mcp-dynamic-package-actions.spec.ts to run the MCP upgrade action as a dry run to keep it network-free. The reviewer's feedback suggests clearing the interval timer gracefully in the mock script when stopped to avoid relying on short force-kill delays, which can cause flakiness on slower CI environments.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Track: pm-2kkl - let the signal-stop fixture exit after SIGTERM instead of relying on force-kill delay - record Gemini review follow-up evidence Verification: - node scripts/run-tests.mjs test -- tests/unit/commands/test-runs-command.spec.ts - PM_RUN_TESTS_SKIP_BUILD=1 node scripts/run-tests.mjs test -- tests/unit/cli/cli-main-errors.spec.ts tests/unit/core/schema/runtime-schema-path-win32-guard.spec.ts tests/unit/helpers/scriptModule.spec.ts tests/unit/scripts/ tests/unit/packages/runtime-loaders.spec.ts tests/unit/core/telemetry/telemetry-runtime.spec.ts tests/unit/commands/test-runs-command.spec.ts - pnpm typecheck - git diff --check - PM_AUTHOR=codex-gpt5 pm test pm-2kkl --run --progress
|
Review agents: new head 1b125e8 addresses current Gemini feedback by clearing the signal-stop fixture interval after SIGTERM; the existing offSpy fallback is already consolidated to a single originalOff fallback. Please re-review the current diff. @codex review |
|
To use Codex here, create a Codex account and connect to github. |
|
✅ Action performedFull review finished. |
There was a problem hiding this comment.
Code Review
This pull request addresses the Windows nightly Vitest worker fork unexpected exit issue (GH-348/GH-376). It hardens the background test-run signal tests in test-runs-command.spec.ts by capturing and invoking SIGTERM/SIGINT handlers programmatically rather than sending real signals that could terminate the parent Vitest worker. Additionally, it updates the MCP dynamic package upgrade integration test to run as a dry-run, keeping it network-free and stable. I have no review comments or feedback to provide as the changes are well-implemented and directly address the target issues.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Summary
Fixes #376.
Tracks
pm-2kkl.This PR stabilizes the Windows nightly failure where Vitest reported
Worker forks emitted error / Worker exited unexpectedlyafter all assertions had passed. The missing full-nightly file wastests/unit/commands/test-runs-command.spec.ts; its child fixture was sending OS-level signals toprocess.ppid, which can target the Vitest fork worker on Windows.Changes:
process.emit("SIGTERM"/"SIGINT")from the test process after worker progress is observed, instead of having a child fixture send OS signals to the parent process.tests/unit/commands/test-runs-command.spec.tsto the required Windows regression CI slice so this class is caught before nightly.upgraderouting coverage dry-run only so the broad coverage gate stays network-free and deterministic.Validation
pm test pm-2kkl --run --progress(3/3 linked tests passed)node scripts/run-tests.mjs coverage-> 256 files, 5132 tests, 100/100/100/100pnpm typecheckpnpm quality:staticgit diff --checkpnpm contracts:checkpm health --check-only --summary --jsonpm validate --check-resolution --check-history-drift(history drift ok; existing closed-item resolution backfill warnings remain)pnpm audit --audit-level lowpnpm changelog:pm:checkwithpm-changelog2026.6.20node dist/cli.js package doctor --project --detail deep --jsonpnpm security:scannode scripts/release/sentry-telemetry-gate.mjs --json --telemetry-mode best-effort(0 critical/high Sentry issues, telemetry ok)PM_PATH/PM_GLOBAL_PATHanddist/cli.js: init, create, claim, update, comment, linked test, health, validate, close, releasepnpm release:gates(build, typecheck/static/docs, coverage 100/100/100/100, version policy, security scan, packed npx smoke, package-first dogfood)Notes
GitHub issue #374 / auto release remains externally blocked because the
releaseenvironment does not haveRELEASE_PATconfigured. That is not changed by this PR.