potiuk opened a new pull request, #230: URL: https://github.com/apache/airflow-steward/pull/230
## Summary Three related additions to the `pr-management-stats` spec, derived from running the skill on apache/airflow (484 open PRs, 6-week cutoff) and finding gaps in what the existing dashboard surfaces. ## 1. Trends over time (panel 3b — 5 sub-panels) Adds a "Trends over time" section between "What needs attention" and "Closure velocity" with 5 inline-SVG line-chart sub-panels: - **Open backlog over time** — end-of-week snapshot of total open count, showing whether the queue is growing/shrinking week-over-week. - **PRs opened by author class** — per-week `opened` count split by author association (FIRST_TIME / CONTRIBUTOR / MAINTAINER). Surfaces inflow-composition shifts. - **Triage velocity** — count of PRs whose first QC marker comment fell in each week, split by AI-drafted vs manually-typed QC. - **Triage coverage rate by week opened** — % of PRs opened in each week that ever received `is_engaged` maintainer engagement. Declining trend = early-warning for backlog growth. - **Ready-for-review queue size (cumulative)** — total ready-queue size end-of-week, single line, all areas combined. Each chart pairs with a per-week table for precise numbers. Two have a documented data caveat: the closed-PR fetch caps `comments(last:25)` per PR, so older triage markers on chatty PRs are missed. ## 2. CODEOWNERS panel (8b) New panel: "Ready-for-review queue by CODEOWNER". For each entry in `.github/CODEOWNERS`, count currently-ready PRs the owner is responsible for (file-pattern match, GitHub's last-match-wins). Two extras: - **Waiting-for-author column** — count of the owner's ready PRs where they've left a comment that the author hasn't responded to. Surfaces *who* the queue is waiting on the author to respond to per maintainer. - **"No CODEOWNERS match" row** — ready PRs whose changed files match no rule. Surfaces gaps in the CODEOWNERS file. Needs one new fetch — `pullRequest.files(first:100)` aliased per ready PR — ~8 GraphQL calls for ~150 ready PRs. Cache per `(pr_number, head_sha)`. Skip the panel entirely when `.github/CODEOWNERS` is absent. ## 3. Triage funnel split (panel 9 — 4 → 5 cards) Splits the existing "Waiting for author" hero card into two mutually-exclusive buckets: - **Waiting: AI-triage comment only** — author hasn't responded AND the unresponded maintainer comment is AI-drafted, with NO manual maintainer comment unresponded. - **Waiting: author response to maintainer** — at least one *manual* (non-AI) maintainer comment is unresponded. Higher priority. Implementation uses two new classify-time predicates (`waiting_for_ai_only` / `waiting_for_manual_response`) defined in terms of the most-recent author activity timestamp + the AI-attribution footer substring already used by `is_ai_triaged`. ## Why upstream now All three improvements proved useful on apache/airflow's queue during maintenance this week. They're project-agnostic (CODEOWNERS is a GitHub feature, AI-attribution footer is the framework's own substring, trends reuse the existing weekly-window pattern), so upstreaming benefits any adopter. The three changes are independent — a reviewer who wants to take only a subset can drop the relevant edits. Bundled here because they all touch the same skill and were developed together. ## Files - `.claude/skills/pr-management-stats/SKILL.md` — Steps 5g, 5h added; render layout updated to 11 sections. - `.claude/skills/pr-management-stats/aggregate.md` — 5 new trend sections + CODEOWNERS section. - `.claude/skills/pr-management-stats/classify.md` — `waiting_for_ai_only` / `waiting_for_manual_response` predicates. - `.claude/skills/pr-management-stats/fetch.md` — `pullRequest.files(first:100)` aliased fetch + CODEOWNERS file reading spec. - `.claude/skills/pr-management-stats/render.md` — panels 3b + 8b + funnel split + inline-SVG chart-helper note. ## Test plan - [x] Implemented end-to-end against apache/airflow's open queue (484 PRs); all panels render and numbers tie out. - [x] Live dashboard preview gist with all three improvements: https://gist.github.com/potiuk/d593b7773847e5d2f8638ad59d355842 (see panels "Trends over time", "Ready-for-review queue by CODEOWNER", and the 5-card "Triage funnel" grid). - [x] CODEOWNERS panel gracefully handles missing `.github/CODEOWNERS` (skipped, no error). - [x] Triage funnel split: 0 overlap between the two waiting buckets confirmed on the sample dataset. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
