Skip to content

Windows service handler guard

Summary

  • Added WindowsServiceDeployActionHandler : IActionHandler for Squid.DeployWindowsService, establishing the handler boundary for Windows Tentacle service deployment.
  • Declared static runtime requirements for Windows OS and PowerShell availability using the existing capability requirements model, so scheduling/validation can reject incompatible targets before execution where capability data is available.
  • Added a dispatch-time OS guard that reads the Tentacle OS variable and blocks clearly non-Windows targets with an actionable error message, while allowing missing OS data to fall back to static capability validation.
  • Centralized Windows OS string recognition through WindowsOsStringHelper, including support for canonical and legacy Windows OS string forms.
  • Returned a stable PowerShell RunScriptIntent shape with intent name, step/action observability fields, PowerShell syntax, and runtime bundle disabled; the script body remained a deliberate fail-fast placeholder for the following script-builder branch.

Test plan

  • Unit: WindowsServiceDeployActionHandlerTests verifies the handler exposes the correct action type.
  • Unit: handler static requirements include Windows OS and PowerShell presence.
  • Unit: handler returns a RunScriptIntent with stable name, step/action names, PowerShell syntax, and runtime bundle disabled.
  • Unit: dispatch-time OS guard accepts Windows/canonical/legacy values and rejects non-Windows values with an actionable error.
  • Regression: ActionTypesDriftTests included in the targeted run to keep action type registration aligned with the handler.
  • Targeted test run: DOTNET_ROLL_FORWARD=Major dotnet test tests/Squid.UnitTests/Squid.UnitTests.csproj --filter "FullyQualifiedName~WindowsServiceDeployActionHandlerTests|FullyQualifiedName~ActionTypesDriftTests" passed, 24 tests green.

Merge request reports

Loading