What happened
On 2026-08-22 three workflow runs exited with the agent step green while writing nothing to their issue — no comment, no label. The pipeline's only signal that "nobody has analyzed this" is indistinguishable from "the analysis ran and failed silently".
Stage 1 triage on backlog: a stale Awaiting field hides a qualifying tier-1 bug from the autonomous Stage 2 carve-out, so it never gets analyzed #681 (19:43:41Z, success): wrote nothing. issue-triage.yml has no verification step, so a triage run that does nothing is invisible — it cannot fail red.
Stage 2 on Late switching #680 (run 32594498204, 19:42Z): the claude-code-action step succeeded; the Stage 2 analyze exits success, charges $0.33–1.58, and posts nothing — 2 of 6 runs silently produced no comment or label #646 verify step then failed — Comments posted since 2026-08-22T19:42:23Z: 0, labels unchanged (bug, bot-analyzed, ready-for-analysis).
Stage 2 on bug: Strategic Intent headline overflows card when curtailed (Storing Solar — Curtailed (No Export)) #676 (run 32598998170, 21:14Z, triggered by @claude-bot analyze): the agent step succeeded; verify failed — 0 comments, labels unchanged (bug).
Expected vs actual
Expected: a green Stage 1 run classified the issue and applied labels; a green Stage 2 run posted a root-cause diagnosis and applied analyzed/needs-human-review.
Actual: the agent step exited green in both Stage 2 runs (~1 minute — far short of a real analysis) and neither wrote to the issue. Stage 2 analyze exits success, charges $0.33–1.58, and posts nothing — 2 of 6 runs silently produced no comment or label #646 added the Stage 2 verify step precisely because five of nine runs did this; it caught both recurrences (loud red, as designed) but the underlying agent behavior persists. Stage 1 still has no equivalent gate at all.
Root cause
Stage 1 (issue-triage.yml) has no if: always() verification step , unlike issue-analyze.yml's Stage 2 analyze exits success, charges $0.33–1.58, and posts nothing — 2 of 6 runs silently produced no comment or label #646 step. A no-op triage exits success identically to a correct one.
Stage 2's agent still does not run gh issue comment. The Stage 2 analyze exits success, charges $0.33–1.58, and posts nothing — 2 of 6 runs silently produced no comment or label #646 fix added a gate , not a fix for the agent behavior. Both runs' agent step reported success with no reachable output — the agent describes the publish step instead of performing it, or exits before it. The verify step cannot tell us which, because it only counts what reached the issue.
Proposed fix (options)
Add the Stage 2 analyze exits success, charges $0.33–1.58, and posts nothing — 2 of 6 runs silently produced no comment or label #646 -style verification step to issue-triage.yml: assert a label was applied (and the confirmation comment, for a bug with a debug log), fail the run otherwise. This closes the Stage 1 gap directly.
For Stage 2, root-cause why the claude-code-action agent reports success without running gh issue comment — a turn cap, a silent model error the action swallows, or the cat > /tmp/analysis.md && gh issue comment --body-file sequence being unreached. Per Stage 2 analyze exits success, charges $0.33–1.58, and posts nothing — 2 of 6 runs silently produced no comment or label #646 , the verify step must keep asserting and never repair; the fix is to make the agent actually publish.
At minimum, ensure a red verify run is never read as "nobody has run analyze yet" — the Stage 2 analyze exits success, charges $0.33–1.58, and posts nothing — 2 of 6 runs silently produced no comment or label #646 motivation — so the backlog pass can see the failure and act.
Related
What happened
On 2026-08-22 three workflow runs exited with the agent step green while writing nothing to their issue — no comment, no label. The pipeline's only signal that "nobody has analyzed this" is indistinguishable from "the analysis ran and failed silently".
Awaitingfield hides a qualifying tier-1 bug from the autonomous Stage 2 carve-out, so it never gets analyzed #681 (19:43:41Z, success): wrote nothing.issue-triage.ymlhas no verification step, so a triage run that does nothing is invisible — it cannot fail red.Comments posted since 2026-08-22T19:42:23Z: 0, labels unchanged (bug, bot-analyzed, ready-for-analysis).@claude-bot analyze): the agent step succeeded; verify failed — 0 comments, labels unchanged (bug).Expected vs actual
analyzed/needs-human-review.Root cause
if: always()verification step, unlike issue-analyze.yml's Stage 2 analyze exits success, charges $0.33–1.58, and posts nothing — 2 of 6 runs silently produced no comment or label #646 step. A no-op triage exits success identically to a correct one.gh issue comment. The Stage 2 analyze exits success, charges $0.33–1.58, and posts nothing — 2 of 6 runs silently produced no comment or label #646 fix added a gate, not a fix for the agent behavior. Both runs' agent step reported success with no reachable output — the agent describes the publish step instead of performing it, or exits before it. The verify step cannot tell us which, because it only counts what reached the issue.Proposed fix (options)
issue-triage.yml: assert a label was applied (and the confirmation comment, for a bug with a debug log), fail the run otherwise. This closes the Stage 1 gap directly.gh issue comment— a turn cap, a silent model error the action swallows, or thecat > /tmp/analysis.md && gh issue comment --body-filesequence being unreached. Per Stage 2 analyze exits success, charges $0.33–1.58, and posts nothing — 2 of 6 runs silently produced no comment or label #646, the verify step must keep asserting and never repair; the fix is to make the agent actually publish.Related
Awaitingfield hides a qualifying tier-1 bug from the autonomous Stage 2 carve-out, so it never gets analyzed #681 — the issue whose Stage 1 triage wrote nothing (a separate root cause from backlog: a staleAwaitingfield hides a qualifying tier-1 bug from the autonomous Stage 2 carve-out, so it never gets analyzed #681's own Awaiting-scope bug)