potiuk opened a new pull request, #232:
URL: https://github.com/apache/airflow-steward/pull/232

   ## Summary
   
   Adds a merit-discussion-in-flight exception to the
   `strip-ready-on-downgrade` hard rule in
   `pr-management-triage`. When the PR has any unresolved review
   thread whose first comment is from a maintainer
   (`COLLABORATOR` / `MEMBER` / `OWNER`), the `ready for
   maintainer review` label is preserved on regression:
   
   - `draft` actions skip the draft conversion (PR stays open);
     the violations comment is still posted.
   - `close` actions skip the close (PR stays open); the comment
     and the quality-violations label still apply.
   - `comment` actions just post the violations comment without
     stripping the label.
   
   `rerun` / `rebase` / `ping` were already non-stripping and
   are unchanged.
   
   ## Motivation
   
   The `ready for maintainer review` label exists to attract
   senior eyes. An unresolved maintainer-opened review thread
   is exactly the moment those eyes are most valuable —
   stripping the label or pushing the PR back to draft
   mid-discussion makes it disappear from the maintainer queue
   at the worst possible time. CI red / lint failures / merge
   conflicts and a live design debate are orthogonal axes: a
   maintainer can usefully weigh in on design even when CI is
   red.
   
   Originating user-scope feedback memory:
   `feedback-ready-for-maintainer-review-label`.
   
   ## Design choices
   
   - **Precondition is deliberately broad.** Any
     maintainer-opened unresolved review thread satisfies
     `merit_discussion_thread_present`, regardless of body
     length or when it was opened relative to the label-add.
     A narrower "substantive content" heuristic risked
     mis-classifying short-but-substantive prompts ("is this
     really the right layer?") as trivial. Erring toward
     keeping the label is the safer asymmetry: a stale-but-kept
     label costs a maintainer a glance; a stripped label
     mid-discussion costs the discussion its audience.
   - **Contributor-author threads do not satisfy the
     precondition.** Contributor-to-contributor side chatter
     is not the merit signal the label defers to. Mirrors the
     `unresolved_threads_only` collaborator qualifier already
     used by rows 14c/15.
   - **Preview must quote the maintainer-thread URL(s) that
     triggered the exception** so the maintainer can
     sanity-check before confirming.
   
   ## Out of scope
   
   `stale-sweeps.md` Sweep 4 (4a strip / 4b close) also touches
   the ready label, but on a different signal — *author
   silence ≥ 7 days after a maintainer comment*. That flow is
   about a stalled discussion, not an active one; applying the
   same exception there would block stripping a label whose
   discussion has been stuck for weeks. Flagged for follow-up
   if desired.
   
   ## Files
   
   - `.claude/skills/pr-management-triage/classify-and-act.md`
     — new `merit_discussion_thread_present` precondition;
     exception block appended to the `strip-ready-on-downgrade`
     hard rule.
   - `.claude/skills/pr-management-triage/actions.md` — Case A
     (default strip-and-mutate) vs Case B (exception)
     branches in the `draft`, `comment`, and `close` recipes.
   - `.claude/skills/pr-management-triage/rationale.md` — new
     "Merit-discussion exception to `strip-ready-on-downgrade`"
     section.
   
   ## Test plan
   
   - [x] `uv run --project tools/skill-validator skill-validate`
     passes locally.
   - [ ] Manual: ready-labelled PR + CI red + maintainer-opened
     unresolved thread → proposed action keeps the label and
     skips the draft conversion.
   - [ ] Manual: ready-labelled PR + CI red + only
     contributor-author threads → strip-on-downgrade still
     fires (no false-positive exception).
   - [ ] Manual: ready-labelled PR + merge conflict +
     maintainer thread → keep label + skip close, still post
     comment.


-- 
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