CI currently fails hard when submodule fetch encounters temporary
network or DNS resolution issues.
Improve robustness by:
- retrying submodule fetch
- failing with a clear diagnostic
- avoiding partial or inconsistent states
Goal: reduce flaky CI failures unrelated to code correctness.