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
{{ message }}
Repository navigation
Workflow run finishes "done" when a step emits no OUTPUT, so the next gate silently reads silence as "no verdict" #1773
A workflow step that ends without producing its declared OUTPUT contract is still recorded as a completed step, and the run finishes ✓ 完成. The next node then cannot tell "upstream produced no verdict" from "upstream produced a non-PASS verdict", so a gate is skipped silently while the run reports success.
Step 2 check ran out of host process slots (spawn bash EAGAIN, tests run concurrently with tsc), retried, exhausted its step budget and never emitted OUTPUT verdict: …. Its last recorded message is Retrying after a brief pause.
The run still advanced to step 3 merge and then closed as ✓ 完成 · bs136-impl · 3 步.
merge saw no upstream verdict, looked for a Verdict: comment on the pull request instead (this line deliberately never writes one to GitHub), concluded "no verdict", and did not merge — while the pull request was mergeable=true / clean with Node 20 and Node 22 already completed/success at its tip (c31edb0d, PR fix(ui shell): show an error with Retry when /ui.js fails to load Birfy/bot-social#150).
Net effect: the run says done, the gate did not run, and nothing in the run record marks the missing output. A human had to re-read the PR to find out.
Expected
A step whose declared OUTPUT keys never appear should end the run as failed/blocked (like a timeout does), not as done — and the run record should name the step and the missing contract.
The next node should be able to distinguish "upstream emitted nothing" from "upstream emitted a non-PASS result", so a gate never treats silence as an answer.
Optional but the durable fix: a requireOutput on the node/edge (already the shape of the OUTPUT protocol in the node prompts) that is enforced by the runtime instead of relying on the next node's reading.
Reproduction
Any workflow whose node declares OUTPUT verdict: PASS|FAIL and whose step ends without printing one; the run shows the step done and the downstream gate proceeds without an answer.
Scope
plugins/workflow/ (run advancement and step output capture) — no change to the fixed-line definitions.
Activity
HugoXK commentedon Oct 30, 2026
Claim
Written-by: FlyBot Lead
Claimed-by: FlyBot Lead
Claim-Id: c906c7ec3e9f42048f96e042bcf09775
Branch: dev/1773-workflow-run-finishes-done-when-a-step-e
Base: 92a4cf2
At: 2026-10-30T05:21:49Z