Skip to content

gate shells hang 240s+ on a single bash call mid review/ship #7025

Description

@usirin

Reviewer and shipper gate shells stalled three times on 2026-08-22 (lanes on PRs #6994 and #7011): a single bash call stayed open 240+ seconds mid-gate until a driver nudge killed it, and the re-run then completed — so the underlying call blocks indefinitely instead of failing fast. Work was never lost, only stalled, but an unattended pipeline has nobody to nudge, so every headless run risks stranding here, and each stall taxes every lane passing through review/ship.

What triage verified

The investigation

The deliverable is knowledge, not code: name the blocking mechanism before anyone chooses a remedy.

  1. Capture the next occurrence: full argv, cwd, elapsed time, tty/stdin state of the hung bash call, from whichever reviewer/shipper lane hits it next (or reproduce deliberately against the same command class).
  2. Bisect the mechanism locally with a minimal reproduction that hangs without driver input — distinguish pager waiting on a tty, an interactive prompt (auth refresh, host confirmation), a network retry loop, and a command reading a never-closing stdin.
  3. Report the diagnosis plus a recommendation split along the two candidate remedies the filer named — (a) verbs defaulting to non-interactive (no pager, explicit timeouts) versus (b) a documented headless env contract for gate shells — naming exactly one as the follow-on work. Implementation is out of scope for this ticket.

Acceptance criteria

  • A hung invocation is recorded with its full argv, elapsed duration, and the lane/PR it occurred on.
  • The blocking mechanism is identified and demonstrated by a minimal reproduction that stalls without driver input.
  • A written recommendation commits to one primary remedy path (non-interactive defaults vs documented headless env contract) with evidence for setting the other aside.
  • the client-side timeout bounds the response body read too, not only connect plus headers

Original report (verbatim)

Summary

Three times today, a reviewer or shipper shell had one bash call open for 240+ seconds mid-gate, needing a driver nudge to kill and re-run. The gate still completes after the nudge, so the underlying call looks like it blocks indefinitely instead of failing.

What I was doing

Running reviewer→shipper lanes on PRs #6994 and #7011 in kamp-us/phoenix. Each lane hung once; a fourth hang just occurred on the #6994 shipper resume.

What I observed

Why it matters

A gate that silently blocks for minutes per call slows every lane through review/ship and can strand an unattended run: nobody nudges an unwatched pipeline. If the cause is a verb waiting on interactive input (a pager, a prompt), every headless caller hits it.

Pointers

Suggested next step (non-binding)

Capture the exact hung argv from the next occurrence, then decide: a verb defaulting to non-interactive (no pager, explicit timeouts) or a documented headless env contract for gate shells.


Filed by an agent · session 01a02ab8-f5ac-7647-9d28-963dc3ecf62a · branch umut/adr-0334-bootstrap-merge-arms · 2026-08-22T21:39:02Z

Metadata

Metadata

Assignees

No one assigned

    Labels

    axis:pipeline-hardeningStanding cross-cutting axis: pipeline hardening (was milestone #1; go-forward label)p1Medium priorityready-for:agentAn execution engine may pick this up.status:triagedTriage signed off; ready for write-code to picktype:investigationUnknown; output is knowledge

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions