qwen-code/scripts
Shaojin Wen e7a7ac1bfb
feat(autofix): deny-by-default footprint gate and positional window censuses (#9156)
* feat(autofix): deny-by-default footprint gate, positional window censuses, review-loop backlog

Follow-up to #8981/#8996, closing the structural causes behind their
review-round non-convergence:

- Deny-by-default footprint: every file a round touches maps to an AREA
  (declared workspace, else top-level directory, else the root file
  itself); areas outside the PR's own footprint are surfaced in a
  gate-authored advisory, or rejected retryably once the repo variable
  QWEN_AUTOFIX_FOOTPRINT_ENFORCE is staged to 'reject'. The enumerated
  class gate keeps rejecting regardless — this inverts the default for
  everything it cannot enumerate (a denylist is not a boundary).
- The three window censuses (PRIOR_TIMEOUTS, WIN_HEADS, PRIOR_HEADS)
  attribute comments positionally over their own scan-parsed eval
  markers instead of whole-body win= substrings: a neutralized marker
  quoted in a handoff excerpt, or any future marker embedding win=, can
  no longer double-attribute a comment (decoy fixture included; the
  census fixture's non-numeric round= placeholder is corrected).
- BITE_ENFORCE's reply arm inherits the thread root's CHANGES_REQUESTED
  membership, not just its body tag.
- Backlog tests: the bite restore-failure crash contract (verdict-less
  exit with the rejection document, driven by a ref-deleting runner),
  merge-base-anchored footprint compares under an advanced main
  (afterPr fixture hook), and the shrink+bite advisory append order.
- SKILL: cap each round's implemented batch (~8 findings, Critical
  first, defer the rest via comment-replies) — nine review rounds of
  evidence that oversized fix batches breed fix-of-fix defects — and
  document the footprint gate.

* fix(autofix): close the R1 footprint-gate findings

- Advisory lifecycle: one reset at gate start, every writer appends —
  the footprint advisory no longer dies to the shrink section's rm or
  its truncating write.
- Footprint membership is REF-ANCHORED: areas derive from the pre-round
  root manifest's workspaces globs (longest ancestor wins, nested
  workspaces correct), so a round cannot redefine its own boundary and
  the on-disk resolver is out of this path entirely; non-workspace
  paths under packages/ keep two segments so sibling projects stay
  distinct areas; emitted areas are newline-sanitized against phantom
  footprint grants.
- The enforcement knob rides step-level env at both verify gates —
  $GITHUB_ENV writes from earlier steps cannot downgrade 'reject'.
- TESTSIDE's critical() mirrors cr_attached (root and self), keeping
  enforcement and demotion on one comment set.
- Census ownership is LAST-WINS over scan-parsed markers (a stray
  quoted-or-appended marker cannot double-attribute), the replay decoy
  is now genuinely discriminating (old whole-body → 0, new → 1), and
  the growth-gate comment stops citing retired whole-body matchers.

Queued per the batch cap: per-line advisory bullets and the third sink
charset, discriminating fixtures at the two remaining census sites, the
reply-arm bite fixture, freight and merge-base footprint fixtures, and
digest-pinning the staged resolver for its remaining consumers.

* fix(autofix): close the R2 footprint-gate findings

- list_areas reads and translates the ref's workspaces globs ONCE per
  invocation and matches ancestors in-bash (was ~21ms git+jq+sed per
  file×ancestor call), emits printf %q keys — line-safe AND injective,
  so distinct areas can never collapse into one comparison key — and
  both render arms print one bullet per area from those keys.
- Producer failures are a STATE: a failed round- or PR-side diff (orphan
  history, transient git error) skips the footprint check loudly instead
  of shrinking one side into a verdict.
- The workflow-level FOOTPRINT_ENFORCE env is gone (the step-level pins
  are the only consumers and outrank it — dead config removed); the two
  step wirings are count-pinned.
- Fixtures: nested-workspace membership discriminates against the
  packages/ two-segment fallback (sibling nested workspaces stay
  distinct areas), and the advisory-lifecycle discriminator proves an
  earlier section's advisory survives the shrink section.

Queued: consolidating the six eval-marker regex variants behind one
grammar constant (touches six jq programs; its own change).
2026-08-14 17:28:16 +00:00
..
installation fix(install): avoid Get-FileHash for Windows checksums (#9112) 2026-08-14 01:12:08 +00:00
lib feat(core): support QWEN_HOME env var to customize config directory (#2953) 2026-05-09 15:51:52 +08:00
tests feat(autofix): deny-by-default footprint gate and positional window censuses (#9156) 2026-08-14 17:28:16 +00:00
acp-http-smoke.mjs feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
audit-runtime-critical.js ci: keep the critical-audit gate honest when npm cannot answer (#7743) 2026-07-26 06:59:13 +00:00
benchmark-api-latency.mjs feat(cli): add API preconnect to reduce first-call latency (#3318) 2026-04-27 06:54:55 +08:00
build-hosted-installation-assets.js fix(installer): auto-detect SYSTEM account and default PATH scope to machine (#4903) 2026-06-10 21:02:10 +08:00
build-standalone-release.js fix(packaging): bundle clipboard addon in standalone builds (#6708) 2026-07-11 15:18:24 +00:00
build.js feat(channels): GitHub polling adapter with notification-as-wakeup architecture (#7632) 2026-07-25 09:31:50 +00:00
build_package.js fix(build): clean stale outputs before tsc --build to prevent TS5055 (#4453) 2026-05-23 23:06:31 +08:00
build_sandbox.js fix(sandbox): fall back to 'latest' tag when image name has no colon (#2962) 2026-04-18 09:07:05 +08:00
build_vscode_companion.js Sync upstream Gemini-CLI v0.8.2 (#838) 2025-10-23 09:27:04 +08:00
check-build-status.js fix(review): report what the transcripts prove; build the roster in one call (#7033) 2026-07-18 00:43:57 +00:00
check-desktop-isolation.js feat(desktop): package Web Shell as a release-ready desktop app (#8132) 2026-08-02 08:20:16 +00:00
check-i18n.ts fix(cli): localize approval mode UI labels (#6592) 2026-07-11 00:07:03 +00:00
check-lockfile.js Sync upstream Gemini-CLI v0.8.2 (#838) 2025-10-23 09:27:04 +08:00
check-serve-fast-path-bundle.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
check-voice-guard-sync.js feat(voice): support trusted private ASR base URLs (#8350) 2026-08-06 14:04:57 +00:00
clean-package-build-artifacts.js feat(channels): GitHub polling adapter with notification-as-wakeup architecture (#7632) 2026-07-25 09:31:50 +00:00
clean.js feat(desktop): Add desktop app package with Qwen ACP SDK integration (#3778) 2026-06-11 21:57:20 +08:00
cli-entry.js fix(cli): preserve Qwen Review startup version in footers (#8431) 2026-08-04 14:58:56 +00:00
copy_bundle_assets.js fix(review): harden the pipeline against four live-run failures (#9086) 2026-08-14 04:38:49 +00:00
copy_files.js refactor(core): move review skill incident narratives to DESIGN.md (#8499) 2026-08-04 12:41:18 +00:00
create-standalone-package.js feat(review): say so when the bundle is older than the review it runs (#8390) 2026-08-07 03:21:26 +00:00
create_alias.sh fix: ambiguous literals (#461) 2025-08-27 15:23:21 +08:00
daemon-dev.js fix(scripts): allow multiple dev:daemon instances by probing Vite port (#7212) 2026-07-19 12:49:47 +00:00
desktop-openwork-sync.ts feat(acp): support desktop qwen integration (#4728) 2026-06-09 19:09:44 +08:00
dev.js fix(review): report what the transcripts prove; build the roster in one call (#7033) 2026-07-18 00:43:57 +00:00
esbuild-shims.js perf(cli): code-split lowlight to cut startup V8 parse cost (#4070) 2026-05-15 17:26:18 +08:00
generate-changelog.js feat(release): generate AI-assisted release notes (#6756) 2026-07-12 13:00:22 +00:00
generate-git-commit-info.js # 🚀 Sync Gemini CLI v0.2.1 - Major Feature Update (#483) 2025-09-01 14:48:55 +08:00
generate-release-notes.js fix(release): raise model timeouts and shrink batch size for slow networks (#8007) 2026-07-29 22:38:35 +00:00
generate-settings-schema.ts revert: remove local PR verification gate (#7031) 2026-07-16 11:24:38 +00:00
get-release-version.js fix(release): bump preview base past published stable (#7978) 2026-07-29 23:21:00 +00:00
lint.js fix(ci): cache downloaded linters on ECS runners (#9001) 2026-08-13 05:13:23 +00:00
local_telemetry.js Merge tag 'v0.3.0' into chore/sync-gemini-cli-v0.3.0 2025-09-11 16:26:56 +08:00
measure-flicker.mjs fix(cli): bound SubAgent display by visual height to prevent flicker (#3721) 2026-04-29 22:34:55 +08:00
pre-commit.js Sync upstream Gemini-CLI v0.8.2 (#838) 2025-10-23 09:27:04 +08:00
prepare-package.js chore(deps): bump sharp to ^0.35.0 to resolve GHSA-f88m-g3jw-g9cj (#8952) 2026-08-13 06:56:10 +00:00
prepare.js feat(web-shell): git status chip, visual working-tree diff, and sidebar git status (#7054) 2026-07-18 10:06:07 +00:00
release-script-utils.js feat(installer): add standalone hosted install and uninstall flow (#3828) 2026-05-21 11:57:10 +08:00
review-audit-layers.mts feat(review): cover modeled-system defect layers in the reverse audit (#8956) 2026-08-12 18:15:11 +00:00
run-java-daemon-sdk-e2e.ts ci: reduce SDK Java runner queueing (#8441) 2026-08-03 16:21:05 +00:00
sandbox_command.js fix(scripts): avoid shell injection in sandbox command detection (#6108) 2026-07-01 16:20:40 +08:00
sdk-node-exporter-stub.js perf(telemetry): lazy-load the SDK and split OTLP exporter chains by protocol (#7276) 2026-07-21 07:35:30 +00:00
sign-release.sh feat(cli): add standalone auto-update support (#4629) 2026-06-04 22:53:12 +08:00
start.js fix(review): report what the transcripts prove; build the roster in one call (#7033) 2026-07-18 00:43:57 +00:00
sync-computer-use-schemas.ts feat(computer-use): configurable screenshot max dimension (setting + env) (#5122) 2026-06-15 15:25:27 +08:00
telemetry.js feat(core): support QWEN_HOME env var to customize config directory (#2953) 2026-05-09 15:51:52 +08:00
telemetry_gcp.js fix(mcp): update OAuth client names and improve MCP commands 2026-02-08 10:46:48 +08:00
telemetry_utils.js feat(core): support QWEN_HOME env var to customize config directory (#2953) 2026-05-09 15:51:52 +08:00
test-rewind-e2e.sh fix(test): update rewind E2E Test 1 assertion after isRealUserTurn fix (#3622) 2026-04-26 06:49:42 +08:00
test-windows-paths.js chore: consistently import node modules with prefix (#3013) 2025-08-25 20:11:27 +00:00
unused-keys-only-in-locales.json feat: add /diff command and git diff statistics utility (#3491) 2026-05-10 11:15:59 +08:00
upload-aliyun-oss-assets.js fix(release): move constants above entry point to avoid TDZ error (#4398) 2026-05-23 22:21:33 +08:00
verify-capture.mjs fix(ci): avoid verify capture color conflict (#8236) 2026-07-31 14:15:40 +00:00
verify-installation-release.js feat(installer): verify release assets + switch public docs to standalone entrypoint (#3855) 2026-06-04 17:23:04 +08:00
version.js fix(release): pin channel-base dep to exact version during release bump (#7953) 2026-07-28 16:58:28 +00:00
workspaces.js feat(desktop): Add desktop app package with Qwen ACP SDK integration (#3778) 2026-06-11 21:57:20 +08:00