qwen-code/.github/scripts
易良 19a4b973eb
fix(ci): back-port the checkout-heal wipe guard to the triage and serve-ab wipes (#9277)
* fix(ci): back-port the checkout-heal wipe guard to the triage and serve-ab wipes

The "empty the workspace, keep the directory" idiom exists in three
copies; only the review workflow's copy received the #9220 hardening
(canonicalization, trailing-slash strip, RUNNER_WORKSPACE allowlist).
Measured on main for #9265, the two triage guards let non-canonical
spellings of the guarded roots through (/home/, /home/., //usr,
/root/, /var/ all reached the rm), and serve-ab's wipe had no guard
at all — even `/home` or an empty string arrived at `find … -exec
rm -rf`.

Port the reference guard to all three sites, keeping each site's
exit contract: triage fails loud both before and after external
code, serve-ab stays bare under the job's `-eo pipefail` so an
unclearable workspace fails before either checkout builds on top of
the leftovers.

Pin each ported copy with its own tests: bad-path batteries under an
rm recorder (the destructive primitive cannot fire under any edit),
an allowlist-escaping `..` case gated on a GNU-realpath host probe
(the lesson from 90fa6bb4), a realpath-absent trailing-slash
RUNNER_WORKSPACE case, and text pins on the ported layers. Every pin
was mutation-verified red against a deletion of the layer it guards.

* test(ci): pin guarded serve wipe

* fix(ci): close wipe guard fallback gaps

* fix(ci): fail closed without realpath

* fix(ci): keep wipe guards portable

* test(ci): pin wipe-guard RWS layers and unmask the pre-run battery

- run the rewritten pre-run sweep battery under -e -o pipefail so a
  failing sweep can no longer report success (bare bash -c masked it)
- pin the RWS '..' refusal and degenerate-root refusal text in all
  copies, and add RUNNER_WORKSPACE='/' exec cases to both copy suites
- exercise both pre-run and post-run copies in the realpath-absent
  refusal test
- replace the '..' escape vector with a symlink escape that only the
  realpath line can refuse, and correct the mutant-outcome comments
- add the serve-ab wipe-before-checkouts ordering pin from the sister
  suite and a happy-path RWS canonicalization pin

* test(ci): correct wipe-guard mutant-outcome comments for find -P

The symlink-escape comments claimed that with the WS realpath line deleted, find reaches rm through the link target. GNU find's default -P mode does not descend symlink operands: the mutant passes every guard, wipes nothing, and exits 0, so only the non-zero-status assertion catches it — the rm-log assertion passes vacuously. Reword both twin comments (R5-1).

---------

Co-authored-by: yiliang114 <yiliang114@users.noreply.github.com>
2026-08-18 06:49:40 +00:00
..
ci perf(ci): run docs-only automatic reviews at medium effort (#8648) 2026-08-07 17:00:32 +00:00
dsw-swe-verified feat: chain Terminal-Bench release evaluation (#9120) 2026-08-17 05:53:06 +00:00
assign-issue-owner.mjs feat(ci): auto-assign issues to area owners from labels (#8668) 2026-08-08 23:01:03 +00:00
assign-issue-owner.test.mjs feat(ci): auto-assign issues to area owners from labels (#8668) 2026-08-08 23:01:03 +00:00
auto-minimize-spam.test.mjs fix(ci): minimize new spam comments on creation (#9266) 2026-08-17 05:12:04 +00:00
cap-release-notes.mjs fix(release): keep notes anchored and cap the release body (#8199) 2026-07-31 09:55:38 +00:00
cap-release-notes.test.mjs fix(release): keep notes anchored and cap the release body (#8199) 2026-07-31 09:55:38 +00:00
check-autofix-contracts.sh ci(autofix): add cross-package contract verification (#7642) 2026-07-24 05:13:04 +00:00
check-settings-schema.sh ci(autofix): recover from generated-artifact CI gates and stop silent stalls (#6998) 2026-07-17 03:26:43 +00:00
ci-flaky-rerun.mjs feat(ci): auto-open a deflake fix issue for confirmed flaky tests (#7231) 2026-07-19 16:49:29 +00:00
ci-runner-routing.test.mjs fix(ci): back-port the checkout-heal wipe guard to the triage and serve-ab wipes (#9277) 2026-08-18 06:49:40 +00:00
classify-release-notes.mjs fix(ci): route workflow label mutations through REST (#8761) 2026-08-09 15:05:15 +00:00
classify-release-notes.test.mjs fix(ci): route workflow label mutations through REST (#8761) 2026-08-09 15:05:15 +00:00
create-desktop-update-manifest.mjs feat(desktop): add Aliyun OSS release mirror (#8976) 2026-08-12 10:59:10 +00:00
create-electron-bridge-manifest.mjs fix(desktop): bridge Electron users on Windows and Linux (#9079) 2026-08-13 15:42:31 +00:00
pr-safety-precheck.mjs fix(ci): limit fork PR precheck to safety signals (#6178) 2026-07-02 20:56:41 +08:00
pr-safety-precheck.test.mjs fix(ci): limit fork PR precheck to safety signals (#6178) 2026-07-02 20:56:41 +08:00
qwen-triage-workflow.test.mjs fix(ci): stop dropping agent settings in resolve and follow-up workflows (#9252) 2026-08-16 03:27:00 +00:00
resanitize-git-config.sh fix(ci): make autofix verification gates hermetic to runner git config (#8961) 2026-08-13 11:39:04 +00:00
resolve-owning-packages.sh fix(autofix): resolve owning package for nested paths; report verify-failed handoffs as not pushed (#7330) 2026-07-20 14:39:56 +00:00
resolve-sandbox-image.mjs ci(autofix): restore sandbox image flow (#6261) 2026-07-03 15:30:58 +00:00
resolve-sandbox-image.test.mjs ci(autofix): restore sandbox image flow (#6261) 2026-07-03 15:30:58 +00:00
run-autofix-review-verification.sh feat(autofix): deny-by-default footprint gate and positional window censuses (#9156) 2026-08-14 17:28:16 +00:00
serve-ab-diff.mjs ci(serve): daemon A/B before/after preview on response-surface PRs (#6975) 2026-07-16 00:58:52 +00:00
serve-ab-diff.test.mjs ci(serve): daemon A/B before/after preview on response-surface PRs (#6975) 2026-07-16 00:58:52 +00:00
serve-ab-drive.mjs ci(serve): daemon A/B before/after preview on response-surface PRs (#6975) 2026-07-16 00:58:52 +00:00
upsert-bot-comment.sh perf(ci): run docs-only automatic reviews at medium effort (#8648) 2026-08-07 17:00:32 +00:00
upsert-bot-comment.test.mjs perf(ci): run docs-only automatic reviews at medium effort (#8648) 2026-08-07 17:00:32 +00:00
upsert-deferred-issue.sh feat(autofix): defer verified out-of-footprint findings to a surviving follow-up queue (#9189) 2026-08-16 11:28:05 +00:00
web-shell-visuals-compose.mjs ci(web-shell): denoise cross-job font-AA so visual previews stop false-flagging (#7210) 2026-07-19 11:27:08 +00:00
web-shell-visuals-compose.test.mjs ci(web-shell): denoise cross-job font-AA so visual previews stop false-flagging (#7210) 2026-07-19 11:27:08 +00:00
web-shell-visuals-publish.mjs fix(ci): don't let one failing scenario sink the whole visual preview (#7511) 2026-07-23 02:34:07 +00:00
web-shell-visuals-publish.test.mjs fix(ci): don't let one failing scenario sink the whole visual preview (#7511) 2026-07-23 02:34:07 +00:00