Recommendation
Stop the Claude log-parser guardrail from calling core.setFailed when the agent actually succeeded — gate it on the harness result, not on logEntries.length === 0. It is painting successful runs red and feeding false signal into the failure dashboards and this very investigator.
Problem statement
The "Parse agent logs for step summary" step fails on Claude runs where the agent completed successfully but agent-stdio.log contains only [DEBUG]/[INFO] plaintext (no structured JSON entries), so the parser extracts zero logEntries and hard-fails the step.
Affected workflow and run IDs
- Workflow:
.github/workflows/avenger.md (Claude engine) — 4 false-failures in the 6h window
- Run IDs: §27473035084, §27471579514, §27470367219, §27468988707
- Same guardrail can hit any Claude-engine workflow whose stdio tail is plaintext-only.
Root cause
actions/setup/js/log_parser_bootstrap.cjs:238-242 hard-fails the step (core.setFailed("ERR_CONFIG: Claude execution failed: no structured log entries were produced ...")) whenever the Claude parser returns an empty logEntries array — a guardrail added by .changeset/patch-fail-claude-no-log-entries.md to catch silent startup errors. It produces a false positive when the agent ran fine but emitted no JSON to the parsed log.
Evidence — agent succeeded, parser failed anyway (run 27473035084)
- Upstream agent step:
claude-harness exitCode=0, result.subtype=success, is_error=false, 42 turns, recorded a noop safe-output (total_cost_usd≈1.79).
- Parser printed
"Claude log parsed successfully" immediately before firing the guardrail — self-contradictory.
GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent-stdio.log held 179 plaintext [DEBUG]/[INFO] lines, 0 {...} JSON entries → logEntries.length === 0 → core.setFailed.
ERR_CONFIG: Claude execution failed: no structured log entries were produced.
This usually indicates a startup or configuration error before tool execution.
Proposed remediation
- Gate the guardrail on actual agent failure (e.g. only fail when the harness result is missing/
is_error or exitCode != 0); when the agent reports success, treat empty logEntries as "no structured entries" (warn) rather than ERR_CONFIG.
- Alternatively, fall back to the plaintext stdio summary instead of failing.
Success criteria / verification
- A Claude run that completes with
exitCode=0 / result.subtype=success is never marked failed by the log parser.
- Avenger false-failure count for "Parse agent logs for step summary" → 0 over a 24h window.
Investigation context: part of the 2026-06-13 19:13Z 6h failure sweep. Full cluster table, correlations, and roadmap are in the companion issue #39140. No tracked issue was closed this window — all are still actively failing.
Related to #29109
Generated by 🔍 [aw] Failure Investigator (6h) · 395.8 AIC · ⌖ 14.4 AIC · ⊞ 5.1K · ◷
Recurrence confirmed — 2 more Avenger false-failures in the 2026-06-14 01:38Z 6h window. Same guardrail, same signature (ERR_CONFIG: ... no structured log entries were produced) on runs where the agent actually succeeded:
- Avenger §27478718477 — agent
is_error:false, 96 assistant turns, 30+ successful tool calls (make fmt/lint/test-unit), valid noop safe-output ingested; safe_outputs / detection / conclusion jobs all succeeded. Only "Parse agent logs for step summary" failed — it logged "Claude log parsed successfully" immediately before raising ERR_CONFIG.
- Avenger §27477435506 — identical pattern.
Cumulative ~24h: 6 false-failures (4 prior + 2 here). No fix has landed (log_parser_bootstrap.cjs:238-242 still gates on logEntries.length === 0). Remediation unchanged: gate the guardrail on the harness result (exitCode != 0 / is_error), not on an empty logEntries array.
Filed by [aw] Failure Investigator (6h) — analyzed run https://github.com/github/gh-aw/actions/runs/27484878458.
Generated by 🔍 [aw] Failure Investigator (6h) · 421.4 AIC · ⌖ 12.8 AIC · ⊞ 4.5K · ◷
Recommendation
Stop the Claude log-parser guardrail from calling
core.setFailedwhen the agent actually succeeded — gate it on the harness result, not onlogEntries.length === 0. It is painting successful runs red and feeding false signal into the failure dashboards and this very investigator.Problem statement
The "Parse agent logs for step summary" step fails on Claude runs where the agent completed successfully but
agent-stdio.logcontains only[DEBUG]/[INFO]plaintext (no structured JSON entries), so the parser extracts zerologEntriesand hard-fails the step.Affected workflow and run IDs
.github/workflows/avenger.md(Claude engine) — 4 false-failures in the 6h windowRoot cause
actions/setup/js/log_parser_bootstrap.cjs:238-242hard-fails the step (core.setFailed("ERR_CONFIG: Claude execution failed: no structured log entries were produced ...")) whenever the Claude parser returns an emptylogEntriesarray — a guardrail added by.changeset/patch-fail-claude-no-log-entries.mdto catch silent startup errors. It produces a false positive when the agent ran fine but emitted no JSON to the parsed log.Evidence — agent succeeded, parser failed anyway (run 27473035084)
claude-harness exitCode=0,result.subtype=success,is_error=false, 42 turns, recorded anoopsafe-output (total_cost_usd≈1.79)."Claude log parsed successfully"immediately before firing the guardrail — self-contradictory.GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent-stdio.logheld 179 plaintext[DEBUG]/[INFO]lines, 0{...}JSON entries →logEntries.length === 0→core.setFailed.Proposed remediation
is_errororexitCode != 0); when the agent reports success, treat emptylogEntriesas "no structured entries" (warn) rather thanERR_CONFIG.Success criteria / verification
exitCode=0/result.subtype=successis never marked failed by the log parser.Investigation context: part of the 2026-06-13 19:13Z 6h failure sweep. Full cluster table, correlations, and roadmap are in the companion issue #39140. No tracked issue was closed this window — all are still actively failing.
Related to #29109
Recurrence confirmed — 2 more Avenger false-failures in the 2026-06-14 01:38Z 6h window. Same guardrail, same signature (
ERR_CONFIG: ... no structured log entries were produced) on runs where the agent actually succeeded:is_error:false, 96 assistant turns, 30+ successful tool calls (make fmt/lint/test-unit), validnoopsafe-output ingested;safe_outputs/detection/conclusionjobs all succeeded. Only "Parse agent logs for step summary" failed — it logged"Claude log parsed successfully"immediately before raisingERR_CONFIG.Cumulative ~24h: 6 false-failures (4 prior + 2 here). No fix has landed (
log_parser_bootstrap.cjs:238-242still gates onlogEntries.length === 0). Remediation unchanged: gate the guardrail on the harness result (exitCode != 0/is_error), not on an emptylogEntriesarray.Filed by [aw] Failure Investigator (6h) — analyzed run https://github.com/github/gh-aw/actions/runs/27484878458.