qwen-code/scripts/tests
Shaojin Wen bc382c3ff9
feat(verify): sweep sibling shapes, calibrate replays, measure suggested fixes (#8242)
* feat(verify): sweep sibling shapes, calibrate replays, measure suggested fixes

The verify-pr skill produced a `merge-ready` report on a head that leaks
live HTML. Measured on #8147 at b0ae340b with two control arms and one
treatment arm (real qwen3.8-max-preview, isolated QWEN_HOME each, arms
differing only by this file): both control arms concluded `merge-ready`,
the treatment arm concluded `findings` and shipped a measured two-line
fix.

The decisive arm is the control replicate. It spent the same budget as
the treatment arm and built a stronger instrument — a micromark+GFM
rendering oracle, 23 hostile fixtures, 254 assertions. It built the
HTML-block-times-fence fixture and separately probed code spans, and
never crossed the two axes. Re-running that arm's own oracle on the
fixture it never built renders a live <img> and a live <a href>, so it
would have failed its own guarantee-1 assertion. The miss was which
fixtures the agent thought to construct, which is what these rules
supply.

Added to the A/B method: sweep the sibling shapes a parser-class fix
does not pin; treat untrusted text reaching a parser as a scaling
question and probe it with a timed ladder; audit a stated cost against
the repo's own accounting of the same mechanism; enumerate the unnamed
siblings of an accepted-tradeoff list. Added to shared-state probing: an
instruction in a prompt is not an invariant, and interleavings that
fabricate a result outrank ones that crash. Added to vacuity: run the
mutation in reverse (a suite green with and without a candidate fix pins
nothing along that axis), and read a test's name as a claim about its
fixture. Workflow replays now calibrate against a real production
artifact before their cells are believed, and suggested fixes ship with
collateral measured. The follow-up status enum gains `worsened`, because
a fix can move an accepted tradeoff.

Rules whose effect was not measured are marked as such in the PR
description rather than presented as validated.

* feat(verify): read reports as coverage specs, prove negatives by census

Six more rules, each taken from a hands-on verification round that found
something the skill could not have produced.

From #8037, a fallback parser for XML tool calls: a bug report enumerates
its own cases, and those names are coverage claims the fix inherits —
holding the issue's reported 1,898-character preamble fixed and varying
only the tool showed the guard declining run_shell_command, which the
issue names explicitly, so the fix covered half of what it was filed
against. The same round found one defect with a loud variant (schema
rejects a dropped argument) and a silent one (a truncated file), which
fixes the ordering: rank variants by observability, not blast radius —
the same ordering the concurrency rule already uses. And its harness
replayed the reported wire bytes without reproducing the model-side
degradation that produces them, so Not covered now asks which of the two
a reproduction actually has.

From #8005, a Goal runtime driven through a real TUI: walking the PR's
own Reviewer Test Plan step by step turned an unrunnable step into the
round's sharpest finding, because no code path could insert real user
input into an active turn and the feature's completion criterion needed
exactly that. Proving it took a census rather than a reading — 30
captured verifier payloads carried one evidence kind and never the
required one. And its mutation matrix is the reason survivors are now
gated on a positive control: two mutations survived 429/429 and 326/326,
believable only because a third, expected-caught mutation turned one test
red.

None of these six were measured with an A/B on this file; they are drawn
from rounds that found real defects. The PR description says so.

* fix(verify-pr): address review — calibration fallback, timeout cap, pinning, section placement (#8242)

* fix(scripts): pin bare words in skill assertions, not markdown emphasis markers (#8242)

* fix(verify-pr): address round-3 review — pin payload words, bind timeout, relocate misplaced bullets (#8242)

---------

Co-authored-by: verify <verify@local>
Co-authored-by: qwen-code-dev-bot <qwen-code-dev@service.alibaba.com>
Co-authored-by: Qwen Code Bot <qwen-code-bot@users.noreply.github.com>
2026-08-01 06:00:14 +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 feat(autofix): unify local and CI flows in one skill (#8121) 2026-08-01 02:40:25 +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(verify): sweep sibling shapes, calibrate replays, measure suggested fixes (#8242) 2026-08-01 06:00:14 +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