qwen-code/scripts/tests
Shaojin Wen e447cbe0dd
feat(triage): start the verify lane alongside /triage on a pull request (#8249)
A `@qwen-code /triage` comment on a PR now starts the sandboxed verify
lane too, in parallel. The two answer different questions — triage reads,
verify builds and runs — and neither waits on the other; they were
already sibling jobs on `needs: [authorize]`, so this is a trigger
change, not a new pipeline.

The trigger cannot be a second copy of the command patterns. authorize
publishes `verify_lane`, and the verify job's `if` and concurrency group
both read it, because re-matching the strings in the job predicate is
exactly what would let the trigger and the trust classification drift:
the classifier keyed on `/verify` while the predicate answered to
`/triage` as well, and a `/triage`-started run would then have executed
an external author's code with `verify_trust` empty — skipping the
head-OID pin, the risk screen and both workspace wipes, the four controls
that exist for untrusted code on a reused pool. Routing the new trigger
through the same classifier is what keeps them on.

The lane fails closed differently from an explicit `/verify`. An
unreadable author permission or a failed head-OID snapshot still denies
`/verify` outright, since the commenter asked for exactly that; on
`/triage` it closes the lane only, so a flaky permission API cannot cost
a reviewer their triage. Automatic per-PR triage (`pull_request_target`)
deliberately does not pull the lane: the constraint is the agent budget,
not runner capacity — a verify run is up to 110 minutes of model time,
and every `synchronize` would spend one. Commenting is what says the PR
is worth it. On a plain issue the lane stays off and no author lookup is
spent.

The verify lane's trigger turned out to be unpinned: deleting the gate
from the job predicate left the suite green. The new test pins both
predicates, and it took two tries — asserting over the whole job text
could not tell `if:` from `concurrency:`, so the first version survived
its own mutation, and so did the positive control written to vouch for
it. Both are now sliced per predicate. Mutation results: dropping the
gate from `if`, from `concurrency`, from authorize's `/triage` branch,
and making the piggybacked lane deny triage are all caught; the
unmutated control and the ECS kill-switch control behave as expected.

Verified by executing the real authorize step with a per-user permission
stub across twelve branches: /verify and /triage on a PR classify
identically (trusted for a write author, external plus a pinned OID
otherwise), /verify still denies on a lookup failure where /triage keeps
should_run with the lane off, /tmux and plain comments are unchanged, and
a commenter without write is denied throughout. actionlint, yamllint,
eslint clean; the prettier warning on this file is pre-existing (fails
identically with the change stashed).

Co-authored-by: verify <verify@local>
2026-07-31 17:33:25 +00:00
..
ai-release-notes-workflow.test.js fix(release): keep notes anchored and cap the release body (#8199) 2026-07-31 09:55:38 +00:00
audit-runtime-critical.test.js ci: keep the critical-audit gate honest when npm cannot answer (#7743) 2026-07-26 06:59:13 +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 fix(ci): stop a slow patrol classifier from killing every flaky rerun (#7358) 2026-07-21 02:33:51 +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(cli): update npm installs safely in background (#7322) 2026-07-21 06:32:24 +00:00
comment-attachment-guard-workflow.test.js fix(ci): gate the attachment guard before it allocates a runner (#8095) 2026-07-30 06:32:55 +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
e2e-workflow.test.js fix(ci): keep the post-merge E2E signal on main alive (#7795) 2026-07-28 11:54:52 +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 fix(scripts): slim release-note model prompts and log request timing (#7941) 2026-07-28 15:32:56 +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(release): bump preview base past published stable (#7978) 2026-07-29 23:21:00 +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 fix(ci): keep the post-merge E2E signal on main alive (#7795) 2026-07-28 11:54:52 +00:00
no-ak-integration-ci.test.js feat(core): propagate trusted daemon invocation context (#7279) 2026-07-23 06:49:11 +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(release): bump preview base past published stable (#7978) 2026-07-29 23:21:00 +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
pr-self-report-label.test.js ci: label a PR that closes an issue its own author opened (#7630) 2026-07-24 05:50:47 +00:00
qwen-autofix-workflow.test.js fix(autofix): Extend suggestion handling to ten rounds (#8247) 2026-07-31 17:20:28 +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(review): give the review retry the remaining time budget (#7852) 2026-07-28 05:29:20 +00:00
qwen-resolve-workflow.test.js fix(ci): serialise the two workflows that push to a PR head branch (#7392) 2026-07-21 07:40:56 +00:00
qwen-triage-finalize-workflow.test.js fix(ci): rename triage status marker to avoid duplicate-guard collision (#7723) 2026-07-26 15:51:22 +00:00
qwen-triage-workflow.test.js feat(triage): start the verify lane alongside /triage on a pull request (#8249) 2026-07-31 17:33:25 +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
sdk-node-exporter-stub.test.js perf(telemetry): lazy-load the SDK and split OTLP exporter chains by protocol (#7276) 2026-07-21 07:35:30 +00:00
serve-fast-path-bundle-check.test.js feat(ci): fail the startup bundle check when the CLI entry is hoisted into a chunk (#8203) 2026-07-31 08:57:57 +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
update-ecs-runner-qwen-workflow.test.js fix(ci): update the Qwen binary used by ECS runners (#8000) 2026-07-29 05:24:56 +00: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
verify-capture.test.js fix(ci): avoid verify capture color conflict (#8236) 2026-07-31 14:15:40 +00: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