qwen-code/scripts/tests
Shaojin Wen eb53ebed5b
feat(autofix): re-arm a stranded PR with @qwen-code /retry instead of deleting a marker (#7354)
* feat(autofix): re-arm a stranded PR with @qwen-code /retry instead of deleting a marker

Recovering a stranded managed PR meant running `gh api -X DELETE` against the
bot's own autofix-eval marker comment. That needed raw API access and the
comment id, erased the audit trail, and was undiscoverable unless you had read
the workflow — it came up twice while triaging #7246, #7329 and #7336.

`@qwen-code /retry` now posts a single `<!-- autofix-rearm -->` marker, which
does both halves of what the deletion did:

- The scan's watermark ignores eval markers written BEFORE the newest re-arm,
  so the feedback those markers buried is read again. The watermark stays
  global otherwise — this is an explicit, maintainer-issued exception, which is
  exactly what the deletion was, only recorded instead of destructive.
- The marker also opens a fresh counting window (it joins the engage ack in
  REARM_KEY), so the round counter resets and a terminal round stops skipping
  the PR. That also means the existing "a re-arm supersedes queued old-window
  jobs" guard covers /retry for free.

The address job's live recheck mirrors both, so a run selected before a re-arm
still discards itself instead of stamping an old-sequence marker.

Authorization is the takeover command's, unchanged and reused rather than
reinvented: exact body match, live permission lookup, in-repo-only author
privilege. The route prefilter now admits the second command. The job verifies
CI_DEV_BOT_PAT authenticates as the bot before commenting, because both
scanners only count markers authored by it. The marker is registered as a
control comment so the agent never sees the re-arm as feedback to address.

Tests: the real extracted scan block is replayed over synthetic comment
fixtures — stranded (watermark held, round 2), after /retry (watermark
released, window reset, round 0), a marker written after the re-arm counting
again, and a re-arm from a non-bot author correctly ignored. Both halves
mutation-verified.

* test(autofix): add behavioral test for address-side re-arm stale check (#7354)

* fix(autofix): generalize remaining command-ignored messages and assert all filter sites (#7354)

* test(autofix): add behavioral test for the retry-command re-arm marker job (#7354)

---------

Co-authored-by: wenshao <wenshao@example.com>
Co-authored-by: qwen-code-dev-bot <qwen-code-dev-bot@users.noreply.github.com>
2026-07-20 22:27:55 +00:00
..
ai-release-notes-workflow.test.js ci(release): finalize stable releases asynchronously (#6868) 2026-07-15 00:30:51 +00:00
build-and-publish-image-workflow.test.js ci(autofix): restore sandbox image flow (#6261) 2026-07-03 15:30:58 +00:00
check-build-status.test.js fix(review): report what the transcripts prove; build the roster in one call (#7033) 2026-07-18 00:43:57 +00:00
check-i18n.test.ts fix(cli): localize approval mode UI labels (#6592) 2026-07-11 00:07:03 +00:00
chrome-extension-package.test.js fix(ci): cover release integration regressions (#5994) 2026-06-29 11:54:11 +00:00
ci-flaky-rerun-workflow.test.js feat(ci): add automated PR failure patrol (#6766) 2026-07-15 00:51:11 +00:00
ci-flaky-rerun.test.js feat(ci): auto-open a deflake fix issue for confirmed flaky tests (#7231) 2026-07-19 16:49:29 +00:00
clean-package-build-artifacts.test.js test(core): stabilize file history eviction test (#6637) 2026-07-10 06:39:52 +00:00
cli-entry.test.js fix(review): report what the transcripts prove; build the roster in one call (#7033) 2026-07-18 00:43:57 +00:00
comment-attachment-guard-workflow.test.js ci: add suspicious comment attachment guard (#6599) 2026-07-10 09:40:54 +00:00
dev.test.js fix(review): report what the transcripts prove; build the roster in one call (#7033) 2026-07-18 00:43:57 +00:00
generate-changelog.test.js feat(release): generate AI-assisted release notes (#6756) 2026-07-12 13:00:22 +00:00
generate-release-notes.test.js feat(release): generate AI-assisted release notes (#6756) 2026-07-12 13:00:22 +00:00
get-release-version-python-sdk.test.js feat(sdk-python): add network timeouts to release version helper (#3833) 2026-05-05 19:25:00 +08:00
get-release-version.test.js fix(scripts): handle missing NPM dist-tags gracefully in release versioning (#6476) (#6481) 2026-07-08 12:21:14 +00:00
install-script.test.js fix(cli): avoid updating active CLI processes (#6874) 2026-07-15 00:33:17 +00:00
issue-triage-ownership-workflow.test.js fix(ci): consolidate issue triage ownership (#7180) 2026-07-19 10:58:40 +00:00
lint.test.js revert: remove local PR verification gate (#7031) 2026-07-16 11:24:38 +00:00
main-ci-failure-issue-workflow.test.js feat(release): generate AI-assisted release notes (#6756) 2026-07-12 13:00:22 +00:00
no-ak-integration-ci.test.js fix(ci): avoid apt on self-hosted Playwright smoke (#6865) 2026-07-14 13:19:40 +00:00
package-assets.test.js fix(release): raise prepared package size limit to 96 MB (#6687) (#6691) 2026-07-11 01:01:59 +00:00
package-scripts.test.js fix(autofix): resolve owning package for nested paths; report verify-failed handoffs as not pushed (#7330) 2026-07-20 14:39:56 +00:00
pr-force-push-reminder-workflow.test.js ci(autofix): run agents on dedicated ECS runners (#6207) 2026-07-03 07:40:07 +00:00
qwen-autofix-workflow.test.js feat(autofix): re-arm a stranded PR with @qwen-code /retry instead of deleting a marker (#7354) 2026-07-20 22:27:55 +00:00
qwen-fleet-shepherd-workflow.test.js feat(autofix): label-driven takeover and release; fix forced-dispatch green no-op (#7165) 2026-07-19 07:35:13 +00:00
qwen-pr-review-workflow.test.js fix(ci): tighten API error detection to avoid false positive on review prose (#7328) 2026-07-20 12:41:25 +00:00
qwen-resolve-workflow.test.js feat(review): retry transient API failures once; surface quota clearly (#7233) 2026-07-19 15:27:40 +00:00
qwen-triage-workflow.test.js fix(ci): notify silent triage re-runs (#7079) 2026-07-17 16:07:10 +00:00
release-helpers.test.js refactor: extract shared release helper utilities (#3834) 2026-05-05 10:15:17 +08:00
release-sdk-workflow.test.js fix(ci): skip empty SDK release PR (#6861) 2026-07-14 13:19:42 +00:00
sandbox-command.test.js fix(scripts): avoid shell injection in sandbox command detection (#6108) 2026-07-01 16:20:40 +08:00
serve-fast-path-bundle-check.test.js perf(cli): Defer TUI runtime from ACP startup (#7182) 2026-07-19 00:10:15 +00:00
start.test.js fix(review): report what the transcripts prove; build the roster in one call (#7033) 2026-07-18 00:43:57 +00:00
test-setup.ts feat(installer): add standalone archive installation (#3776) 2026-05-11 13:25:48 +08:00
upload-aliyun-oss-assets.test.js feat(installer): add standalone hosted install and uninstall flow (#3828) 2026-05-21 11:57:10 +08:00
vitest.config.ts refactor(auth): unify provider config in core, simplify /auth as "Connect a Provider" (#4287) 2026-05-20 23:48:52 +08:00
workspaces.test.js feat(desktop): Add desktop app package with Qwen ACP SDK integration (#3778) 2026-06-11 21:57:20 +08:00