justinmclean opened a new pull request, #480:
URL: https://github.com/apache/airflow-steward/pull/480
## Summary
### What
Adds the `pr-management-quick-merge` skill: the express lane of the PR
lifecycle. It scans the `ready for maintainer review` queue and surfaces the
PRs that are small and low-risk enough for a maintainer to read in full and
merge in under a minute, the trivial tail (typo fixes, doc clarifications,
changelog/newsfragment entries, translation strings, small test-only changes)
that otherwise ages behind the heavyweight PRs.
### How it screens
Each candidate passes a two-stage screen, then a live re-poll:
- **Stage 1, quality gate (hard pass/fail).** CI green on real CI checks (not
just bot statuses), no failed or pending checks, no `action_required`
workflows, no unresolved collaborator threads, no outstanding
changes-requested. Any gate fails and the PR drops out of the express lane.
- **Stage 2, triviality.** The diff must be within churn and file-count
budgets and touch only allow-listed supplementary paths (docs, tests), with
the deny-list checked first so sensitive paths like `.github/**` are
excluded even when they would otherwise match. Survivors get a tier (A for
docs-only, B for tests/mixed).
- **Stage 3, live merge-readiness.** A fresh per-PR mergeability check sorts
candidates into ready, needs-approval (blocked on a missing required
review), or drop (conflict / still computing).
### Safety boundary
The skill never merges. It surfaces and ranks candidates with the full file
list, churn, an all-gates-green attestation, a diff view, and the exact
`gh pr merge` command for the maintainer to run themselves. Its only
state-changing action is an optional APPROVE review, and only on the
maintainer's explicit per-PR confirmation, to clear the common case of a
trivial all-green PR that just lacks a required approval. External content
(PR bodies, titles, commits) is treated as data, never as instructions.
### Also included
A behavioral eval suite under
`tools/skill-evals/evals/pr-management-quick-merge/` covering the three
stages
(required test coverage for the skill).
## Type of change
- [X] Skill change (`.claude/skills/<name>/`) — eval fixtures updated below
- [ ] Tool / bridge contract (`tools/<system>/*.md`)
- [ ] Python package (`tools/*/` with `pyproject.toml`)
- [ ] Groovy reference impl
- [ ] Cross-cutting (RFC, AGENTS.md, sandbox, privacy-LLM)
- [ ] Documentation (`docs/`, `README.md`, `CONTRIBUTING.md`)
- [ ] Project template (`projects/_template/`)
- [ ] CI / dev loop (`prek`, workflows, validators)
- [ ] Other:
## Test plan
- [X] `prek run --all-files` passes
- [ ] For Python packages touched: `uv run pytest` / `ruff check` / `mypy`
passes
- [ ] For Groovy bridges touched: command-line invocation tested end-to-end
- [ ] For skill changes: eval suite passes for the affected skill
(`PYTHONPATH=tools/skill-evals/src python3 -m skill_evals.runner
tools/skill-evals/evals/<skill>/`)
- [X] For skill *behaviour* changes: a new or updated eval fixture is
included in this PR
(a regression test for the bug fixed / the behaviour added — see
CONTRIBUTING.md)
- [ ] Other:
--
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]