chore(ci): remove retired WebUI dependency guard - #11095
Conversation
|
Thanks for the PR! Template looks good ✓ — every required section is filled in, including a real Risk & Scope and the Chinese translation. Problem: observed, and I confirmed the evidence independently rather than taking the description's word for it. Pulling the job timings off release run #33957952281:
So both blockers are real and both numbers in the description check out. This is not theoretical hardening. Direction: the lane-contract half is a plain follow-up to #9812 — the guard was added to CI without updating the pinned payload list, and the fix is to add the name. Clearly aligned. The second half raises two release job ceilings, which puts this PR in the release pipeline, and that is a call I'd rather a maintainer own than have a gate rubber-stamp — see the escalation at the bottom. Size: not applicable. No core paths ( Approach: minimal on both counts — no drive-by edits, no reformatting, nothing unrelated. Two honest questions, neither a blocker:
Risk: no elevated risk signals — none of the three files match the high-risk revert-correlated paths. ⏸️ Escalating rather than approving. This touches Flagging these for discussion before this lands. 中文说明感谢贡献! 模板完整 ✓ —— 所有必填小节都写了,包括 Risk & Scope 和中文说明。 问题:已观测到,并且我独立核实了证据,没有直接采信 PR 描述。 从 release run #33957952281 拉取 job 时间:
所以两个阻塞都是真实存在的,描述里的两个数字都核对无误。这不是理论性加固。 方向: lane 契约这一半是 #9812 的直接跟进——CI 里加了守卫,但没有同步更新被 pin 住的 payload 列表,修复方式就是补上这个名字。方向明确对齐。另一半提高了两个 release job 的上限,这把 PR 带进了发布流水线,这类判断我更希望由 maintainer 来定,而不是让 gate 直接盖章——见文末的转交说明。 规模: 不适用。没有触及核心路径( 方案: 两部分都很克制——没有顺手改动,没有重排版,没有无关内容。两个真诚的问题,都不是阻塞项:
风险: 无升级风险信号——三个文件都不匹配与 revert 相关的高风险路径。 ⏸️ 转交 maintainer,而不是批准。 本 PR 改动了 先提出来讨论,再决定合并。 — Qwen Code · qwen3.8-max-2026-09-02 Reviewed at |
Code reviewI formed my own plan from the title and the "why" before opening the diff: for the lane contract, add the missing step name to the pinned payload list in Then I checked each half against the tree rather than assuming it:
No correctness blockers, and no AGENTS.md violations — nothing over-abstracted, nothing duplicated, no unrelated churn. Two things I'd put to a maintainer, both non-blocking: The test being relaxed is a guardrail, not bookkeeping. There is an in-repo pattern for a retunable ceiling. Test evidenceThis is an unattended CI run, so I did not build or execute anything from this PR. The evidence below is the PR's own CI, read through the API for the reviewed commit. At review time CI had not finished: That pending state is exactly where the central claim sits. The claim is "these two scripts suites pass with the updated expectations", and the direct oracle is I am deliberately not naming a sandboxed lane here. The release-run evidence I cited in Stage 1 is separate and already settled — those job and step timings come from run #33957952281, which has finished. Final CI results for
One row per check name (latest run); skipped checks omitted; failures sort first. / 每个检查名一行(取最新一次运行),省略 skipped,失败项排在最前。 中文说明代码审查在看 diff 之前,我先根据标题和"为什么需要"写出了自己的方案:lane 契约部分,在 之后我逐项对照代码树核实,而不是想当然:
没有正确性阻塞项,也没有违反 AGENTS.md 的地方——没有过度抽象、没有重复代码、没有无关改动。 有两点想交给 maintainer 判断,都不是阻塞项: 被放宽的这个测试是一道护栏,不是记账。 仓库里已有"可调节上限"的写法。 测试证据这是一次无人值守的 CI 运行,所以我没有构建或执行本 PR 的任何代码。下面的证据是 PR 自身的 CI,通过 API 针对被审查的 commit 读取。 审查时 CI 尚未跑完: 这个未完成状态正好落在核心论断上。论断是"这两个 scripts 测试套件在更新预期后能通过",而直接的验证来源是 我有意没有在这里指名沙箱验证通道。 我在 Stage 1 引用的 release run 证据是另一回事,且已经落定——那些 job 与 step 时间来自已经结束的 run #33957952281。 — Qwen Code · qwen3.8-max-2026-09-02 Reviewed at |
|
Confidence: 3/5 — the review itself is clean and I could not find a defect in either half; the cap is because this PR changes the release pipeline, which is a maintainer's call, not because I doubt the code. Stepping back: this is a small, honest PR that fixes two things it says it fixes. I verified the motivation from the failed run's own timings rather than accepting the description — Static really was cancelled at its 30-minute ceiling after The implementation matches what I would have written independently, and the details that are easy to get wrong are right: the step name is spelled exactly as the workflow spells it, it sits in the slot the order-sensitive Where I land short of approving is the subject matter, and I want to be precise about that so it doesn't read as doubt I don't have. Raising Two smaller notes, neither blocking and neither a reason to hold this up: the two halves are logically independent, so if the ceiling needs discussion it would be a shame for it to detain the one-line contract fix; and the suites-passing claim is still unconfirmed because CI was in flight at review time, so read the table in my Stage 2 comment once it settles. ⏸️ Deferring — no approval and no request for changes. I could not resolve an owner deterministically: the PR carries no area label, so the owner map matched nothing, and there is no human reviewer yet to fall back on. Rather than guess a login, I am leaving this unassigned. A maintainer needs to pick this up and make the ceiling call. If you would rather the gate had a standing owner for release-workflow changes, adding an area label here would let the resolver name someone next time. 中文说明Confidence: 3/5 —— 审查本身是干净的,两部分我都找不出缺陷;扣分的原因是本 PR 改动了发布流水线,这属于 maintainer 的判断范围,而不是我对代码有疑虑。 退一步看整体:这是一个小而诚实的 PR,它修的两件事确实就是它说的两件事。我没有采信描述,而是从失败 run 自身的时间数据核对了动机——Static 确实是在 30 分钟上限处被取消的,此前 实现与我独立写出的方案一致,而且那些容易出错的细节都是对的:step 名与 workflow 中的写法逐字一致,位置正好落在顺序敏感的 我没有给批准,原因在于改动的所属领域,我想把这点说清楚,以免被误读成我其实并不存在的怀疑。把 另外两点较小的提醒,都不阻塞,也不构成拖住它的理由:这两半在逻辑上是独立的,所以如果上限需要讨论,让它拖住那一行契约修复就可惜了;另外"测试套件通过"这一论断仍未确认,因为审查时 CI 还在跑,所以请在它落定后再看我 Stage 2 评论里的表格。 ⏸️ 转交处理——不批准,也不要求修改。 我无法确定性地解析出负责人:PR 没有 area label,所以 owner map 没有匹配到任何区域;也还没有人类 reviewer 可供回退。与其猜一个账号,我就不做指派了。需要 maintainer 接手并对上限做出判断。 如果你希望 gate 对 release-workflow 类改动有一个固定负责人,在这里加一个 area label 就能让解析器下次点出名来。 — Qwen Code · qwen3.8-max-2026-09-02 Reviewed at |
|
Direction updated at
The earlier triage comments reviewed 中文说明根据 maintainer 意见, 一次性全仓审计确认 前面的 triage 评论审查的是旧提交 |
qwen-code-dev-bot
left a comment
There was a problem hiding this comment.
Approved at head 8127dc60.
Why this is safe to remove. I checked for anything left pointing at the deleted pieces, on this head: git grep "check:no-webui\|check-no-webui-dependency" returns nothing, git grep "Check retired" returns nothing, so no workflow step, npm script, contributor doc, or test contract still names the guard. preflight loses exactly one chained step and stays coherent, package.json drops only the script definition, and the two files go together — the script and the test that ran the repository-wide scan.
Verified by running it. In a detached checkout of this head:
npx vitest run --config ./scripts/tests/vitest.config.ts \
scripts/tests/ci-platform-lanes.test.js scripts/tests/release-workflow.test.js scripts/tests/package-scripts.test.js
→ 3 files passed — 105 passed | 1 skipped (106)
npx prettier --check <the six files named in the PR>
→ All matched files use Prettier code style!
so the lane-contract tests do not enumerate the removed step and the removal needs no test update, as the description claims. I also confirmed the net diff touches no workflow other than ci.yml: the branch's intermediate fix(release): extend quality check timeouts commit is fully reverted here, so this PR really is guard-removal only and does not move any quality-check budget.
Boundaries that survive the guard, which is the part worth being explicit about: the eslint no-restricted-imports rule that keeps @qwen-code/webui out of the VS Code companion bundle, scripts/tests/vscode-companion-no-webui-config.test.js, and the artifact assertion in packages/web-shell/client/build-artifact.test.ts all still run, and a fresh repository scan at this head finds no active package/import/workspace-path reference outside the deliberate mentions in those files and the historical docs/design/, docs/plans/, .qwen/e2e-tests/ records. One consequence to keep in mind rather than act on: because the package remains published on npm, a re-add would not fail installation — reintroduction is now caught by those consumer-specific boundaries and by review rather than by a whole-tree scan. If a cheap ratchet is ever wanted again, banning the specifier in check:lockfile over package.json/lockfile only would cost a fraction of scanning every tracked file on every full run.
History. No review threads exist on this PR and no prior Critical or necessary Suggestion is outstanding; the only existing review is chiga0's approval on this same head. No new Critical found. I checked the remaining webui mentions across the tree before calling any of them stale: eslint.config.js carries only the live companion-bundle rule quoted above, and eslint.legacy-filenames.mjs has none, so nothing is left dangling by the deletion.
One nit, non-blocking: docs/design/web-shell/chat-transcript-contract-prevalidation.md item 4 replaces "CI adds check:no-webui" with the one-time-audit wording, so the record no longer says a guard ever existed. A half-line noting it was added in #9812 and dropped here would keep the design history readable for whoever wonders why the scan is not in CI.
CI facts. At submit time Lint & Static, Test (ubuntu-latest), Real daemon E2E and review-pr were still queued on this head; the no-AK integration lane, Desktop Shell lanes and Classify PR were green, and nothing was red. The decision above is based on the code and the local runs.
The Lint & Static lane failed with `npm error Missing script: "check:no-webui"`. That guard was added to main by #9812 and removed again by #11095; this run's workflow came from the merge ref taken between the two, while CI checks out `refs/pull/N/head`, whose package.json never had the script. Catching up with main drops the retired guard and clears the 37-commit drift that produced the mismatch. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> Patrol-Run: qwen-pr-conflict/jmtosl3ualt
The Lint & Static lane failed with `npm error Missing script: "check:no-webui"`. That guard only existed on main between QwenLM#9812, which added it, and QwenLM#11095, which removed it; this run's workflow came from a merge ref captured inside that window while CI checks out `refs/pull/N/head`, whose package.json never carried the script. Catching up with main re-runs the lane against the current workflow. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> Patrol-Run: qwen-pr-conflict/jmtosl3ualt
Picks up c516740 (#11095), which removed the retired WebUI dependency guard from .github/workflows/ci.yml and updated the pinned step list in scripts/tests/ci-platform-lanes.test.js. This branch predates that change, so the Test lane failed deterministically at c848508 with ci-platform-lanes.test.js:490 expecting 18 steps while ci.yml still carried 19 ("Check retired WebUI dependency"). Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> Patrol-Run: qwen-pr-closeout/jmtq7b8jgnr
|
Released in v0.23.1. |
What this PR does
Removes the repository-wide WebUI retirement guard from CI and
preflight, together with its dedicated script and tests. The retirement document now records the dependency scan as a one-time pre-merge check.The previous release timeout changes are fully reverted; this PR does not extend or weaken any quality-check budget.
Why it is needed
@qwen-code/webuiand thepackages/webuiworkspace have already been removed. A one-time repository audit confirms there are no remaining active package, import, or workspace-path references, so carrying a custom scanner in every full CI run adds maintenance and runtime cost without protecting a live compatibility boundary.Reviewer Test Plan
How to verify
Run:
Expected: 105 tests pass, one existing test is skipped, and formatting passes. A direct repository scan should find no active
@qwen-code/webuipackage/import orpackages/webuipath references.Evidence (Before & After)
N/A — removal of a CI-only retirement guard.
Tested on
Environment (optional)
Node.js 22.
Risk & Scope
Linked Issues
Related to the post-retirement preview release validation after #9812 and release run https://github.com/QwenLM/qwen-code/actions/runs/33957952281
中文说明
本 PR 做了什么
删除全仓 WebUI 退役 CI 守卫、
preflight挂钩及其专用脚本和测试;设计文档改为记录“合并前一次性扫描”。之前增加的 release timeout 已全部撤回,本 PR 不提高也不弱化任何质量检查预算。
为什么需要
@qwen-code/webui与packages/webuiworkspace 已经删除。一次性全仓审计确认活动代码、依赖清单和 workspace 路径均无剩余引用,因此没有必要让每次 full CI 长期运行一套仅用于退役确认的自定义扫描器。Reviewer Test Plan
运行上述三个测试文件,预期 105 个测试通过、1 个既有测试跳过,格式检查通过;一次性仓库扫描应找不到活动的 WebUI package/import/path 引用。
风险与范围