qwen-code/.github/workflows
qqqys 30c35781b3
ci(autofix): loosen issue candidate filters so the agent finds work (#5860)
* ci(autofix): loosen issue candidate filters so the agent finds work

The scheduled issue phase had been finding 0 candidates on every run. Tier-1
requires the rarely-applied status/ready-for-agent label, and tier-2's
"unattended = no human comment at all" rule fought its ">2 days old" age
gate: on a busy repo every aged bug already has a community reply, so the
funnel collapsed (128 aged bugs -> 0 survivors) purely on the comment rule.

- Unattended now keys off maintainer engagement (OWNER/MEMBER/COLLABORATOR
  comments, excluding our own bots), not any human comment. Community
  "+1"/"me too" no longer disqualifies an issue.
- Tier-1 and tier-2 are always both gathered (tier-1 prioritized, then
  de-duped by number) so a single weak ready-for-agent issue can't starve
  the run.
- Tier-2 scans a bounded age window via MIN_ISSUE_AGE_DAYS..MAX_ISSUE_AGE_DAYS
  (1..15) to focus on fresh, settled bugs instead of an unbounded set.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix(ci): preserve autofix issue tier priority

* fix(ci): keep ready autofix issues in tier one

* fix(ci): reserve autofix tier two slots

* fix(ci): tolerate tier two autofix scan failures

* fix(ci): tolerate tier one autofix scan failures

* fix(ci): harden autofix candidate merging

* fix(ci): harden autofix issue scanning

* fix(ci): harden autofix diagnostics

* fix(ci): skip unsafe autofix comment fallbacks

* fix(ci): drop unused autofix comments payload

* test(ci): strengthen autofix comment refresh guard

* test(ci): satisfy autofix workflow lint

* test(ci): tighten autofix tier two assertion

* test(ci): cover autofix tier merge guards

* test(ci): cover autofix unattended filter

* fix(ci): summarize autofix comment refresh drops

* fix(ci): bound autofix tier-2 comment-refresh API calls

Cap the tier-2 issues fed into the comment-refresh loop to 15 (a margin
above the ~10 ever selected, since filter_unattended_candidates drops
attended issues afterward) and request full pages with per_page=100, to
avoid GitHub secondary rate limits. Add workflow tests asserting the
forced-issue skip/in-progress exclusion and the tier-2 ready-for-agent
label exclusion stay in place.

Co-Authored-By: Qwen-Coder <noreply@qwen.ai>

* fix(ci): refresh all scanned tier-2 autofix issues, not just first 15

The previous change capped comment-refresh to the first 15 tier-2 issues
before filter_unattended_candidates runs. The scan still fetches 30, so
valid unattended bugs at positions 16-30 were never refreshed nor
filterable: if the first 15 were all maintainer-attended/dropped, the run
could end with zero candidates again — the failure this PR set out to fix.

Drop the .[0:15] refresh cap and refresh the full scanned set (already
bounded by --limit 30 on the scan). per_page=100 stays as the
pages-per-issue rate-limit mitigation, and the drop summary total/counters
reflect the full refreshed set again. Top-N selection after filtering is
unchanged.

Co-Authored-By: Qwen-Coder <noreply@qwen.ai>

* fix(ci): order tier priority before recency in autofix assess prompt

The assess prompt gave two conflicting selection rules: the tier note says not to pick a tier-2 issue over a comparably actionable tier-1 one, while the recency tiebreaker says to prefer the most recently reported. Since tier-1 has no age bound and tier-2 is the recent (1-15 day) tier, these point in opposite directions for comparable confidence. Make recency apply only after the tier preference and only within the same tier, removing the contradiction. Prompt text only; no shell/jq change.

Co-Authored-By: Qwen-Coder <noreply@qwen.ai>

* fix(ci): guard forced-issue jq and derive autofix comment scratch path

Address two review suggestions on the autofix candidate scan step.

- Wrap the forced-issue candidate jq in the same error guard the other
  jq calls use (tier-1/tier-2 stamp, tier merge): on malformed
  forced-issue JSON it now emits a :⚠️: and falls back to an empty
  candidate list instead of silently producing an empty candidates.json
  with no diagnostic.
- Make refresh_issue_comments reuse-safe by deriving its NDJSON scratch
  path from the output_file parameter (${output_file%.json}.ndjson)
  instead of hardcoding tier2-with-comments.ndjson, so a second call or a
  different tier can't clobber a shared scratch file. Behavior for the
  current single call is unchanged.

Co-Authored-By: Qwen-Coder <noreply@qwen.ai>

---------

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Co-authored-by: Qwen-Coder <noreply@qwen.ai>
2026-06-28 23:00:13 +00:00
..
audio-capture-prebuilds.yml ci(audio-capture): cross-compile darwin-x64 prebuild on arm64 runner (#5643) 2026-06-22 13:33:26 +00:00
build-and-publish-image.yml ci(deps): bump docker/* actions to Node 24 majors (#4131) 2026-05-14 10:54:01 +08:00
cd-cua-driver.yml feat(cua-driver): vendor qwen-cua-driver with opt-in 0–1000 relative coordinates (#5896) 2026-06-26 13:06:43 +00:00
check-issue-completeness.yml Upgrade GitHub Actions for Node 24 compatibility (#1876) 2026-05-12 15:02:33 +08:00
ci.yml Upgrade GitHub Actions to latest versions (#3683) 2026-06-27 17:03:32 +00:00
codeql.yml ci: take CodeQL and E2E off the per-merge push path (#5859) 2026-06-25 10:50:12 +00:00
desktop-release.yml ci(release): make release flow merge-queue-safe and keep release PRs out of notes (#5832) 2026-06-25 06:12:35 +00:00
docs-page-action.yml Upgrade GitHub Actions to latest versions (#3683) 2026-06-27 17:03:32 +00:00
e2e.yml Upgrade GitHub Actions to latest versions (#3683) 2026-06-27 17:03:32 +00:00
gemini-scheduled-pr-triage.yml Upgrade GitHub Actions for Node 24 compatibility (#1876) 2026-05-12 15:02:33 +08:00
qwen-autofix.yml ci(autofix): loosen issue candidate filters so the agent finds work (#5860) 2026-06-28 23:00:13 +00:00
qwen-automated-issue-triage.yml Upgrade GitHub Actions for Node 24 compatibility (#1876) 2026-05-12 15:02:33 +08:00
qwen-code-pr-review.yml ci: allow longer PR review timeout retries (#5961) 2026-06-28 15:41:04 +00:00
qwen-issue-followup-bot.yml fix(ci): fix triage prompt variable expansion, bot identity, and model secret (#4778) 2026-06-05 00:00:15 +08:00
qwen-scheduled-issue-triage.yml Sync upstream Gemini-CLI v0.8.2 (#838) 2025-10-23 09:27:04 +08:00
qwen-triage.yml ci: isolate per-run agent state for triage and PR review (#5885) 2026-06-26 07:09:27 +00:00
release-sdk-python.yml ci(release): make release flow merge-queue-safe and keep release PRs out of notes (#5832) 2026-06-25 06:12:35 +00:00
release-sdk.yml ci(release): make release flow merge-queue-safe and keep release PRs out of notes (#5832) 2026-06-25 06:12:35 +00:00
release-vscode-companion.yml ci(release): auto-publish VSCode companion after releases (#5572) 2026-06-22 02:08:44 +08:00
release.yml Upgrade GitHub Actions to latest versions (#3683) 2026-06-27 17:03:32 +00:00
sdk-python.yml Upgrade GitHub Actions for Node 24 compatibility (#1876) 2026-05-12 15:02:33 +08:00
stale.yml Upgrade GitHub Actions for Node 24 compatibility (#1876) 2026-05-12 15:02:33 +08:00
sync-cua-driver-to-oss.yml feat(core): migrate Computer Use to cua-driver (cross-platform) (#5051) 2026-06-14 09:26:09 +08:00
sync-release-to-oss.yml ci: split Aliyun OSS sync into a separate post-release workflow (#4492) 2026-05-25 19:34:21 +08:00
terminal-bench.yml Upgrade GitHub Actions to latest versions (#3683) 2026-06-27 17:03:32 +00:00