# Triage pipeline — huggingface/transformers, Oct 20–21 2026 Scripts used to find, classify, verify and act on open issues and PRs. All GitHub access goes through the `gh` CLI; code checks always read `origin/main` of a local checkout. Judgement calls (is it fixed? superseded? still valid?) were made by read-only Claude Code subagents using `gh`, `git` on `origin/main`, and [relore](https://github.com/huggingface/relore) (an index of the repo's full issue/PR history); every action was reviewed on a Go/Don't page before running. ## Order of operations | step | script | what it does | | --- | --- | --- | | 1 | `sweep.py` | GraphQL sweep of every open issue + PR timeline (cross-refs from merged PRs, connected/duplicate events, last comments) | | 2 | `candidates.py` | scores "already fixed / superseded" candidates from merged-PR links and "fixed by #" / "superseded" comments | | 3 | `sweep2.py`, `bucket.py` | PR staleness sweep (base branch, mergeability, last commit, files vs main) → outdated / old-branch / philosophy buckets | | 4 | `sweep3.py` | open-issue sweep (labels, reactions, author role) for the pre-v5 issue pass | | 5 | `nm2_stats.py`, `build_nudges.py` | Hub stats (downloads, likes, params, license) for new-model requests; nudge-audit review page | | 6 | `build_morning.py` | "needs a human" page: reopen candidates, comment corrections, kept-open items | | 7 | `land_fetch.py`, `land_build.py` | classify the whole open backlog: area from touched files (PRs) or labels + title keywords (issues), kind, review status, models | | 8 | `rq_fetch.py`, `rq_build.py` | review queue: how long each PR has waited on a maintainer and why; approved-not-merged blockers (conflicts, CI, no core approval, pushed after approval) | | 9 | `run_queue.py` (+ older `run_cleanup*.py`, `run_issues.py`) | resumable runner: close / comment / request review / edit our comment, with GitHub rate-limit backoff, per-call timeout and an "already posted?" check so a retry never double-posts | | 10 | `exporters_edit.py` | in-place edit of comments that pointed to Optimum/`torch.export` → `transformers.exporters` | | 11 | `ledger.py` | merges every run log into `triage_items.json` (the data behind this Space) | ## Rules the verifying agents followed - **Evidence or no close.** A close must cite a merged PR/commit, a file or API on `origin/main`, or a linked maintainer comment. "Low value" / "no traction" alone is not evidence; such items stayed open. - **Fixed ≠ linked issue closed.** Many linked issues were closed by the stale bot while the bug is still on main; those PRs were kept as valid. - **Duplicates:** only the weaker PR of a pair is closed; the keeper gets a note, not a close. - **New-model requests are never closed** — they get a comment with Hub links and stats so someone can pick them up. - **Maintainer-owned or maintainer-reversed items** (e.g. a PR a maintainer reopened) are left to their owner. - **Waiting on us vs. waiting on the author:** the triage's own ping comments are excluded when deciding who spoke last. Paths in the scripts point at the original working directory; adjust before re-running.