9e84d89823
Replaces the abandoned PSWSMan approach (New-PSSession hangs on Linux) with a Python-native implementation using the proven pypsrp WinRmTransport. - New `template prepare-win` command in commands/template.py: starts VM, waits for WinRM, uploads and runs Install-CIToolchain-*.ps1, handles Windows Update 3010 reboot loop (max 10 iterations), installs CI-StaticIp scheduled task, runs post-setup validation, graceful shutdown, snapshot. - Helpers: _ps_escape, _wait_tcp, _parse_exit_marker, _wait_winrm. - 40 new tests in test_commands_template.py covering all major branches. - Fix test_commands_job.py: patch load_config in _patch_common so tests don't pick up live /var/lib/ci/config.toml ip_pool and fail on lock. - Coverage gate: 90.06% (was 88.95% before fix). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>