diff --git a/.agents/skills/openclaw-parallels-smoke/SKILL.md b/.agents/skills/openclaw-parallels-smoke/SKILL.md index b8cd8143e43..eb0fbf68a2e 100644 --- a/.agents/skills/openclaw-parallels-smoke/SKILL.md +++ b/.agents/skills/openclaw-parallels-smoke/SKILL.md @@ -34,7 +34,9 @@ Use this skill for Parallels guest workflows and smoke interpretation. Do not lo - Always use `prlctl exec --current-user`; plain `prlctl exec` lands in `NT AUTHORITY\\SYSTEM`. - Prefer explicit `npm.cmd` and `openclaw.cmd`. - Use PowerShell only as the transport with `-ExecutionPolicy Bypass`, then call the `.cmd` shims from inside it. +- Windows installer/tgz phases now retry once after guest-ready recheck; keep new Windows smoke steps idempotent so a transport-flake retry is safe. - Keep onboarding and status output ASCII-clean in logs; fancy punctuation becomes mojibake in current capture paths. +- If you hit an older run with `rc=255` plus an empty `fresh.install-main.log` or `upgrade.install-main.log`, treat it as a likely `prlctl exec` transport drop after guest start-up, not immediate proof of an npm/package failure. ## Linux flow diff --git a/scripts/e2e/parallels-windows-smoke.sh b/scripts/e2e/parallels-windows-smoke.sh index 615dae29fe1..07423b63f55 100644 --- a/scripts/e2e/parallels-windows-smoke.sh +++ b/scripts/e2e/parallels-windows-smoke.sh @@ -363,6 +363,31 @@ EOF )" } +run_windows_retry() { + local label="$1" + local max_attempts="$2" + shift 2 + + local attempt rc + rc=0 + for (( attempt = 1; attempt <= max_attempts; attempt++ )); do + printf '%s attempt %d/%d\n' "$label" "$attempt" "$max_attempts" + set +e + "$@" + rc=$? + set -e + if [[ $rc -eq 0 ]]; then + return 0 + fi + warn "$label attempt $attempt failed (rc=$rc)" + if (( attempt < max_attempts )); then + wait_for_guest_ready >/dev/null 2>&1 || true + sleep 5 + fi + done + return "$rc" +} + restore_snapshot() { local snapshot_id="$1" say "Restore snapshot $SNAPSHOT_HINT ($snapshot_id)" @@ -721,13 +746,15 @@ install_latest_release() { if [[ -n "$INSTALL_VERSION" ]]; then version_flag_q="-Tag '$(ps_single_quote "$INSTALL_VERSION")' " fi - guest_powershell "$(cat <