Running Wheels 4 in a subfolder - And figuring out tests (broken) #250
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Wheels Bot — Triage | |
| on: | |
| issues: | |
| types: [opened, reopened] | |
| workflow_dispatch: | |
| inputs: | |
| issue_number: | |
| description: 'Issue number to triage (use when the original issues:opened event missed or failed)' | |
| required: true | |
| type: string | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: wheels-bot-triage-${{ github.event.issue.number || inputs.issue_number }} | |
| cancel-in-progress: false | |
| jobs: | |
| triage: | |
| name: Triage issue | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 25 | |
| if: | | |
| vars.WHEELS_BOT_ENABLED == 'true' | |
| && (github.event_name != 'issues' || github.event.issue.user.login != 'wheels-bot[bot]') | |
| env: | |
| WHEELS_CI: "true" | |
| steps: | |
| - name: Checkout develop | |
| uses: actions/checkout@v6 | |
| with: | |
| ref: develop | |
| fetch-depth: 1 | |
| - name: Generate App token | |
| id: app-token | |
| uses: actions/create-github-app-token@v2 | |
| with: | |
| app-id: ${{ secrets.WHEELS_BOT_APP_ID }} | |
| private-key: ${{ secrets.WHEELS_BOT_PRIVATE_KEY }} | |
| - name: Skip check | |
| id: gate | |
| uses: ./.github/actions/wheels-bot-skip-check | |
| with: | |
| target-type: issue | |
| target-number: ${{ github.event.issue.number || inputs.issue_number }} | |
| marker-pattern: 'wheels-bot:triage:${{ github.event.issue.number || inputs.issue_number }}|wheels-bot:triage-class:' | |
| github-token: ${{ steps.app-token.outputs.token }} | |
| - name: Run Triage | |
| if: steps.gate.outputs.skip == 'false' | |
| uses: anthropics/claude-code-action@v1 | |
| with: | |
| # Issues are typically opened by humans, but defensive: allow our App | |
| # bot and github-actions[bot] in case an upstream automation creates | |
| # an issue we want to triage. Specific allowlist (not '*') — public repo. | |
| allowed_bots: 'wheels-bot[bot],github-actions[bot]' | |
| # Public OSS bug tracker: issues come from contributors without write | |
| # permission. The action's default actor-permission gate would reject | |
| # them, so we bypass it here. This is safe because: (a) workflow has | |
| # `contents: read` only, (b) the App token used for commenting is | |
| # independent of the actor, (c) claude_args below restricts shell to | |
| # gh + read-only git + file reads — no Write/Edit/general Bash. The | |
| # action's docs name "issue labeling" as the canonical use case. | |
| allowed_non_write_users: '*' | |
| anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} | |
| github_token: ${{ steps.app-token.outputs.token }} | |
| prompt: | | |
| /triage-issue ${{ github.event.issue.number || inputs.issue_number }} | |
| # Model policy: judging gate = fable, coding stages = opus, janitorial = sonnet. | |
| claude_args: | | |
| --model claude-opus-4-8 | |
| --max-turns 200 | |
| --allowedTools "Bash(gh:*),Bash(git status),Bash(git log:*),Bash(git diff:*),Bash(git show:*),Bash(git grep:*),Read,Grep,Glob" |