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]

Reply via email to