mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-10-22 06:49:52 +00:00
* test: stop millisecond budgets from measuring the shared pool A budget written on a developer machine measures the code. On the shared ECS pool it measures the neighbours: the same third of the same suite runs in 6.7 or 36 minutes there depending only on which host it lands on, and at that spread every one of these bounds is a coin flip. Route the eleven wall-clock assertions through a helper that skips them when the workflow marks the run as pool-hosted. They still run locally and on the GitHub-hosted lanes, which is where the number means something. Claude-Session: https://claude.ai/code/session_01MCE9CXnMVrX4fUxHpQoUr8 * test: cover the inline wall-clock budgets too The first pass matched only `expect(elapsed).toBeLessThan(N)`, which is under a third of the family. Twenty-three more write the measurement inline — `expect(Date.now() - started).toBeLessThan(N)` — including two in acp-http/transport.test.ts, the file that flaked on #10842's CI run. Two sites stay as they are: NativeLspService's bound runs under fake timers, and hook-runner.process.test.ts belongs to #10842. Claude-Session: https://claude.ai/code/session_01MCE9CXnMVrX4fUxHpQoUr8 * ci: move the latency gate to the end of the env block Three CI PRs were extending the same anchor after NO_COLOR, so whichever landed second had to resolve a conflict that carried no disagreement. Claude-Session: https://claude.ai/code/session_01MCE9CXnMVrX4fUxHpQoUr8 * test: keep a relaxed bound where the duration is the property Five of the quarantined cases have no other expect(): a complexity bound or a no-zombie guarantee is the whole test, so skipping on the pool would leave them running and checking nothing — greener than before and worth less. They now keep a bound 20x wide there: far beyond the ~5x contention this fleet shows, far under what a quadratic regression costs. Claude-Session: https://claude.ai/code/session_01MCE9CXnMVrX4fUxHpQoUr8 * test(review): stamp the ledger entries when the test runs, not when it loads The three entries were stamped from a `Date.now()` evaluated in the describe body — at collection — while `beforeEach` writes the plan file at execution. Entries are fenced against that file's mtime with 2s of slack, so the stamps go stale by however long collection took and the fence drops them as a previous run's. Reproduced against the real module: at a 0ms and 1.5s gap the count reads 2, at 3s it reads 1, past a minute it reads 0 — the same 1/0/0 the three attempts of release run 33713579913 read after collecting for 2260s. Claude-Session: https://claude.ai/code/session_01MCE9CXnMVrX4fUxHpQoUr8 * ci: restore the latency gate dropped by the previous commit The previous commit swept in a stale copy of ci.yml left in the worktree and deleted this branch's own env key. Nothing about the gate changed. Claude-Session: https://claude.ai/code/session_01MCE9CXnMVrX4fUxHpQoUr8 * test: move the ledger stamp fix to its own PR That change is a defect — a stamp taken at collection, fenced against a file written at execution — while this PR is a tradeoff about where wall-clock budgets are worth asserting. They review differently, so they ship separately. See #10878. Claude-Session: https://claude.ai/code/session_01MCE9CXnMVrX4fUxHpQoUr8 * test: make the pool-lane bounds able to fail again The relaxed poolMultiplier bounds could never fire: the transport zombie tests' own 3s safety abort capped elapsed far below 1500x20, and the serve close bound (5500x20) sat above both the 5s force-close timer and the pool's 60s testTimeout, so vitest decided the outcome first. Assert what the lanes can actually observe: the zombie tests record whether the safety abort fired (a zombie ends only via that abort) and drop the multiplier; the close bound uses a 10x multiple that stays under testTimeout while a real stall still fails it. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> Patrol-Run: qwen-pr-closeout/jmtl54lfvf2 * test: parse QWEN_SKIP_LATENCY_BUDGETS as a boolean '0' and 'false' are truthy strings, so the raw truthiness gate skipped every budget for them — the opposite of what exporting =0 to re-enable budgets intends. Parse '1'/'true'/'yes' as skip; anything else enforces. Both byte-identical copies updated in lockstep; helper suites pin the gate both ways, including that poolMultiplier must not relax the bound when the switch is unset. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> Patrol-Run: qwen-pr-closeout/jmtl54lfvf2 * test: pin that poolMultiplier never relaxes the bound off the pool Add a case to both latency-budget test copies proving that with QWEN_SKIP_LATENCY_BUDGETS unset, poolMultiplier must not move the bound: the probe (1500 vs a 100 ms budget, x20) throws off the pool while the same call keeps the relaxed bound on it. The unconditional-multiplier mutant now fails this case in both packages. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> Patrol-Run: qwen-pr-closeout/jmtl79r9if7 * test: pin the QWEN_SKIP_LATENCY_BUDGETS wiring in ci.yml Extend the ECS-predicate pin case so the new skip line is nailed verbatim beside its four VITEST_* siblings. Without the pin, an edit that alters the predicate or renders '1' on every lane silently disables every millisecond budget while the helper tests stay green; the pin goes red on that mutant. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> Patrol-Run: qwen-pr-closeout/jmtl79r9if7 * test: keep the overall-cap bound asserting on the pool lane Give the wall-clock cap case poolMultiplier 5 so the pool lane keeps an upper bound at 4000ms: still under the ~5000ms drain a broken cap drains sequentially, but above a ~100ms firing under the fleet's ~5x contention. Without it the pool lane kept only the trivially-true lower bound, so the cap regression this test exists to catch shipped green there; the default x20 multiple would clear the drain too. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> Patrol-Run: qwen-pr-closeout/jmtl79r9if7 * test(ci): raise the scripts suite timeout where the suite actually reads it 30s was the quiet-host figure. Release run 33725742855 lost its Quality Checks (Scripts) job to two files at once — qwen-autofix-workflow, whose heaviest case measures ~14s idle, and acp-serve-boundary-guard, which nothing here touches — neither of them slow, both past 30s on a contended host. An earlier attempt put `vi.setConfig({ testTimeout: 90_000 })` at the top of one of those files. It is still on main and it does not work: these cases register their timeout at collection, before a runtime call can move it, and the same file timed out at 30000ms with that line in place. Remove it and set the value where the suite reads it, behind an env knob so the pool can be retuned without a PR. Claude-Session: https://claude.ai/code/session_01MCE9CXnMVrX4fUxHpQoUr8 * test(agent-view): give the ready wait the product's own budget Four cases capped the worker-ready wait at 1s while the product allows 15s (DEFAULT_WORKER_READY_TIMEOUT_MS). None of them asserts anything about that deadline — it is scaffolding for the state they do assert. On the shared pool a worker takes longer than a second to report ready, so they failed three times each, with --retry=2 already on, in release run 33713579913. The two cases that DO assert the timeout keep their 1ms. Claude-Session: https://claude.ai/code/session_01MCE9CXnMVrX4fUxHpQoUr8 * test(serve): give the archive waits the room the shared host needs `vi.waitFor` defaults to a 1000ms deadline — a developer-machine figure, hardcoded in Vitest with no global knob. On the shared pool the archive install and its settle take longer than that, and release run 33713579913 lost both of these cases with --retry=2 already on. Only the five waits inside those two cases move. The deadline is scaffolding for the state they assert, never the thing under test. Claude-Session: https://claude.ai/code/session_01MCE9CXnMVrX4fUxHpQoUr8 * test: keep the complexity bounds asserting on the pool lane Fourteen sites are ReDoS and complexity guards — 'stays linear on pathological inputs', 'collapses an exponentially branching $ref type tree', 'does not catastrophically backtrack', 'runs in bounded time'. Skipping them outright leaves assertions that a quadratic regression satisfies, on the one lane every PR runs: ci-bot's witness is a 1.5s busy-spin in budgetGapDisclosures, green on the pool and red under the strict bound. The earlier pass only caught the sites with no other expect() at all. That judgement was too narrow — what matters is whether the remaining assertions survive the regression the bound exists to catch. Multipliers land the relaxed bound near 20s, a third of the pool's 60s testTimeout, so Vitest never decides first. review-footer's refusing-run case carries its own 20s timeout, so it takes x5. Claude-Session: https://claude.ai/code/session_01MCE9CXnMVrX4fUxHpQoUr8 * ci: quarantine latency budgets in autofix gates Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * test(ci): let autofix upsert use the suite timeout Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> --------- Co-authored-by: yiliang114 <jinjing.zzj@gmail.com> Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> |
||
|---|---|---|
| .. | ||
| codemod | ||
| installation | ||
| lib | ||
| tests | ||
| tui-parity | ||
| acp-http-smoke.mjs | ||
| audit-runtime-critical.js | ||
| benchmark-api-latency.mjs | ||
| build-hosted-installation-assets.js | ||
| build-standalone-release.js | ||
| build.js | ||
| build_package.js | ||
| build_sandbox.js | ||
| build_vscode_companion.js | ||
| check-build-status.js | ||
| check-desktop-isolation.js | ||
| check-i18n.ts | ||
| check-lockfile.js | ||
| check-serve-fast-path-bundle.js | ||
| check-tui-dep-direction.mjs | ||
| clean-package-build-artifacts.js | ||
| clean.js | ||
| cli-entry.js | ||
| copy_bundle_assets.js | ||
| copy_files.js | ||
| create-standalone-package.js | ||
| create_alias.sh | ||
| daemon-dev.js | ||
| dev.js | ||
| esbuild-shims.js | ||
| generate-changelog.js | ||
| generate-git-commit-info.js | ||
| generate-release-notes.js | ||
| generate-settings-schema.ts | ||
| get-release-version.js | ||
| lint.js | ||
| local_telemetry.js | ||
| measure-flicker.mjs | ||
| pre-commit.js | ||
| prepare-package.js | ||
| prepare.js | ||
| pty-e2e.sh | ||
| release-script-utils.js | ||
| review-audit-layers.mts | ||
| run-java-daemon-sdk-e2e.ts | ||
| sandbox_command.js | ||
| sdk-node-exporter-stub.js | ||
| sign-release.sh | ||
| start.js | ||
| telemetry.js | ||
| telemetry_gcp.js | ||
| telemetry_utils.js | ||
| test-rewind-e2e.sh | ||
| test-windows-paths.js | ||
| tmux-compare.sh | ||
| unused-keys-only-in-locales.json | ||
| upload-aliyun-oss-assets.js | ||
| verify-capture.mjs | ||
| verify-installation-release.js | ||
| version.js | ||
| vitest-global-setup.js | ||
| workspaces.js | ||