Why
On a test machine (RTX 4050 laptop), the installed k3d.exe was broken — The specified executable is not a valid application for this OS platform — yet Step 1 still concluded ✔ System tools, because the only post-install execution is a Log "k3d: $(k3d version ...)" interpolation whose failure is non-terminating. The install then reached Step 2 and failed there (see companion spinner issue). kubectl/helm have the same gap.
Where
scripts/install-k8s.ps1 (v1.9.6): L737 (k3d), L658 (kubectl Log), L771 (helm Log).
Scope
- After each tool install, execute it (
k3d version, kubectl version --client, helm version --short) as a hard gate; non-zero/exception → remove the binary and Err with a remedy (expected vs actual arch via Get-WindowsArch, re-download hint).
- Investigate how an invalid binary passed install: winget path vs direct path (direct has checksum verify; winget shims/partial installs don't) — add the execute-gate regardless of path.
Acceptance criteria
- A corrupt or wrong-arch k3d.exe fails Step 1 loudly with an actionable message; Step 2 is never reached.
- Pester coverage for the execute-gate failure path.
Why
On a test machine (RTX 4050 laptop), the installed
k3d.exewas broken —The specified executable is not a valid application for this OS platform— yet Step 1 still concluded✔ System tools, because the only post-install execution is aLog "k3d: $(k3d version ...)"interpolation whose failure is non-terminating. The install then reached Step 2 and failed there (see companion spinner issue). kubectl/helm have the same gap.Where
scripts/install-k8s.ps1(v1.9.6): L737 (k3d), L658 (kubectlLog), L771 (helmLog).Scope
k3d version,kubectl version --client,helm version --short) as a hard gate; non-zero/exception → remove the binary andErrwith a remedy (expected vs actual arch viaGet-WindowsArch, re-download hint).Acceptance criteria