pub fn preflight_hosts(
cluster: &ClusterConfig,
controller_host: &str,
prebuilding: bool,
) -> Result<(), String>Expand description
Pre-fan-out readiness probe for every host, run BEFORE any build and
in BOTH prebuild and --no-prebuild modes (mount-readiness is
orthogonal to binary freshness). One ssh per remote host: always
verifies the shared data_path is mounted + readable; when
prebuilding, also runs the controller-vs-remote ABI gate (arch /
libc / pkill). The controller is checked LOCALLY (no ssh — it is
the build/dispatch host, so ABI is trivially satisfied).
A definitive failure aborts before fan-out with a per-host message:
an ABI mismatch, or a missing EXPLICIT data_path (a declared shared
mount that isn’t there is a launch-breaking misconfig, matching
fdl probe’s stance). Missing convention-default paths and
unreachable hosts only warn. Running before the (multi-minute) builds
means a bad host fails fast without wasting a build on a good one.
controller_host is the local hostname (its worker entry, if any, is
covered by the local check and skipped from the ssh sweep).