Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions .github/workflows/qwen-code-pr-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ on:
timeout_minutes:
description: 'Review timeout in minutes'
required: false
default: '120'
default: '180'
type: 'number'
dry_run:
description: 'Run /resolve without pushing'
Expand Down Expand Up @@ -347,7 +347,7 @@ jobs:
startsWith(github.event.review.body, '@qwen-code /review ') ||
startsWith(github.event.review.body, format('@qwen-code /review{0}', '\n'))) &&
needs.authorize.outputs.should_review == 'true'))
timeout-minutes: 200
timeout-minutes: 260

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Suggestion] The three-tier timeout architecture (default 180, max 240, job 260) requires these values to move together, but this relationship is undocumented. The 20-minute headroom between the validation cap (240) and the job-level timeout-minutes (260) exists so the shell timeout can kill the review process and let the error-reporting step run before GitHub's hard kill — this is non-obvious.

A future maintainer raising the cap to, say, 300 might not realize they also need to bump timeout-minutes to 320 to preserve that headroom. A one-line comment here would prevent that mistake.

Suggested change
timeout-minutes: 260
# Must exceed the validation cap (currently 240) by enough margin for error reporting
timeout-minutes: 260

— qwen3.7-max via Qwen Code /review

runs-on: '${{ (github.repository == ''QwenLM/qwen-code'' && vars.MAINTAINER_ECS_RUNNER_DISABLED != ''true'') && fromJSON(''["self-hosted", "linux", "x64", "ecs-qwen"]'') || fromJSON(''["ubuntu-latest"]'') }}'
permissions:
contents: 'read'
Expand Down Expand Up @@ -398,14 +398,14 @@ jobs:
TRIGGER_BODY: "${{ github.event.comment.body || github.event.review.body || '' }}"
run: |-
set -euo pipefail
DEFAULT_TIMEOUT_MINUTES=120
DEFAULT_TIMEOUT_MINUTES=180
TIMEOUT_MINUTES="$DEFAULT_TIMEOUT_MINUTES"
TRIGGER_COMMAND="${TRIGGER_BODY%%$'\n'*}"

if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
PR_NUMBER="${{ github.event.inputs.pr_number }}"
REVIEW_MODE="${{ github.event.inputs.review_mode }}"
TIMEOUT_MINUTES="${{ github.event.inputs.timeout_minutes || '120' }}"
TIMEOUT_MINUTES="${{ github.event.inputs.timeout_minutes || '180' }}"
elif [ "${{ github.event_name }}" = "issue_comment" ]; then
if ! printf '%s\n' "$TRIGGER_COMMAND" | grep -Eq '^@qwen-code[[:space:]]+/review([[:space:]]|$)'; then
echo "should_run=false" >> "$GITHUB_OUTPUT"
Expand Down Expand Up @@ -684,8 +684,8 @@ jobs:
if [ "$TIMEOUT_MINUTES" -le 5 ]; then
fail "timeout_minutes must be greater than 5"
fi
if [ "$TIMEOUT_MINUTES" -gt 180 ]; then
fail "timeout_minutes must not exceed 180 minutes"
if [ "$TIMEOUT_MINUTES" -gt 240 ]; then
fail "timeout_minutes must not exceed 240 minutes"
fi

if ! PR_DATA="$(gh pr view "$PR_NUMBER" --repo "$REPO" --json state,headRefOid --jq '[.state, .headRefOid] | @tsv')"; then
Expand Down Expand Up @@ -802,10 +802,10 @@ jobs:
exit 0
fi
if [ "$FAILURE_KIND" = "timeout" ]; then
if [ "$TIMEOUT_MINUTES" -lt 180 ]; then
body="**Qwen Code review timed out.** ${FAILURE_REASON} For large PRs, retry with a longer timeout by commenting: \`@qwen-code /review --timeout=180\`. See [workflow logs](${RUN_URL})."
if [ "$TIMEOUT_MINUTES" -lt 240 ]; then
body="**Qwen Code review timed out.** ${FAILURE_REASON} For large PRs, retry with a longer timeout by commenting: \`@qwen-code /review --timeout=240\`. See [workflow logs](${RUN_URL})."
else
body="**Qwen Code review timed out.** ${FAILURE_REASON} This run already used the maximum 180 minute timeout. See [workflow logs](${RUN_URL})."
body="**Qwen Code review timed out.** ${FAILURE_REASON} This run already used the maximum 240 minute timeout. See [workflow logs](${RUN_URL})."
fi
else
body="**Qwen Code review did not complete successfully.** ${FAILURE_REASON} See [workflow logs](${RUN_URL})."
Expand Down
Loading