Problem
Homeboy Lab can terminate source materialization as unavailable when the selected runner cannot reach a private or proxied Git host, even though Homeboy owns a controller-routed Git bundle fallback for exactly this case.
materialize_git() records the remote Git stderr in an error hint while its top-level message is the generic changed-since materialization message. is_runner_git_auth_or_network_failure() examines only error.message, so it misses errors such as Could not read from remote repository and never activates controller bundle materialization.
Live evidence
On configured runner homeboy-lab:
homeboy runner doctor homeboy-lab --scope lab-offload admits the runner.
- HTTPS access to the Enterprise host is unreachable.
- Git SSH access to the Enterprise host is unreachable.
- Homeboy reports source unavailability instead of routing materialization through the controller.
Persisted diagnostic runs:
runner-exec-generic-homeboy-lab-1d67f535-be49-4444-9b5f-9d9290000036
runner-exec-generic-homeboy-lab-dad8c46b-41ee-47fe-b7de-c6ab681a16ed
Expected behavior
When runner-side Git materialization fails because of authentication, proxy, DNS, or network reachability, Homeboy should classify the complete structured failure and transparently retry with controller-routed Git bundle materialization.
Acceptance criteria
- Failure classification includes the captured remote stderr/details, not only the generic top-level message.
- A regression test proves a generic materialization message plus network/auth stderr activates controller fallback classification.
- Existing non-network failures remain non-fallback failures.
- The behavior remains host- and organization-agnostic.
Related: #3586, #8131.
Problem
Homeboy Lab can terminate source materialization as unavailable when the selected runner cannot reach a private or proxied Git host, even though Homeboy owns a controller-routed Git bundle fallback for exactly this case.
materialize_git()records the remote Git stderr in an error hint while its top-level message is the generic changed-since materialization message.is_runner_git_auth_or_network_failure()examines onlyerror.message, so it misses errors such asCould not read from remote repositoryand never activates controller bundle materialization.Live evidence
On configured runner
homeboy-lab:homeboy runner doctor homeboy-lab --scope lab-offloadadmits the runner.Persisted diagnostic runs:
runner-exec-generic-homeboy-lab-1d67f535-be49-4444-9b5f-9d9290000036runner-exec-generic-homeboy-lab-dad8c46b-41ee-47fe-b7de-c6ab681a16edExpected behavior
When runner-side Git materialization fails because of authentication, proxy, DNS, or network reachability, Homeboy should classify the complete structured failure and transparently retry with controller-routed Git bundle materialization.
Acceptance criteria
Related: #3586, #8131.