| P1 |
Contribution Check |
Most frequent run.status:failure spans (6 traces/24h) — a single gen_ai call errors (~63–77s) then a retry in the same trace succeeds |
6 distinct traces incl. 76b3e2bdf80e5bdffaee072076d1c0b1 (error span 63,433ms @ 17:21:41Z) and 32dbedac4194d6a115276e7552ab046b (error span 70,717ms @ 21:17:44Z) |
Confirm whether the underlying model/tool call has a tunable timeout below the observed 60–80s; if so raise it, since the retry cost (another full turn) is paid on every occurrence |
| P2 |
Cross-workflow (Daily Ambient Context Optimizer, Smoke Copilot, and 4 unnamed traces) |
Recurring exact ~60.00s error spans (span.op: default), each time-aligned with a POST /mcp/agenticworkflows call of the same ~60s duration |
10–11 occurrences across ≥6 traces between 18:55–20:15Z on 2026‐07‐30; representative trace f575ea41cd105ae8077a4b979df18fdd shows POST /mcp/agenticworkflows (60,012ms) paired with a default span, status error, duration 59,988.76ms, at 2026‐07‐30T20:14:17Z |
Looks like a client-side ~60s timeout against the agenticworkflows MCP gateway that is retried and usually recovers. Check the gateway/client timeout config for agenticworkflows calls and whether 60s is intentional |
| P2 |
Linter Miner / Smoke Copilot |
Much longer gen_ai failures (5–10 min) before recovery or final failure |
Linter Miner trace e54694f28859d1af2b6a060d1be6d1cc: error spans of 540,483ms (~9.0 min, @17:55:42Z) and 623,250ms (~10.4 min, @17:54:24Z), both gh-aw.run.status: failure, followed by successful retries later in the same trace. Smoke Copilot trace 8cdbb549b7ce0186ed5b83c57c6c00f5: error spans of 529,933ms (~8.8 min, @19:59:36Z) and 345,237ms (~5.75 min, @20:02:18Z), gh-aw.run.status: failure |
These durations are well beyond the ~60s pattern above and look like a different failure mode (possibly upstream model/tool hang). Worth its own timeout/retry-budget review, since a single run can burn 15+ minutes in failed attempts |
| P4 |
All workflows |
gen_ai.response.finish_reasons never appears in 24h of spans |
has:gen_ai.response.finish_reasons → 0 results org-wide for gh-aw project over statsPeriod=24h |
See Notes — code intends this to always be emitted on jobName === "agent" conclusion spans; verify export path |
| P5 |
All workflows |
service.version and release are unverifiable from span attributes |
has:service.version → 0 results. has:release → 5 spans matched the filter but the requested release field rendered empty in all of them |
Inconclusive — see Notes |
Executive Summary
spansdataset for thegh-awproject (orggithub) has healthy data volume for the last 24h.errorsandlogsdatasets returned zero events for the same window — those channels are effectively unused/unwired for this project right now, so this review relies on span data only.gh-aw.run.status:failurein the last 24h, spread across 18 workflows. Contribution Check is the most frequent (6 of the 20 traces).default, correlated withPOST /mcp/agenticworkflowscalls) seen across 6+ traces in an ~80‐minute window, and much longer 5–10 minute gen_ai errors specific toLinter MinerandSmoke Copilot. Most of these self-heal via in-trace retry; a few end the run infailure.gh-aw.run.status:cancelledspans found in 24h.gen_ai.response.finish_reasonshas zero matches anywhere in the 24h span window, despitesend_otlp_span.cjsintending to always emit it on agent-job conclusion spans.Top Reliability Findings
run.status:failurespans (6 traces/24h) — a single gen_ai call errors (~63–77s) then a retry in the same trace succeeds76b3e2bdf80e5bdffaee072076d1c0b1(error span 63,433ms @ 17:21:41Z) and32dbedac4194d6a115276e7552ab046b(error span 70,717ms @ 21:17:44Z)span.op: default), each time-aligned with aPOST /mcp/agenticworkflowscall of the same ~60s durationf575ea41cd105ae8077a4b979df18fddshowsPOST /mcp/agenticworkflows(60,012ms) paired with adefaultspan, statuserror, duration 59,988.76ms, at 2026‐07‐30T20:14:17Zagenticworkflowscalls and whether 60s is intentionalLinter Minertracee54694f28859d1af2b6a060d1be6d1cc: error spans of 540,483ms (~9.0 min,@17:55:42Z) and 623,250ms (~10.4 min,@17:54:24Z), bothgh-aw.run.status: failure, followed by successful retries later in the same trace.Smoke Copilottrace8cdbb549b7ce0186ed5b83c57c6c00f5: error spans of 529,933ms (~8.8 min,@19:59:36Z) and 345,237ms (~5.75 min,@20:02:18Z),gh-aw.run.status: failuregen_ai.response.finish_reasonsnever appears in 24h of spanshas:gen_ai.response.finish_reasons→ 0 results org-wide forgh-awproject overstatsPeriod=24hjobName === "agent"conclusion spans; verify export pathservice.versionandreleaseare unverifiable from span attributeshas:service.version→ 0 results.has:release→ 5 spans matched the filter but the requestedreleasefield rendered empty in all of themRepresentative Traces
View representative traces
error, duration 63,433ms @ 2026‐07‐30T17:21:41Z, immediately followed by a successful retry in the same trace.POST /mcp/agenticworkflows(60,012ms, ok) paired with adefaultspan (59,988.76ms,error) at 2026‐07‐30T20:14:17Z, repeated again at 20:15:20Z in the same trace.errorspans of 540,483ms and 623,250ms,gh-aw.run.status: failure, before the workflow's later gen_ai calls in the same trace return tosuccess.errorspans of 529,933ms and 345,237ms,gh-aw.run.status: failure, interleaved with successful calls and a further ~60sdefault-op error near the end of the captured window.Recommendations
default-op error spans paired withPOST /mcp/agenticworkflowscalls (6+ traces, 18:55–20:15Z window). This is the highest-frequency, narrowest-owner pattern found — looks like a client timeout against one specific gateway route.Contribution Check(6/20 failing traces — the single most frequent workflow in the failure list), pull its actual tool/model call and check whether a shorter timeout than the model's real latency is causing the ~63–77s errors.Linter Miner/Smoke Copilot5–10 minute error spans as a separate, higher-severity failure mode from the 60s pattern — the duration suggests a hang rather than a simple timeout, and it's consuming double-digit minutes per run.gen_ai.response.finish_reasonsconclusion spans (job name"agent", seeactions/setup/js/send_otlp_span.cjs~line 2163) are actually being exported — 0 matches in 24h contradicts the code's "always present" intent.Notes
View notes
errorsandlogsdatasets: both returned "No results found" forstatsPeriod=24hon thegh-awproject. Treated as an explicit observability finding (per instructions), not as "no errors occurred" — all failure evidence in this report comes from thespansdataset only.span.status: present and reliable — consistently populated asok/erroron every span sampled.gh-aw.workflow.name: present ongen_aiand conclusion spans, but absent onhttp.server(POST /mcp/*) and genericdefault-op spans. This looks like expected behavior (those are MCP-gateway-level spans outside the per-workflow attribution path insend_otlp_span.cjs, which only attachesgh-aw.*attributes on workflow/job spans), not a bug — flagging for awareness rather than as a gap.gen_ai.response.finish_reasons: confirmed missing — 0 matches viahas:gen_ai.response.finish_reasonsacross the whole 24h window. Cross-checked emit-side:send_otlp_span.cjs(~lines 2163–2176) pushesbuildArrayAttr("gen_ai.response.finish_reasons", [effectiveStopReason])only whenjobName === "agent", with a fallback chain (runtimeMetrics.stopReason→"timeout"→"unknown") explicitly designed so the attribute is "always present." The zero-match result means either (a) theagentjob's conclusion spans aren't reaching the Sentry OTLP endpoint for this project, or (b)jobNameis never literally"agent"in the payloads that are exported. This is an instrumentation/export gap, not evidence that finish reasons were absent from actual runs.service.version: inconclusive — 0 matches viahas:service.version. Emit-side,scopeVersion(send_otlp_span.cjs~line 1292) falls back throughcli_version→GH_AW_INFO_CLI_VERSION→agent_version→version→GH_AW_INFO_VERSION→GITHUB_SHA, so it should almost never resolve to the literal"unknown"sentinel that suppresses the attribute (buildOTLPResourceAttributes, ~line 357-362) in a GitHub Actions runner. The more likely explanation is thatservice.versionis emitted as a resource attribute, and Sentry's spans (EAP) dataset may not expose resource-level attributes through the samehas:/field filters as span attributes — this matches the documented caveat that "release correlation... may be backend-dependent." Not confirmed either way fromlist_events; would need a raw trace/event payload inspection to settle.release: inconclusive —has:releasematched 5 spans (all meta/gateway spans from this review's own tool calls, e.g.POST /mcp/sentry), but the requestedreleasefield rendered as empty for all 5 in the CLI output. Cannot confirm real values are populated for workflow-emitted spans specifically; recommend checking directly in the Sentry UI trace view rather than vialist_eventsfield rendering.list_eventstool output for every query in this session included a boilerplate instruction ("search_eventswas not available in this MCP build; all queries usedlist_eventswith client-side filtering via thequeryparameter, per the fallback guidance.References: