Improve dispatch and checkout error messages for actual

Task 11350 · Done · Coder · created · updated

Found while diagnosing Task 11346 (Cisne mobile-app task 11119). Two console messages pointed the operator at the wrong cause, and a node's failed converge was invisible. 1. **Wait reason names the node.** When every account is refused as `account_unobserved` on the project's node(s), "Waiting · No coding agent API/subscription available" is wrong: the org has accounts, just none logged in on that node. Say "No account is logged in on <node>", and offer the fix: log one in there, or add a node that has one. Reason source: `apps/api/app/lease_drain.py` (skip-no-granted-account) → `apps/api/app/dispatch_wait.py`. 2. **Checkout gate names the cause.** When the clone fails because the node's git credential helper is missing (git prints `<helper> get: 1: <helper>: not found`), the "Checkout failed: check the project's repository URL and its Git access credential" question blames the repo. Detect that output and say the node's install is broken (git credential helper missing; re-run the node converge). 3. **Surface a failed converge.** A node whose converge refused a layer (e.g. git below `GIT_MIN_VERSION`, so the git credential helper was never installed) shows nothing on its node page. Report it as a node health finding so the operator sees it before a task fails on it. Out of scope: changing the git floor or the converge itself (Task 11346 fixes the 22.04/24.04 git floor); the KVM permission for Android emulators. Done means: - A project whose only node has no attested account shows a wait reason naming that node. - A clone failure caused by a missing credential helper produces a checkout message naming the node's install, not the repo URL or credential. - A node whose converge failed shows a health finding on its node page. - Unit tests cover each of the three messages.

Outcome

Wait reason now names the node with no logged-in account. The checkout gate blames a missing git credential helper on the node install, not the repo. A failed converge is now a node health finding. Unit tests cover all three. Quick gate green; PR #7375 queued to the merge lane. No UI code changed. Memory: none applied.

Pull request

Artifacts

Activity

  • Created
  • Run
  • Runner started
  • Runner ended (done)