potiuk opened a new pull request, #219:
URL: https://github.com/apache/airflow-steward/pull/219
## Summary
The `pr-management-stats` dashboard's "Untriaged non-drafts" hero card was
over-counting against `apache/airflow` (~475 open PRs):
- Reported: **266** untriaged non-drafts / **73** >4w old
- Actual actionable: **~38** contributor PRs
Breaking down the 73-figure showed two structural issues with the classifier:
- **26 PRs (35%)** were committer-authored — F1-skipped by
`pr-management-triage`, never going to be acted on by the triage skill, but
counted toward the hero card.
- **44 PRs (60%)** were already labelled `ready for maintainer review` —
they had cleared the triage bar by an alternate path (direct reviewer
promotion, pre-skill-era triage, etc.) but lacked the literal `Pull Request
quality criteria` marker the classifier searches for, so they double-counted as
"untriaged" while *also* appearing in the "Ready for review" hero card.
The recommendation rules and health rating fired on the inflated count,
producing advice that didn't match the real state.
## Changes
This is a pure classification + documentation refinement. No fetch shape, no
GraphQL changes, no breaking changes for adopters.
### `classify.md`
- Introduces an explicit **`is_untriaged` predicate** that combines the
existing triage-marker scan with two missing exclusions: (a) author is not
OWNER/MEMBER/COLLABORATOR, (b) PR does not carry `ready for maintainer review`.
- Documents the rationale for each exclusion.
### `aggregate.md`
- Adds `untriaged_nondraft` / `untriaged_old` / `untriaged_med` per-area
counters that consume the refined predicate.
- Adds whole-repo `total_drafts` / `total_non_drafts` counters powering the
dashboard's new draft/non-draft split.
- Updates the **health rating** thresholds to read from the refined counters
(so a queue full of ready-labelled PRs without the literal marker doesn't
false-positive into "Action needed").
- Adds two new invariants covering the new counter relationships.
### `render.md`
- Enhances the "Open PRs" hero card with a **two-line sub-label**:
- Line 1: `<non-draft> non-draft · <draft> draft`
- Line 2: `<contributor> contributor · <collaborator>
collaborator-authored`
This addresses a recurring maintainer question — *"how much of the backlog
is in-review vs. still being worked on"* — at a glance.
- Updates the "Untriaged non-drafts" hero card spec to reference the refined
`is_untriaged` predicate and explains why both exclusions matter.
## Note on `pressure_weight`
`classify.md#pressure-weight` was already correct — collaborator-authored
PRs already scored 0, and ready-labelled PRs already got a fixed weight of 1
(regardless of triage state). So the **area-pressure ranking didn't need
fixing** — only the global "untriaged" counters that feed the hero card, health
rating, and recommendation rules needed the predicate refinement.
## Validation
Ran on `apache/airflow` (476 open PRs at fetch). Pre-fix dashboard reported
266 / 73; post-fix reads 38 / actual count after exclusions, matching the real
backlog the maintainer is actually able to act on.
`prek run --all-files` passes on the changed files.
---
##### Was generative AI tooling used to co-author this PR?
- [X] Yes — Claude Code (Opus 4.7)
Generated-by: Claude Code (Opus 4.7)
--
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]