Skip to content

chore: add Tier 2 deep-triage workflow with Argent#329

Open
danstepanov wants to merge 2 commits intomainfrom
chore/auto-triage-tier-2
Open

chore: add Tier 2 deep-triage workflow with Argent#329
danstepanov wants to merge 2 commits intomainfrom
chore/auto-triage-tier-2

Conversation

@danstepanov
Copy link
Copy Markdown
Member

@danstepanov danstepanov commented Apr 17, 2026

Summary

Adds Tier 2 of the auto-triage system: uses Argent to drive the iOS simulator for runtime, interaction, and memory bugs that Tier 1 (Linux, Jest-only) can't reproduce.

Triggered when Tier 1 applies the `needs-deep-triage` label (or manually via `workflow_dispatch`). Claude scaffolds a minimal repro with `rn-new`, installs Argent, boots the simulator, navigates the app using Argent's MCP tools, and posts a structured finding.

Flow

  1. New issue opens → Tier 1 runs (Linux) → flags as `needs-deep-triage` if it looks runtime/interaction related
  2. Label change triggers Tier 2 on `macos-latest`
  3. Claude scaffolds a repro in a scratch dir, installs Argent, launches simulator
  4. Argent MCP tools give Claude: tap/swipe/type, accessibility tree inspection, React component tree, console logs, network traces, memory/performance profiling
  5. Claude posts findings + applies labels

Runner

Runs on GitHub-hosted `macos-latest`. Public repos get unlimited free macOS runner minutes, so no self-hosted setup needed. Xcode + iOS simulators are pre-installed. Argent binaries are cached across runs via `actions/cache`.

Test plan

Known limitations

  • Bugs that only reproduce on physical devices (e.g. #1332 theme switch lag) won't reproduce on the simulator. Claude should mark these `INCONCLUSIVE`.
  • Argent first-run downloads ~200MB of binaries. Cache should eliminate this after the first successful run.

Tier 2 runs on a self-hosted macOS runner and uses
[Argent](https://argent.swmansion.com/) to drive the iOS simulator.
Handles runtime/interaction/memory bugs that Tier 1 (Linux-only,
Jest-only) can't reproduce.

Flow:
1. Tier 1 runs on a new issue, flags as `needs-deep-triage` if it looks
   runtime/interaction related
2. The label change triggers Tier 2 on the macOS runner
3. Claude scaffolds a minimal repro with `rn-new`, installs Argent,
   boots the iOS simulator
4. Claude uses Argent's MCP tools to navigate the app, inspect the
   component tree, read console logs, and profile memory as needed
5. Posts a structured comment with findings, applies labels

Runner requirements are documented in .github/AUTO_TRIAGE.md:
- macOS 14+ with Xcode and iOS simulators
- Node 22+
- Registered as self-hosted with label `macos-argent`
Public repos get unlimited free GitHub-hosted runner minutes, including
macOS, so there's no reason to go through the hassle of setting up a
self-hosted runner. Drop the `self-hosted` requirement and use
`macos-latest` directly.

Added actions/cache for Argent's native binaries (~200MB) so they don't
re-download on every run.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant