Skip to content

Lab misses controller Git fallback when runner cannot reach source host #9722

Description

@chubes4

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions