Skip to content

anti-slop autocloses legitimate team PRs via PINEAPPLE honeypot #740

@anandgupta42

Description

@anandgupta42

Description

The anti-slop GitHub Actions workflow (.github/workflows/anti-slop.yml) auto-closes legitimate PRs from team members within ~2 minutes of opening.

Root cause

.github/pull_request_template.md contains an HTML comment instructing LLMs to prepend "PINEAPPLE" to the PR description — classic honeypot. But anti-slop.yml:50 lists PINEAPPLE as a blocked-terms, so any PR that follows the template's own instruction (i.e. AI-assisted PRs, which includes most legitimate agent-authored code-review + fix flows) gets auto-closed.

Separately, close-pr: true is set with no TEAM_MEMBERS carve-out. The pr-standards.yml workflow has a TEAM_MEMBERS exemption pattern but anti-slop does not — so even team members listed in .github/TEAM_MEMBERS are subject to auto-close.

Evidence

PR #739 (my legitimate BQ finops fix, 8 files, 496 LOC, passed all other CI checks, had a consensus code review from 3 external models) was auto-closed 2 minutes after opening with:

This PR was automatically closed by our quality checks. Common reasons: New GitHub account with limited contribution history, PR description doesn't meet our guidelines, Contribution appears to be AI-generated without meaningful review.

My account (anandgupta42) is in TEAM_MEMBERS, has >30-day age, and a merge history well above the threshold. The only failure vector was the PINEAPPLE term I followed the template instruction to include.

Impact

  • Every AI-assisted PR from team members gets auto-closed.
  • Reopening requires a maintainer and loses CI history.
  • Disincentivizes using agent-authored workflows that follow the PR template correctly.

Proposed fix

Minimal change: set close-pr: false in anti-slop.yml. Keep all the quality signals (labels, comments, failure message) so the action still flags spam PRs, but don't auto-close. Maintainers can close manually when needed.

Out of scope (follow-ups)

  • Decide whether to keep PINEAPPLE as a honeypot at all (the template actively induces the behavior).
  • Consider adding a TEAM_MEMBERS carve-out to anti-slop like pr-standards.yml has.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions