The lane's skip check grepped the progress line for an "<n>s," suffix, but
_print_progress prints skips before expected failures, so a skip beside the
SSH suite's xfail ("23✓ 1s 1xf, ...") passed unnoticed.
- run_tests_parallel.py: new --fail-on-skip. After the run, any parsed
pytest skip count fails the exit code and lists the skipping files, the
same way the zero-collected guard does; no display format involved. The
skip and failure reports move out of main() into helpers (health ratchet).
- remote-backends.yml: runs scripts/run_tests.sh --fail-on-skip instead of
tee + grep.
- Tests: a skip next to a strict xfail passes without the flag and fails
with it; a skip-free run passes with it; the workflow test pins the flag.