Wrap remaining plain errors in Kubernetes Prepare() with BuildError
What does this MR do?
Wrap remaining plain errors in Kubernetes Prepare() with BuildError
Wrap deterministic config-validation failures in the Kubernetes executor's Prepare() and preparePullManager as *BuildError{ConfigurationError} instead of letting them fall through to runner_system_failure.
podWatcher.Start and waitForServices have ambiguous failure
classifications (the right FailureReason depends on the underlying
error), so they are left out of scope for this MR.
Side effect: skips the 3-attempt retry in retryCreateExecutor for these paths, since *BuildError signals a definitive classification per the contract added in c5afc0f8 (2016). All wrapped paths are deterministic CI/config validation, so the retries would have produced the same error.
Why was this MR needed?
To report correct failure reasons.
What's the best way to test this MR?
What are the relevant issue numbers?
Part of Reclassify plain errors and image-pull failures... (#39535 - closed)