Skip to content

Consider a -WhatIf/dry-run mode for Invoke-OverlappingPoolTests.ps1 so developers can see the schedule without spawning six suites. #140

Open

Description

@github-actions

What

Add a -WhatIf (or equivalent dry-run) switch to .github/scripts/Invoke-OverlappingPoolTests.ps1 that prints the planned run schedule — the sequence of overlapping runs, their start offsets, and the suites each run would spawn — without actually launching any pwsh/powershell child processes.

Why

The script currently spawns six overlapping test suites whenever it is invoked, which makes it expensive and disruptive to run locally just to inspect or sanity-check the schedule. A dry-run mode lets developers (and reviewers) verify the timing/overlap logic and the run plan cheaply, without the side effects of spawning real processes. This was raised as a non-blocking follow-up during the AI review of PR #124.

How

  • Add a [switch]$WhatIf parameter to Invoke-OverlappingPoolTests.ps1.
  • When $WhatIf is set, compute the same schedule the script would use (run order, start offsets, deadline) but skip the process-spawning calls (the Start-Process/Register-Spawned path and the per-run suite invocation).
  • Emit the planned schedule to the host (e.g. one line per run: index, suite, planned start offset, planned end/deadline) so it is readable in CI logs and locally.
  • Ensure the script exits with a success code in -WhatIf mode and does not attempt overlap detection, timeout handling, or report generation that depends on real process results.
  • Keep the default (no switch) behavior byte-for-byte identical to today.

Files Affected

  • .github/scripts/Invoke-OverlappingPoolTests.ps1
  • Unknown (any test that asserts on Invoke-OverlappingPoolTests.ps1 behavior, if one exists)

Constraints

  • Must not change default behavior when -WhatIf is not passed.
  • Must not spawn any child processes, write .pid files, or register tracked processes in dry-run mode.
  • Must not alter the existing overlap-detection, timeout, or reporting logic for real runs.
  • Out of scope: changing the schedule itself, adding new suites, or modifying Stop-TrackedProcesses / Register-SlotPidFile / Get-StandInCommand.

LLM tier

Sonnet — moderate design judgment: adding a mode flag to an existing script while preserving current behavior and deciding what the dry-run output should contain.

Success looks like

  • ./.github/scripts/Invoke-OverlappingPoolTests.ps1 -WhatIf prints the planned schedule and exits 0.
  • No child pwsh/powershell processes are spawned and no .pid files are written during -WhatIf.
  • Running the script without -WhatIf produces the same behavior as before the change.
  • The printed schedule matches the runs the script would actually perform.

Failure looks like

  • -WhatIf still spawns processes or writes .pid files.
  • Default (no-switch) behavior changes.
  • The dry-run output diverges from the real schedule (e.g. wrong run count or offsets).
  • The script errors or exits non-zero in -WhatIf mode.

Follow-up from AI review of PR #124.

Activity

  1. added
    ai-suggestedSuggested by AI code review
    sonnetSuitable for Claude Sonnet (moderate reasoning)
    on Sep 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ai-suggestedSuggested by AI code reviewsonnetSuitable for Claude Sonnet (moderate reasoning)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions