potiuk opened a new pull request, #549:
URL: https://github.com/apache/airflow-steward/pull/549
## Problem
The triage skill had rich handling for two conversation directions but
not the third:
- **F5a** — maintainer→author cooldown (don't rush the contributor)
- **F5b** — maintainer→maintainer ping (don't talk over a maintainer
call-out)
- **(missing)** — author→maintainer question
With no rule for the third case, an author comment followed by silence
read identically to an abandoned PR: the classifier routed it to an
author-facing action (ping the author, request readiness confirmation,
convert to draft) or the stale sweeps eventually closed it.
This is the exact failure that closed a real PR — apache/airflow#64643
was closed by the triage process while an open question to the team sat
unanswered, then reopened by hand with an apology. When the author has
pinged us and we haven't replied, the ball is in **our** court.
## Fix
A new pre-filter **F5c** ("author question to a maintainer unanswered"),
the deliberate inverse of F5b, backed by a shared glossary precondition
`author_question_to_maintainer_unanswered`. It fires when the most
recent human comment is by the PR author and `@`-mentions a maintainer
(or the committers team) with no maintainer reply since — and like
F5a/F5b it overrides deterministic flags (red CI / merge conflict),
because auto-pinging "please fix CI" while the author's question to us
sits unanswered is exactly the talk-over those filters prevent.
- **classify-and-act.md** — F5c pre-filter row + shared glossary
precondition (reuses the batched comment data; no new GraphQL);
override note and required-fields table updated.
- **stale-sweeps.md** — a maintainer-court guard: Sweeps 1–3 skip these
PRs (no close / no draft-for-inactivity), Sweep 4 keeps the
`ready for maintainer review` label; checked first in Sweep 4 Step A
plus a new Step B court row.
- **SKILL.md** — Golden rule 9 extended to three cases; `F1–F5c` refs.
- **rationale.md / fetch-and-batch.md** — F5c rationale and cross-refs.
Maintainer status is resolved live (committers team / repo permission)
the same load-bearing way as F5b and Sweep 4, so a ping at a read-only
collaborator does not falsely park a PR in our court.
## Design note
F5c **skips** the PR (removes it from the author-facing flow) rather
than auto-applying `ready for maintainer review`. Forcing the label on
when CI is red would violate the label's "no maintainer time wasted on
quality issues" contract, so this change prevents the *wrong* actions
without auto-promoting. Happy to add an auto-promote-to-review variant
if reviewers prefer that.
## Test plan
- `prek run --files <changed>` — all hooks green (markdownlint, lychee,
typos, placeholders, skill-and-tool-validate).
- Walked the originating incident (apache/airflow#64643: author's last
comment pings a maintainer, unanswered) through the rules: F5c fires →
skipped from author-facing flow; stale sweeps keep it maintainer-court
instead of closing it.
Generated-by: Claude Code (Opus 4.8)
--
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]