name: Block Claude / Anthropic co-author trailers

# Rejects PRs that contain a `Co-authored-by: ... claude ...` or `... anthropic ...`
# trailer in any of their commits. Contributors can still use AI tools to help
# write code, but they must remove the co-author attribution before the PR is
# eligible to merge, per the project's contributor guidelines.

on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
        with:
          fetch-depth: 0

      - name: Scan PR commits for disallowed co-author trailers
        run: |
          BASE_SHA="${{ github.event.pull_request.base.sha }}"
          HEAD_SHA="${{ github.event.pull_request.head.sha }}"
          FOUND=0
          while IFS= read -r c; do
            [ -z "$c" ] && continue
            SUBJECT=$(git log -1 "$c" --format=%s)
            if git log -1 "$c" --format="%B" | grep -qiE 'co-authored-by:.*(claude|anthropic)'; then
              echo "::error::Commit $c ($SUBJECT) has a Claude/Anthropic co-author trailer. Please remove it before this PR can merge."
              FOUND=1
            fi
          done < <(git log --format=%H "$BASE_SHA".."$HEAD_SHA")
          if [ "$FOUND" != "0" ]; then
            echo ""
            echo "How to fix:"
            echo "  1. Run: git rebase -i $BASE_SHA"
            echo "  2. Mark each flagged commit as 'reword'"
            echo "  3. Delete the Co-authored-by line from the commit message"
            echo "  4. Save, then: git push --force-with-lease"
            exit 1
          fi
          echo "No disallowed co-author trailers found."
