You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
Triage note: read at origin/main (eb7c6fa4b). ship gate itself (packages/fabrika-cli/src/ship/gate-verb.ts) is a read-only conjunction over comments, reviews and PR files — nothing interactive. No PAGER, timeout, or non-interactive handling exists anywhere under packages/fabrika-cli/src/ship or packages/fabrika-cli/src/review, so the CLI layer does not currently force headless-safe invocations of the gh calls underneath.
The exact hung argv was never captured — the filer's own report defers it to the next occurrence, so the blocking mechanism (pager, interactive prompt, auth wait, network retry, closed stdin) is unknown.
The deliverable is knowledge, not code: name the blocking mechanism before anyone chooses a remedy.
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).
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.
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.
In each case the agent recovered after being told to kill the call and re-run non-interactively — the work was never lost, only stalled.
The exact hung command string is being collected from the current shipper's next report.
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
fabrika-cli verbs invoked by the review/ship skills; gh underneath
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
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
eb7c6fa4b).ship gateitself (packages/fabrika-cli/src/ship/gate-verb.ts) is a read-only conjunction over comments, reviews and PR files — nothing interactive. NoPAGER, timeout, or non-interactive handling exists anywhere underpackages/fabrika-cli/src/shiporpackages/fabrika-cli/src/review, so the CLI layer does not currently force headless-safe invocations of theghcalls underneath.The investigation
The deliverable is knowledge, not code: name the blocking mechanism before anyone chooses a remedy.
Acceptance criteria
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· branchumut/adr-0334-bootstrap-merge-arms· 2026-08-22T21:39:02Z