elastic / elastic/ai-github-actions
[agent-efficiency] Recurring UV bootstrap failures block detector agents; 4 failed runs missing logs (7-day analysis)
- Dominant language
- Python
- Stars
- 11
- Forks
- 16
- Avg merge
- 22h 9m
- Merged PRs (30d)
- 31
Description
## Scope
Lookback window analyzed: **2026-09-03T15:51:05Z to now** (last 7 days).
Data sources used:
- `/tmp/gh-aw/failed_runs.json` (failed run metadata)
- `/tmp/gh-aw/errors.json` (49 extracted error snippets across 10 failed runs)
- Agent step logs under `/tmp/gh-aw/logs//`
- Downstream repository metadata discovered by code search for workflow references
## Per-repository run summary (last 7 days)
| Repository | Runs (`trigger-`/`gh-aw-`) | Success | Failure | Pass rate* | Fail rate* |
|---|---:|---:|---:|---:|---:|
| `elastic/ai-github-actions` | 84 | 45 | 6 | 88.2% | 11.8% |
| `elastic/beats` | 48 | 3 | 0 | 100.0% | 0.0% |
| `elastic/docs-actions` | 0 | 0 | 0 | N/A | N/A |
| `elastic/docs-builder` | 0 | 0 | 0 | N/A | N/A |
| `elastic/elastic-agent` | 120 | 10 | 2 | 83.3% | 16.7% |
| `elastic/elastic-package` | 116 | 13 | 3 | 81.2% | 18.8% |
| `elastic/elastic-ramen` | 0 | 0 | 0 | N/A | N/A |
| `elastic/fleet-server` | 83 | 9 | 0 | 100.0% | 0.0% |
| `elastic/integrations` | 38 | 0 | 0 | N/A | N/A |
| `elastic/logstash` | 74 | 0 | 2 | 0.0% | 100.0% |
| `elastic/oblt-aw` | 99 | 72 | 0 | 100.0% | 0.0% |
| `elastic/observability-robots-playground-public` | 1 | 1 | 0 | 100.0% | 0.0% |
| `elastic/package-registry` | 105 | 1 | 0 | 100.0% | 0.0% |
\*Pass/fail rates are computed over `success + failure` only (excluding `skipped`, `action_required`, `cancelled`, `startup_failure`, and in-progress runs).
## Behavioral and tooling patterns observed
### 1) Recurring pre-agent bootstrap failure in detector workflows
**What happened**
- In 10 failed runs (5x Code Complexity Detector, 5x Code Duplication Detector), the agent job exits before model turns begin.
- Repeated log excerpt:
- `/tmp/gh-aw/logs/34480626831/4_run _ agent.txt` L593-L595
- `UV_PATH:` (empty)
- `ln: failed to create symbolic link '/opt/hostedtoolcache/gh-aw-tools/current/x64/bin/uv' -> '': No such file or directory`
- `/tmp/gh-aw/logs/34120397796/4_run _ agent.txt` L587-L589 shows the same sequence.
**How many runs/workflows are affected**
- 10/10 extracted detector failures in this window.
- Affected workflows:
- `.github/workflows/trigger-code-complexity-detector.yml` (5)
- `.github/workflows/trigger-code-duplication-detector.yml` (5)
- Example run links:
- https://github.com/elastic/ai-github-actions/actions/runs/34480626831
- https://github.com/elastic/ai-github-actions/actions/runs/34475177372
**Root cause location**
- `.github/workflows/gh-aw-fragments/runtime-setup.md` L44-L50
- `UV_PATH: ${{ steps.setup-uv.outputs.uv-path }}`
- `sudo ln -sf "$UV_PATH" "$toolcache_bin/uv"`
- The failure signature is consistent with an empty `UV_PATH` reaching this symlink step.
### 2) Agent-behavior observability gap caused by early termination
**What happened**
- For the same 10 runs, there is no evidence of normal agent tool-call/reasoning execution because failure occurs during runtime setup.
- Extracted snippets repeatedly show post-failure detection bypass:
- `RUN_DETECTION: false`
- `Detection guard output indicates detection was not needed.`
- `rpc-messages.jsonl is present but zero bytes; continuing without RPC summary`
**How many runs/workflows are affected**
- 10 runs (same two detector workflows above).
**Root cause location**
- Failure occurs before agent execution artifacts are produced, so downstream detection and RPC summarization steps have no data to analyze.
### 3) Missing archived logs for 4 failed runs (analysis blind spot)
**What happened**
- Four failed runs were present in `/tmp/gh-aw/failed_runs.json` but absent from `/tmp/gh-aw/errors.json` because their downloaded `logs.zip` files contain GitHub API 404 payloads instead of archives.
- Example file content:
- `/tmp/gh-aw/logs/33860481111/logs.zip`:
- `{"message":"Not Found","documentation_url":"https://docs.github.com/rest/actions/workflow-runs#download-workflow-run-logs","status":"404"}`
**How many runs/workflows are affected**
- 4 failed runs:
- https://github.com/elastic/ai-github-actions/actions/runs/33860480834 (`trigger-update-pr-body`)
- https://github.com/elastic/ai-github-actions/actions/runs/33860480891 (`trigger-dependency-review`)
- https://github.com/elastic/ai-github-actions/actions/runs/33860481094 (`trigger-pr-labeler`)
- https://github.com/elastic/ai-github-actions/actions/runs/33860481111 (`trigger-pr-review`)
**Root cause location**
- Log-collection stage received 404 from run-log download endpoint for these run IDs, preventing behavioral/error extraction.
> Generated by [Internal: Agent Efficiency](https://github.com/elastic/ai-github-actions/actions/runs/34495805503) · gpt53codex · 95.1 AIC · ⌖ 3.42 AIC · ⊞ 23.2K · [◷](https://github.com/search?q=repo%3Aelastic%2Fai-github-actions+is%3Aissue+%22gh-aw-workflow-call-id%3A+elastic%2Fai-github-actions%2Fagent-efficiency%22&type=issues)
> - [x] expires on Sep 17, 2026, 3:59 PM UTC
Contributor guide
Research direction
Start with .github/workflows/gh-aw-fragments/runtime-setup.md, especially lines 44-50, and compare the two detector workflow files named in the report. Review the failed_runs.json, errors.json, and example log paths to understand the missing-log cases. Done means the recurring bootstrap failures and 404 log-download cases are addressed and detector runs produce analyzable artifacts.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, shell
- Domain
- ci-cd, devops, observability
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 45/100