Guard · Inbound triage
Inbound triage
A ranked queue of inbound pull requests, each scored for provenance and slop risk, so you read the risky ones first. The maintainer wedge for the agent-PR deluge. RepoOps classifies and ranks; it never merges or closes. You decide.
Where to find it
- Localhost:
/inbound-triage.html?repo=<id> - API:
GET /api/inbound-triage?repo=<id>&windowDays=<n> - Keyboard: ⌘ K then
inbound - Sidebar: Review queue → Inbound triage
What it does for you
One ranked row per inbound PR.Pick a repo and a window (default 90 days). Each merged PR in that window gets a row: number, title, author, a provenance band, and a slop-risk meter. The queue orders the most-likely-agent and most-likely-slop items first, and pages 20 rows at a time.
A graded provenance band, never a boolean.Each PR carries an initiator plus a confidence percent plus the signals behind it. The band reads Review first, Agent-authored, Needs signals, or Human-likely. Thin evidence stays honest-unknown in the Needs signals bucket, never guessed into an agent verdict.
A separate slop-risk read.A meter scores thin-content markers (empty body, no linked issue, a broad single diff, boilerplate, surviving AI sign-offs) so a plausible-looking PR with no substance still surfaces. The agent share stat is computed over classified records only.
Honest cost, honest empty.Cost is window-honest and reads honest-null on the inbound side, because an external contributor's run cannot be priced. No fabricated $0. A window with nothing to triage says so.
Fix this first: failure-mode clusters.The panel above the queue groups this repo's labeled failing agent runs into named, frequency-ranked buckets, with the single most recurrent one tagged fix first. Coverage is stated honestly (how many sessions were labeled versus scored); a thin sample is marked directional.
What it does not do
RepoOps classifies and ranks. It never merges, closes, or rejects a PR. The ranking tells a human maintainer what to read first; every decision stays yours. The read is LLM-free and does no crypto. The current corpus is the mirror's merged-PR history; a forge webhook or feed drops in later with the same shape.