Skip to content

Contributor nudge: CI-failure nudges churn on the same PR as the failing-check set and reason prefix flap #17328

Closed

Description

@clubanderson

What happens

On hive's own spoke (since this morning's roll) the stage-072 contributor nudge re-fires repeatedly on the same PR while CI keeps failing across pushes and reruns (#17303 / #17305 / #17308). Pod log excerpt for #17308, one head (60ed7e2), five minutes:

17:09 contributor nudged ... nudge=1 posted=true  mode=preempt reason=check-failing:changelog-fragment-guard
17:13 contributor nudged ... nudge=1 posted=false mode=queued  reason=optional-check-failing:native-queue-policy
17:14 contributor nudged ... nudge=1 posted=false mode=queued  reason=required-check-failing:changelog-fragment-guard

#17073 made the nudge one comment per PR + reason class, but a CI failure is three reason classes (check-failing, optional-check-failing, required-check-failing → slugs check-failing / optional-check-failing), so as the lane's reason prefix flaps between them every pass is a "new class": the comment is rewritten, the relay gets another fix-pr dispatch, and the per-class nudge count restarts (so the cap of 2 never holds). Each new red head is another relay dispatch too, with no window between them.

What should happen

Per-PR CI-failure nudge dedupe + cooldown, keyed on (repo, PR, failing-check set):

  1. All CI-failure reasons are one check-failing class. Same failing set → the existing hive:contributor-nudge comment is edited in place with the new head and an attempt count; never a second comment.
  2. On the same head the failing set only accumulates (union); another check going red folds into the comment without a relay re-dispatch.
  3. A changed failing set on a new head within governor.labels.stage.contributor_nudge.ci_failure_cooldown (default 6h) folds into the existing comment as a rewrite (count unchanged); after the cooldown it counts as a fresh nudge.
  4. State lives in the stage-label store (/data JSON) so a restart does not re-nudge.

Settings-UI parity for the new key (Labels tab, next to the re-nudge fields).

Activity

  1. added
    help wantedDenotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.
    on Nov 9, 2026
  2. added a commit that references this issue on Nov 9, 2026
    e6422ad
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedDenotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions