Skip to content

fix(ci): record the qwen-autofix.yml size drift two in-allowance PRs accumulated (#11529) - #11537

Merged
wenshao merged 1 commit into
mainfrom
autofix/issue-11529
Sep 10, 2026
Merged

fix(ci): record the qwen-autofix.yml size drift two in-allowance PRs accumulated (#11529)#11537
wenshao merged 1 commit into
mainfrom
autofix/issue-11529

Conversation

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

What this PR does

Updates the recorded byte size of qwen-autofix.yml in the workflow-size ratchet's baseline from 463090 to its measured size on main, 469259 (wc -c). No workflow behavior changes — this is the bookkeeping line the ratchet asks for when growth is real.

Why it's needed

Main CI failed on 21951941d7 (#11529). While reproducing the failing step's test surface locally, the one deterministic defect on main is the workflow-size growth ratchet: qwen-autofix.yml is 6169 bytes over its recorded baseline against a 4096-byte allowance. Two consecutive PRs each grew the file within the allowance against their own base — #9940 to 465612 (+2522 over the recorded 463090) and #11516 to 469259 (+3647 more) — so neither was forced to bump the number, and their sum sailed past it. The result is the red-wall shape the #9904 leniency cannot cover: the push run of #11516's own merge commit fails the ratchet (its event.before predates the growth), every future PR touching qwen-autofix.yml hard-fails on growth it did not author, and every strict local run without a base SHA fails the same check. The gate's own error message prescribes the remedy — record the measured size and say why — and #11157 applied exactly this fix for the same two-PR drift pattern on release.yml four days earlier.

One scoping note, stated plainly: the 21951941d7 push run itself passes this check via the base-comparison leniency (that push did not change the file relative to its before commit), so the run's specific early failure is most consistent with the transient shared-pool failure class the repo already documents (#10490, #10035); the job logs are admin-gated, so no test name survived to confirm either way. This PR removes the deterministic standing failure in the same lane rather than guessing at the transient trigger.

Heads-up for the next editor: at 469259 bytes the file sits 741 bytes under the 470000-byte absolute gate (the gate already warns at 91% of GitHub's start-runs limit). The next real growth has to move prose into the sibling qwen-autofix.md — the ceiling must not move.

Reviewer Test Plan

How to verify

  1. Check out this branch and run wc -c .github/workflows/qwen-autofix.yml — expect 469259, matching the recorded entry.
  2. Run bash .github/scripts/check-workflow-size.sh with no environment overrides — expect exit 0 and the "within 4096 bytes of its recorded baseline" banner (plus the pre-existing approaching-gate warning).
  3. Run npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/workflow-size.test.js — expect 208/208 passing. To see the failure this fixes, check out the first parent and repeat: the qwen-autofix.yml is within its baseline allowance case fails with "6169 bytes over its recorded 463090".

Evidence (Before & After)

Before: strict local run of the workflow-size suite fails — .github/workflows/qwen-autofix.yml is 6169 bytes over its recorded 463090 and differs from the PR's base. After: suite green, gate script exit 0.

Tested on

OS Status
🍏 macOS ⚠️ not tested
🪟 Windows ⚠️ not tested
🐧 Linux ✅ tested

Environment (optional)

N/A — CI-workflow bookkeeping verified through the gate script and its vitest mirror.

Risk & Scope

  • Main risk or tradeoff: recording the larger size leaves only 741 bytes of headroom under the absolute 470000-byte gate, so the next qwen-autofix.yml growth must shed prose instead of bumping the number; that constraint is intentional and now recorded in the commit message.
  • Not validated / out of scope: the exact transient trigger of run 34441350822 (admin-gated logs; no test names extractable); any restructuring of qwen-autofix.yml prose to regain headroom, which is a separate, larger decision.
  • Breaking changes / migration notes: none.

Linked Issues

Fixes #11529

中文说明

本 PR 做了什么

把工作流体积棘轮的基线文件中 qwen-autofix.yml 的记录字节数从 463090 更新为它在 main 上的实测大小 469259(wc -c)。不改变任何工作流行为——这只是棘轮在确认增长属实时要求的那一行记录。

为什么需要

Main 分支 CI 在 21951941d7 上失败(#11529)。在本地复现失败步骤的测试面时,main 上唯一确定性的缺陷就是工作流体积增长棘轮:qwen-autofix.yml 超出其基线记录 6169 字节,而容差为 4096 字节。两个连续的 PR 各自相对自己的 base 都在容差之内——#9940 增至 465612(超出记录值 463090 共 2522 字节),#11516 再增至 469259(又多 3647 字节)——因此都没有被要求更新记录值,但两者之和越过了容差。其结果是 #9904 宽限逻辑无法覆盖的红墙形态:#11516 自身合并提交的 push 运行会在棘轮上失败(其 event.before 早于增长发生),今后每一个改动 qwen-autofix.yml 的 PR 都会因并非自己造成的增长而硬性失败,所有不带 base SHA 的本地严格运行也会在同一检查上失败。门禁自身的错误信息已经给出处方——记录实测大小并说明原因——四天前 #11157release.yml 上同款两 PR 叠加漂移正是这样修复的。

需要如实说明的范围界定:21951941d7 这次 push 运行本身能通过该检查(借助与 base 比较的宽限逻辑,因为该次 push 相对其 before 提交并未改动该文件),所以这次运行的具体早期失败更符合仓库已有记录的瞬时共享池故障类别(#10490#10035);任务日志需要管理员权限,没有测试名留存下来佐证任何一侧。本 PR 消除的是同一通道中确定性的持续失败,而不是去猜测那个瞬时触发原因。

给下一位编辑者的提醒:文件体积为 469259 字节,距离 470000 字节硬性上限只剩 741 字节(门禁已在告警:占 GitHub 启动运行上限的 91%)。下一次真实的增长必须把说明性文字迁移到同目录的 qwen-autofix.md——上限不可上调。

评审者测试计划

如何验证

  1. 检出本分支并运行 wc -c .github/workflows/qwen-autofix.yml——应为 469259,与记录值一致。
  2. 不带任何环境覆盖运行 bash .github/scripts/check-workflow-size.sh——预期退出码 0,并输出 "within 4096 bytes of its recorded baseline" 的通过横幅(另有一条本已存在的接近上限警告)。
  3. 运行 npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/workflow-size.test.js——预期 208/208 全部通过。想看到本 PR 修复的失败,可检出父提交重复该命令:qwen-autofix.yml is within its baseline allowance 用例会失败,报 "6169 bytes over its recorded 463090"。

证据(修复前后对比)

修复前:严格本地运行 workflow-size 套件失败——.github/workflows/qwen-autofix.yml is 6169 bytes over its recorded 463090 and differs from the PR's base。修复后:套件全绿,门禁脚本退出码 0。

已测试平台

系统 状态
🍏 macOS ⚠️ 未测试
🪟 Windows ⚠️ 未测试
🐧 Linux ✅ 已测试

环境(可选)

N/A——CI 工作流记账性修改,通过门禁脚本及其 vitest 镜像测试验证。

风险与范围

  • 主要风险或权衡:记录更大的体积后,470000 字节硬性上限下只剩 741 字节余量,因此下一次 qwen-autofix.yml 增长必须通过精简文字来腾出空间,而不是再次上调数字;这一约束是有意为之,并已在提交信息中记录。
  • 未验证 / 超出范围:34441350822 运行的确切瞬时触发原因(日志需要管理员权限,无法提取测试名);为腾出余量而对 qwen-autofix.yml 说明性文字进行的任何重构,那是另一项更大的独立决策。
  • 破坏性变更 / 迁移说明:无。

关联 Issue

Fixes #11529

…accumulated (#11529)

The ratchet tolerates 4096 bytes of growth per PR without a baseline
bump. Two consecutive qwen-autofix.yml PRs — #9940 (to 465612, +2522
over the recorded 463090) and #11516 (to 469259, +3647 more) — were
each inside the allowance against their own base, so neither was
forced to touch the recorded number, and the sum (6169) sails past
it. Since #11516 landed, every strict gate run — a local run without
a PR base SHA, the push run of the PR itself whose event.before
predates the growth, and any future PR that touches qwen-autofix.yml
— fails on growth it did not author, the red-wall shape #9904's
leniency cannot cover for the file's own editors. Record the measured
size (469259, wc -c on main) as the gate's own error message
prescribes.

The file now sits 741 bytes under the 470000-byte absolute gate, so
the next real growth has to move prose into qwen-autofix.md instead
of reaching for the ratchet again.

Mutation probe: with the entry at 463090 the strict vitest mirror
fails ("6169 bytes over its recorded 463090"); at 469259 the
workflow-size suite passes 208/208 and check-workflow-size.sh exits 0.
@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator Author

Autofix report for #11529 — Main CI failed: Qwen Code CI on 2195194

What the issue reports

A Qwen Code CI run on main at 21951941d7 (ci(desktop): exercise desktop packaging on a schedule, #11519) failed in job Test (ubuntu-latest, Node 22.x), step Run tests and generate reports. The failure tracker could not extract any failing test name from the logs (the job logs are admin-gated on the self-hosted pool — the same situation the /compress deflake in 53964ef7e2 describes), so the issue was filed per commit with no test identity.

Investigation

The failing commit changes only CI metadata: it adds desktop-packaging-check.yml, makes desktop-release.yml callable, and adds one line to .github/workflows/.size-baseline. No source or test code changed, so I reproduced the CI test surfaces locally at the failing tree state:

One honest scoping note: under the ratchet's push-run leniency (WORKFLOW_SIZE_BASE_SHA = github.event.before), the 21951941d7 run itself passes the mirror, because that push did not change qwen-autofix.yml relative to its before commit ad92d2bf8f. The specific trigger of run 34441350822 is therefore most consistent with the transient shared-pool failure class the repo documents (#10490: disjoint test sets failing across identical reruns; #10035: transient ENOSPC mid-suite). What the stale baseline deterministically reds is everything around that run: the push run of ad92d2bf8f itself (whose event.before predates the growth, so the leniency cannot apply), every future PR that touches qwen-autofix.yml, and every strict local run without a base SHA. The gate's own error message prescribes the remedy: "if the growth is real, update .size-baseline in this PR and say why."

Fix

One line in .github/workflows/.size-baseline: record the measured size 469259 (wc -c on main) for qwen-autofix.yml, following the #11157 precedent. The growth is real reviewed feature content (the #11516 self-review arm), whose author already compressed its prose once; the file now sits 741 bytes under the 470000-byte absolute gate, which the commit message calls out so the next growth moves prose into qwen-autofix.md instead of reaching for the ratchet.

Mutation probe (recorded per the round rules): the pre-fix state is the mutated state — with the entry at 463090, the strict vitest mirror fails with exactly the CI message above; with 469259, the workflow-size suite passes 208/208 and .github/scripts/check-workflow-size.sh exits 0 (with only the pre-existing "approaching the gate" warning at 91% of GitHub's limit).

Verification

  • bash .github/scripts/check-workflow-size.sh (strict, no base SHA) — exit 0, "every workflow file is under the 470000-byte gate and within 4096 bytes of its recorded baseline"
  • npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/workflow-size.test.js (strict, no WORKFLOW_SIZE_BASE_SHA) — 208 passed, 0 failed (pre-fix: the qwen-autofix.yml is within its baseline allowance case fails)
  • npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/workflow-size.test.js with WORKFLOW_SIZE_BASE_SHA=ad92d2bf8f (pre-fix, simulating the push-run leniency arm) — 208 passed; confirms the leniency analysis above
  • npm run test:scripts (full scripts suite, pre-fix baseline) — 2322 passed, 2 failed (workflow-size.test.js — fixed by this change; verify-capture.test.js bold case — sandbox font artifact, see above)
  • npx vitest run src/commands/review/lib/review-footer.test.ts in packages/cli (the workspace test that pins qwen-autofix.yml content) — 100 passed
  • npm run build — exit 0
  • npm run typecheck — exit 0
  • npm run lint — exit 0

Environment note: the exact failing CI job (ubuntu-latest lane on the shared runner pool, with its logs admin-gated) cannot be re-run from this sandbox; the verification above reproduces the failing step's full local surface (test:scripts) plus the repository's required pre-commit checks.

中文说明

#11529 自动修复报告 —— main 分支 CI 失败:Qwen Code CI @ 2195194

问题描述

main 分支上 21951941d7(ci(desktop): 定时演练桌面打包,#11519)的一次 Qwen Code CI 运行中,Test (ubuntu-latest, Node 22.x) 任务的 Run tests and generate reports 步骤失败。失败追踪器无法从日志中提取任何失败测试名(自建 runner 池上的任务日志需要管理员权限才能读取——53964ef7e2 中 /compress 去抖动的提交说明描述过同样的情况),因此该问题按提交建档,没有携带测试标识。

排查过程

失败的提交只改动了 CI 元数据:新增 desktop-packaging-check.yml、让 desktop-release.yml 可被调用、并给 .github/workflows/.size-baseline 加了一行,没有改动任何源码或测试代码。因此我在失败提交对应的代码树状态下本地复现了 CI 的测试面:

需要如实说明的一点:在棘轮的 push 运行宽限逻辑下(WORKFLOW_SIZE_BASE_SHA = github.event.before),21951941d7 这次运行本身能通过这些镜像测试,因为该次 push 相对其 before 提交 ad92d2bf8f 并没有改动 qwen-autofix.yml。因此 34441350822 这次运行的具体触发原因更符合仓库已有记录的瞬时共享池故障类别(#10490:同一提交重跑三次失败在互不相同的测试集上;#10035:测试中途的瞬时 ENOSPC)。而过期基线确定性打红的是这次运行周围的一切:ad92d2bf8f 自身的 push 运行(其 event.before 早于增长发生,宽限逻辑不适用)、今后每一个改动 qwen-autofix.yml 的 PR、以及所有不带 base SHA 的本地严格运行。门禁自身的错误信息已经给出了修复处方:"if the growth is real, update .size-baseline in this PR and say why."

修复内容

.github/workflows/.size-baseline 中的一行:把 qwen-autofix.yml 的记录值更新为实测大小 469259(在 mainwc -c 的结果),沿用 #11157 的先例。这部分增长是真实且经过评审的功能内容(#11516 的自评审分支),其作者已经压缩过一次注释性文字;文件目前距离 470000 字节硬性上限只剩 741 字节,提交信息中已注明这一点,以便下次增长时把说明性文字迁移到 qwen-autofix.md,而不是再次上调棘轮记录值。

变异探针(按本轮规则记录):修复前的状态本身就是变异态——条目为 463090 时,严格模式的 vitest 镜像测试失败,报错与上述 CI 信息完全一致;改为 469259 后,workflow-size 测试套件 208/208 通过,.github/scripts/check-workflow-size.sh 退出码为 0(仅剩一条本已存在的"接近上限"警告,占 GitHub 上限的 91%)。

验证

  • bash .github/scripts/check-workflow-size.sh(严格模式,无 base SHA)——退出码 0,输出 "every workflow file is under the 470000-byte gate and within 4096 bytes of its recorded baseline"
  • npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/workflow-size.test.js(严格模式,无 WORKFLOW_SIZE_BASE_SHA)——208 通过,0 失败(修复前:qwen-autofix.yml is within its baseline allowance 用例失败)
  • WORKFLOW_SIZE_BASE_SHA=ad92d2bf8f 运行同一测试(修复前,模拟 push 运行的宽限分支)——208 通过;佐证上文对宽限逻辑的分析
  • npm run test:scripts(完整脚本测试套件,修复前基线)——2322 通过,2 失败(workflow-size.test.js 由本次修改修复;verify-capture.test.js 粗体用例为沙箱字体伪影,见上文)
  • packages/cli 中运行 npx vitest run src/commands/review/lib/review-footer.test.ts(钉住 qwen-autofix.yml 内容的工作区测试)——100 通过
  • npm run build —— 退出码 0
  • npm run typecheck —— 退出码 0
  • npm run lint —— 退出码 0

环境说明:无法从本沙箱重跑确切的失败 CI 任务(共享 runner 池上的 ubuntu-latest 通道,且其日志需要管理员权限);上述验证在本地完整复现了失败步骤的测试面(test:scripts),并运行了仓库要求的全部提交前检查。


🧠 Handled by Qwen Code · model/模型 kimi-k3 · CLI 0.23.2

@github-actions github-actions Bot added the review/self-reported The linked issue was opened by the PR author (self-reported) label Sep 10, 2026
@qwen-code-ci-bot

qwen-code-ci-bot commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

⚠️ Deferred approval withheld — 1 PR CI workflow run(s) on 3641c00 did not finish green; see the updated table in the Stage 2 comment. Re-run @qwen-code /triage after fixes. finalize run

⚠️ 延迟审批已搁置 —— 3641c00 有 1 个 PR CI workflow 未以绿色完成,详见 Stage 2 评论中已更新的表格。修复后可重新运行 @qwen-code /triage查看 finalize 运行

@wenshao
wenshao enabled auto-merge September 10, 2026 07:11
@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Thanks for the PR — every number in this one is checkable, so I checked them rather than taking the description's word for it.

Template ✓ — all required sections present, English and Chinese in step.

Problem — observed, not theoretical, and it reproduces from the files on main today. .github/workflows/qwen-autofix.yml measures 469259 bytes at 1097b9fe, .size-baseline records 463090, and the allowance is 4096 — so the overage is 6169 and both enforcers take their hard-error branch wherever no base SHA is available. The drift history matches the description exactly too: 463090 at 21e1133514 (record set), 465612 at ecae037176 (+2522, inside the allowance), 469259 at ad92d2bf8f (+3647 more). Two in-allowance steps that sum past it.

Direction — aligned. This is the remedy the gate prescribes for itself: the error text ends with "if the growth is real, update .size-baseline in this PR and say why", and the baseline file's header says the same thing. #11157 landed the identical one-liner for release.yml four days ago. CHANGELOG has no direct reference, which is expected — this is CI metadata, not product surface.

Size — not applicable. One data line in .github/workflows/.size-baseline (1+/1−). No core paths, no test or generated files.

Approach — right-sized, and I checked completeness instead of assuming it: I measured all 55 workflow files against all 55 recorded entries on main. qwen-autofix.yml at +6169 is the only entry over the allowance — next closest are serve-ab.yml +2883, live-host-release.yml +2794 and qwen-triage.yml +2470, all inside. Nothing is over the 470000-byte gate, nothing trips the 20000-byte slack arm, and no entry is orphaned. So one line is the whole fix; there is no second bump hiding behind it. Moving prose out of qwen-autofix.yml instead would be a much larger change and would end up lowering this number anyway, so deferring that is right — and the PR already flags the 741 bytes of headroom left under the gate for whoever edits next.

Risk — no elevated risk signals. The changed file matches none of the revert-correlated paths.

One thing to settle before merge — the Fixes #11529 linkage. I don't think this diff fixes what that issue tracks. Run 34441350822 failed in Test (ubuntu-latest, Node 22.x) at the Run tests and generate reports step, while Check workflow file size lives in a different job (Lint & Static, ci.yml:1046) and concluded success on that same run. On a push event the base is github.event.before = ad92d2bf8f, whose copy of qwen-autofix.yml is byte-identical to 21951941d7's — so both the shell gate and the vitest mirror took the #9904 leniency path and passed. The description says all of this itself, plainly, which is to its credit; but the closing keyword still means merging auto-closes a main-CI tracker whose actual trigger nobody identified, because the job logs are admin-gated. #11157 used a non-closing reference for exactly this reason. Worth either dropping Fixes for a plain mention, or closing #11529 separately as transient/not-reproduced. Not a code blocker — a bookkeeping call for a human.

Moving on to code review. 🔍

中文说明

感谢贡献——这个 PR 里的每个数字都可核查,所以我直接核了一遍,而不是采信描述。

模板 ✓ —— 必填章节齐全,中英文一致。

问题——已观测到,不是理论性的,而且在今天的 main 上就能复现。1097b9fe.github/workflows/qwen-autofix.yml 实测 469259 字节,.size-baseline 记录为 463090,容差 4096——超出 6169 字节,因此在任何拿不到 base SHA 的场合,两个执行器都会走到硬失败分支。漂移历史也与描述完全一致:21e1133514 记录 463090(设定基线),ecae037176 增至 465612(+2522,在容差内),ad92d2bf8f 增至 469259(再 +3647)。两步各自在容差内,累加越界。

方向——对齐。这正是门禁自身给出的处方:报错信息末尾就是"如果增长属实,在本 PR 中更新 .size-baseline 并说明原因",基线文件的头部注释也这么说。四天前 #11157release.yml 落地了完全相同的一行改动。CHANGELOG 没有直接对应条目,这在预期之内——这是 CI 元数据,不是产品面。

规模——不适用。.github/workflows/.size-baseline 中一行数据(1+/1−)。未触及核心路径,无测试或生成文件。

方案——范围合适,并且我核查了完整性而不是想当然:我把 main 上全部 55 个工作流文件与全部 55 条记录逐一对比。qwen-autofix.yml 的 +6169 是唯一超出容差的条目——其次接近的是 serve-ab.yml +2883、live-host-release.yml +2794、qwen-triage.yml +2470,都在容差内。没有文件越过 470000 字节绝对门禁,没有触发 20000 字节的冗余回收分支,也没有孤立条目。所以这一行就是完整的修复,后面没有藏着第二处需要更新的数字。改成把 qwen-autofix.yml 的散文迁出去则是大得多的改动,而且最终仍要把这个数字调低,因此推迟处理是对的——PR 也已经提示了门禁下仅剩的 741 字节余量,供下一位编辑者参考。

风险——无升级风险信号。改动文件不匹配任何与回滚相关的高风险路径。

合并前需要定夺的一点——Fixes #11529 这个关联。我不认为本 diff 修的就是那个 issue 追踪的问题。运行 34441350822 失败在 Test (ubuntu-latest, Node 22.x)Run tests and generate reports 步骤,而 Check workflow file size 位于另一个 job(Lint & Static,ci.yml:1046),并且在那次运行中结论是 success。push 事件下 base 是 github.event.before = ad92d2bf8f,它的 qwen-autofix.yml21951941d7 的版本逐字节相同——因此 shell 门禁与 vitest 镜像都走了 #9904 的宽限分支并通过。描述本身把这些都如实写清楚了,这点值得肯定;但关闭关键字仍意味着合并会自动关闭一个"真实触发原因无人确认"的 main CI 追踪 issue,因为任务日志需要管理员权限。#11157 正是因此使用了非关闭式引用。建议要么把 Fixes 改成普通提及,要么单独以"瞬时故障/无法复现"关闭 #11529。这不是代码层面的阻塞项——是需要人来定夺的记账问题。

进入代码审查 🔍

Qwen Code · qwen3.8-max-2026-09-02

Reviewed at 3641c00314dfb77171eb18c433e20b5643316bd6 · re-run with @qwen-code /triage

@qwen-code-ci-bot

qwen-code-ci-bot commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

Code review

I wrote my own answer before comparing it to the diff: record the measured size, touch nothing else, and check whether any other entry had drifted past the allowance the same way. That is what this PR does, in one line.

What I verified instead of assuming:

  • The number is right. 469259 is what qwen-autofix.yml actually measures — from the worktree at main (1097b9fe) and independently from the contents API at ad92d2bf8f, 21951941d7 and 1097b9fe. Not a rounding, not a stale copy.
  • The line still parses. Two whitespace-separated fields, decimal, no leading zeros — so neither the script's malformed-entry ::error nor the mirror's keeps every baseline entry in the format the gate parses case fires.
  • 469259 ≤ 470000, so keeps every baseline at or under the gate still passes. This one mattered: recording a value above the absolute gate would have traded a red ratchet for a red ceiling.
  • No side effects. No slack-arm trigger (that needs the file 20000 bytes under its record), no orphaned entry, and the entry stays in its alphabetical slot at line 40. Zero churn beyond the digits.

The load-bearing part, derived branch by branch from both enforcers: before this change size > base + allowance was true, so the shell gate and the vitest mirror only stayed green by falling through to file_matches_base / fileMatchesBase — they passed only on a lane that supplies a base SHA where the file happens to be byte-identical to it. After it, the comparison is false outright, so neither enforcer consults the base at all. That is the real fix: it removes the dependence on the #9904 leniency instead of leaning on it.

No blockers, no AGENTS.md violations. Nothing to cut.

Testing evidence — what this comment carries, plainly

I ran nothing. This is an unattended CI run, the skill forbids executing PR-derived code in that lane, and the agent env holds a write PAT. So the evidence here is (a) byte measurements taken directly from the files on main, (b) the branch-by-branch derivation above from both enforcers' source, and (c) the PR's own CI results quoted below. What is not here: the author's self-reported local runs. I have not re-run them and am not presenting them as evidence.

The honest limitation is the interesting one: this PR's own CI cannot distinguish before from after. On a pull_request lane the base is main's tip, and the PR does not touch qwen-autofix.yml — so the file is byte-identical to base and both enforcers took the #9904 leniency path and passed before this change too. A green suite on this PR is therefore not evidence the fix works. Same for the ad92d2bf8f push run the description predicts would hard-fail: that run concluded cancelled, superseded by the next push, so there is no observed red run to point at either — that prediction follows from the code, not from a failure anyone watched happen. Neither fact weakens the change, but it does mean the proof has to be static, and the static proof is complete.

One check genuinely distinguishes the two states: a strict run with no base SHA. bash .github/scripts/check-workflow-size.sh with no env overrides goes from ::error … grew to 469259 bytes, 6169 over its recorded 463090 / exit 1, to exit 0 with the clean "within 4096 bytes" banner. That is the author's step 2 and the real oracle for this diff — worth a maintainer running once locally if they want execution evidence rather than my derivation.

@qwen-code /verify and @qwen-code /tmux are not applicable: no runtime surface and no behavioural claim, so neither lane produces signal on a CI-metadata record.

CI on 3641c00314dfb77171eb18c433e20b5643316bd6

Fetched once via the API, no polling. 0 failures, 30 skipped (macOS/Windows lanes plus bot-orchestration jobs — normal for this profile).

The shell gate has already reported: Lint & Static (ubuntu-latest, Node 22.x) completed success, and inside it the Check workflow file size step (ci.yml:1046) is green. Read that with the caveat above — it corroborates "no regression", not "the fix works", since that step passes on this lane either way. Integration Tests (no-AK, No Sandbox) is also success. The vitest mirror is still in flight: Test (ubuntu-latest, Node 22.x) is running its Run tests and generate reports step under the full profile, which includes scripts/tests/workflow-size.test.js via test:citest:scripts. Its is within its baseline allowance case should take the early return (469259 ≤ 469259 + 4096) and never reach the leniency assertion. The finalize workflow updates the table below once CI settles.

Final CI results for 3641c00 (auto-updated by the triage finalize job after CI completed):

Check Conclusion
Test (ubuntu-latest, Node 22.x) ❌ failure
Classify PR ✅ success
Desktop Shell (ubuntu-22.04) ✅ success
Desktop Shell (windows-2022) ✅ success
Integration Tests (no-AK, No Sandbox) ✅ success
Lint & Static (ubuntu-latest, Node 22.x) ✅ success
web-shell E2E Smoke (ubuntu-latest, Node 22.x) ✅ success

One row per check name (latest run); skipped checks omitted; failures sort first. / 每个检查名一行(取最新一次运行),省略 skipped,失败项排在最前。

中文说明

代码审查

我在看 diff 之前先写下了自己的答案:记录实测大小,不动其他任何东西,并检查是否有其他条目也以同样方式漂出容差。这个 PR 做的正是这件事,用一行。

我核查而非假设的部分:

  • **数字是对的。**469259 就是 qwen-autofix.yml 的实测大小——既在 main1097b9fe)的工作树中测得,也通过 contents API 在 ad92d2bf8f21951941d71097b9fe 三个提交上独立确认。不是四舍五入,也不是过期副本。
  • **该行仍可被解析。**两个以空白分隔的字段、十进制、无前导零——因此脚本的格式错误 ::error 分支与镜像的 keeps every baseline entry in the format the gate parses 用例都不会触发。
  • 469259 ≤ 470000,所以 keeps every baseline at or under the gate 依然通过。这一条很关键:如果记录值超过绝对门禁,就等于把一个红色棘轮换成一个红色天花板。
  • 无副作用。不触发冗余回收分支(那需要文件比记录值少 20000 字节),无孤立条目,条目仍在第 40 行的字母序位置。除数字本身外零抖动。

真正的关键部分,是我对两个执行器逐分支推导的结果:改动前 size > base + allowance,因此 shell 门禁与 vitest 镜像只是靠落入 file_matches_base / fileMatchesBase 才保持绿色——它们在"提供了 base SHA 且该文件与 base 逐字节相同"的通道上通过。改动后该比较直接为,两个执行器都不再查询 base。这才是真正的修复:它移除了对 #9904 宽限逻辑的依赖,而不是继续依赖它。

无阻塞项,无 AGENTS.md 违规,没有可删减的内容。

测试证据——本条评论明确携带的是什么

我没有运行任何东西。这是无人值守的 CI 运行,该通道下 skill 禁止执行 PR 派生代码,且 agent 环境持有写入 PAT。所以这里的证据是:(a) 直接从 main 上文件中测得的字节数;(b) 上文对两个执行器源码的逐分支推导;(c) 下方引用的本 PR 自身 CI 结果。这里没有的是:作者自述的本地运行结果——我没有重跑,也不把它当作证据呈现。

诚实的局限恰恰是有意思的那一点:本 PR 自己的 CI 无法区分改动前后。在 pull_request 通道上 base 是 main 的最新提交,而本 PR 并未改动 qwen-autofix.yml——因此该文件与 base 逐字节相同,两个执行器在改动之前也已走 #9904 宽限路径并通过。所以本 PR 上的绿色套件并不能证明修复有效。描述中预测会硬失败的 ad92d2bf8f push 运行同理:那次运行结论为 cancelled(被下一次 push 取代),因此也没有可指认的红色运行记录——那个预测来自代码推导,而不是任何人亲眼看到的失败。这两点都不削弱本改动,但确实意味着证明必须是静态的,而静态证明是完整的。

真正能区分两种状态的检查只有一项:不带 base SHA 的严格运行。bash .github/scripts/check-workflow-size.sh(不设任何环境覆盖)会从 ::error … grew to 469259 bytes, 6169 over its recorded 463090 / 退出码 1,变为退出码 0 并输出"within 4096 bytes"的干净提示。这就是作者的验证步骤 2,也是本 diff 的真正判据——如果维护者希望拿到执行层面的证据而非我的推导,本地跑一次即可。

@qwen-code /verify@qwen-code /tmux 在此不适用:没有运行时表面,也没有行为性主张,两个通道对一份 CI 元数据记录都产生不了信号。

3641c00314dfb77171eb18c433e20b5643316bd6 上的 CI

通过 API 一次性拉取,未轮询。0 个失败,30 项跳过(macOS/Windows 通道以及机器人编排 job——该 profile 下属正常)。

shell 门禁已经出结果:Lint & Static (ubuntu-latest, Node 22.x) 结论 success,其中 Check workflow file size 步骤(ci.yml:1046)为绿。请结合上文的局限来读——它证明的是"无回归",而不是"修复有效",因为该步骤在本通道上改动前后都会通过。Integration Tests (no-AK, No Sandbox) 同样 success。vitest 镜像仍在运行:Test (ubuntu-latest, Node 22.x) 正在 full profile 下执行 Run tests and generate reports,其中通过 test:citest:scripts 包含 scripts/tests/workflow-size.test.js。它的 is within its baseline allowance 用例应当走提前返回(469259 ≤ 469259 + 4096),根本不会到达宽限断言。CI 结束后 finalize 工作流会就地更新下表。

Qwen Code · qwen3.8-max-2026-09-02

Reviewed at 3641c00314dfb77171eb18c433e20b5643316bd6 · re-run with @qwen-code /triage

@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Confidence: 4/5 — every number here checks out four independent ways; the one reservation is bookkeeping, not code.

Stepping back: my own answer to "the ratchet's record on main is 6169 bytes stale" was the same single line, and there is no smaller version of it. You don't fix a record that lies by editing anything other than the record. The alternative — moving prose out of qwen-autofix.yml to reclaim headroom — is real work, would end up lowering this same number afterwards anyway, and is correctly left out of scope.

What convinced me is not the description but that the claim is fully checkable, so I checked it. 469259 measured from the file on main and independently from three commits through the contents API. The drift path 463090 → 465612 → 469259 confirmed commit by commit, each step inside the 4096-byte allowance against its own base, which is exactly how two compliant PRs add up to a non-compliant main. All 55 workflow files compared against all 55 recorded entries, with qwen-autofix.yml the only one over — so nothing else needs bumping and this really is the whole fix. And the new value still sits under the 470000-byte ceiling, so keeps every baseline at or under the gate stays green; had it landed the other side of that, this PR would have traded a red ratchet for a red ceiling. #11157 shipped the identical shape for release.yml four days ago.

The part worth saying plainly: the fix's real content is that both enforcers stop depending on the #9904 leniency. Before it, size > base + allowance was true and the only reason anything stayed green was the byte-identical-to-base escape hatch. After it, the comparison is false outright and no base SHA is consulted at all. That is also why this PR's own CI proves less than it looks — Check workflow file size is green and would have been green before the change too. I'm comfortable approving on a static derivation, because the derivation is arithmetic over numbers I measured myself rather than a reading of someone's log. But I'd rather say that out loud than let a green table imply a proof it doesn't contain.

One thing for a human at merge time. Fixes #11529 will auto-close a main-CI tracker for a run this diff provably did not affect: that run failed in the Test job's Run tests and generate reports step, while the size gate lives in Lint & Static and passed, and the push-event base made the file byte-identical so the leniency applied. The PR says so itself, which is to its credit. Either drop the closing keyword for a plain mention — what #11157 did — or close #11529 separately as transient/not-reproduced. Not a code blocker and no reason to hold the one-line fix, but an unexplained main-branch failure shouldn't get marked resolved as a side effect of it.

Approval is deferred until CI lands green on 3641c00314dfb77171eb18c433e20b5643316bd6Test (ubuntu-latest, Node 22.x), which holds the vitest mirror, is still running, and approving now would attest to a result that does not exist yet.

中文说明

信心度:4/5 —— 这里的每个数字都通过了四种独立核查;唯一的保留意见属于记账问题,不是代码问题。

退一步看:对于"main 上棘轮的记录值过期了 6169 字节"这个问题,我自己的答案也是同样的一行,而且不存在更小的版本。要修正一个说谎的记录值,除了改这个记录值本身别无他法。另一条路——把 qwen-autofix.yml 的散文迁出去以夺回余量——是一项真正的工作量,而且事后仍要把这个数字调低,因此把它排除在范围外是正确的。

说服我的不是描述,而是这个主张完全可核查,所以我核了。469259 既在 main 的文件上实测得到,也通过 contents API 在三个提交上独立确认。漂移路径 463090 → 465612 → 469259 逐提交确认,每一步相对各自的 base 都在 4096 字节容差之内——这正是两个各自合规的 PR 如何累加出一个不合规的 main。全部 55 个工作流文件与全部 55 条记录逐一对比,只有 qwen-autofix.yml 越界——因此没有别处需要更新,这一行确实就是完整的修复。而新记录值仍在 470000 字节天花板之下,所以 keeps every baseline at or under the gate 保持绿色;如果落在另一侧,这个 PR 就等于把一个红色棘轮换成了一个红色天花板。四天前 #11157release.yml 落地了完全相同的形态。

需要说清楚的一点:这个修复的实质在于两个执行器都不再依赖 #9904 的宽限逻辑。改动前 size > base + allowance 为真,一切之所以还能保持绿色,唯一的理由就是"与 base 逐字节相同"这个逃生口;改动后该比较直接为假,根本不再查询任何 base SHA。这也正是为什么本 PR 自己的 CI 所证明的比看上去要少——Check workflow file size 是绿的,而在改动之前它同样会是绿的。我可以接受基于静态推导给出批准,因为这个推导是建立在我自己实测数字之上的算术,而不是对某份日志的解读。但我宁愿把这点讲明,也不愿让一张绿色表格暗示出它并不包含的证明。

合并时需要人来定夺的一点。Fixes #11529 会自动关闭一个 main CI 追踪 issue,而本 diff 可证明地并未影响那次运行:那次运行失败在 Test job 的 Run tests and generate reports 步骤,而体积门禁位于 Lint & Static 且通过了;同时 push 事件的 base 使该文件与 base 逐字节相同,因此宽限逻辑生效。PR 自己也这么写了,这点值得肯定。建议要么把关闭关键字改成普通提及(#11157 就是这么做的),要么单独以"瞬时故障/无法复现"关闭 #11529。这不是代码阻塞项,也不是扣住这一行修复的理由,但一次尚未解释清楚的 main 分支失败,不应该作为它的副作用被标记为已解决。

批准将推迟至 CI 在 3641c00314dfb77171eb18c433e20b5643316bd6 上全绿——承载 vitest 镜像的 Test (ubuntu-latest, Node 22.x) 仍在运行,此时批准等于为一个尚不存在的结果背书。

Qwen Code · qwen3.8-max-2026-09-02

Reviewed at 3641c00314dfb77171eb18c433e20b5643316bd6 · re-run with @qwen-code /triage

@doudouOUC doudouOUC left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed at 3641c00314dfb77171eb18c433e20b5643316bd6.

The one-line diff is correct and I verified it independently, not from the description. But I am not approving, because the Fixes #11529 linkage rests on a premise I was able to disprove: the run's logs are retrievable, they name the failing tests, and the failure is deterministic, still live on main, and reproduced by this PR's own Test job.

The diff itself — verified ✅

  • qwen-autofix.yml is 469259 bytes at this HEAD and on today's main (b3d022b357) — same blob, c430d1cd19ce84026be264d1637a86704607eb05 — so the recorded number is the measured number on both sides.
  • Ran the ratchet's own arithmetic with the constants parsed out of check-workflow-size.sh (GATE=470000 WARN=445000 ALLOW=4096 SLACK=20000), strict mode / no base SHA, over all 55 workflow files:
    • on main: exit 1qwen-autofix.yml grew to 469259, 6169 over recorded 463090 (allowance 4096)
    • at this HEAD: exit 0, only the pre-existing 91% of GitHub's limit warning
  • Completeness: 55 entries ↔ 55 files, no orphaned entry, no missing entry, nothing over the 470000 gate, nothing tripping the 20000-byte slack-reclaim arm. One line really is the whole fix.
  • CI corroborates it on this PR: the only annotation Lint & Static emits is the approaching-gate warning at 469259 — the growth error is gone.
  • No stale 463090 anywhere else in the tree, and the convention is honoured — the baseline header says "bump the number and say why in the PR", which is where the explanation belongs. #11157 is the same one-liner for release.yml.
  • Drift history checks out exactly: 463090 recorded at 21e1133514 (#11124), 465612 at ecae037176 (#9940, +2522), 469259 at ad92d2bf8f (#11516, +3647). Two in-allowance steps summing past the allowance.

The 741-byte headroom note is accurate and worth keeping in the commit message.

Critical — Fixes #11529 closes a live main-CI break this PR does not touch

The description says the job logs are "admin-gated, so no test name survived to confirm either way", and on that basis attributes run 34441350822 to the transient shared-pool class (#10490, #10035). Both halves are wrong:

1. The logs are readable. gh run view 34441350822 --repo QwenLM/qwen-code --log-failed returns 4 MB and names everything:

Test Files  2 failed | 298 passed (300)
     Tests  8 failed | 7105 passed (7113)

FAIL  components/WorkspaceSessionProvider.loading.test.tsx > loads once and survives a refresh failure (StrictMode=false|true, initialFailure='none'|'http'|'network')
AssertionError: expected [ 'GET /capabilities', 'GET /brand' ] to deeply equal [ 'GET /capabilities' ]
  ❯ components/WorkspaceSessionProvider.loading.test.tsx:199:21

FAIL  components/sidebar/WebShellSidebar.brand.test.tsx > sidebar brand > treats an empty name as unset rather than blanking the brand row
FAIL  components/sidebar/WebShellSidebar.brand.test.tsx > sidebar brand > names the version tooltip after the brand
AssertionError: expected null not to be null
  ❯ components/sidebar/WebShellSidebar.brand.test.tsx:204:11
  ❯ components/sidebar/WebShellSidebar.brand.test.tsx:212:11

2. It is not transient. VITEST_RETRY: 2 gives three attempts; the log marks every one of the 8 as (retry x2) and all three attempts failed. The same 8 assertions in the same 2 files recur on every main push run since — including the newest completed one, 34447493274 at 1097b9fe0a (07:32Z today). First bad commit is 13b69b3313 (#11244, make the product name and logo configurable): its own push run 34439027258 already failed the identical 8.

3. The ratchet provably was not the trigger. The shell gate lives in lint_and_static, and Lint & Static concluded success on run 34441350822 itself. The vitest mirror could not have fired either — the step runs npm run test:scripts only if [ "$RC" -eq 0 ] after test:ci:workspaces, which returned non-zero, so workflow-size appears zero times in that run's failed log.

4. This PR's own Test job reproduces #11529. Job 102778766005 at this HEAD: Test Files 2 failed | 298 passed (300), Tests 8 failed, the same 8 names. That check is currently red for this reason, not for anything in the diff.

So the underlying defect is a web-shell semantic conflict of exactly the shape this PR is about, one lane over: #11413 wrote expect(calls).toEqual(['GET /capabilities']), then #11244 added the GET /brand fetch to DaemonWorkspaceProvider — each green against its own base, red once stacked. Merging with the closing keyword would auto-close the only tracker that break has, along with its status/ready-for-agent routing, while the 8 tests keep failing.

What I'd like changed: drop Fixes #11529 to a plain reference — the way #11157 did for the same drift pattern — and leave #11529 open for the web-shell fix. Alternatively keep the keyword only if a separate issue/PR is opened for the 8 failing tests first and linked here. No change to the diff; I'll approve as soon as the linkage is settled.

中文说明

3641c00314dfb77171eb18c433e20b5643316bd6 上审查。

这一行改动本身是正确的,我独立核验过,而不是采信描述。 但我暂不批准,因为 Fixes #11529 依赖的前提被我推翻了:那次运行的日志可以取到,日志里点名了失败的测试,而且该失败是确定性的、在 main 上仍然存在,并且被本 PR 自己的 Test 任务复现了。

改动本身 —— 已核验 ✅

  • qwen-autofix.yml 在本 HEAD 与今天的 mainb3d022b357)上都是 469259 字节,blob 相同(c430d1cd19),因此记录值就是实测值。
  • 我用从 check-workflow-size.sh 解析出的常量(GATE=470000 WARN=445000 ALLOW=4096 SLACK=20000)在严格模式(无 base SHA)下对全部 55 个工作流文件跑了棘轮算术:
    • main 上:exit 1 —— qwen-autofix.yml grew to 469259, 6169 over recorded 463090 (allowance 4096)
    • 在本 HEAD 上:exit 0,只剩本已存在的 91% of GitHub's limit 警告
  • 完整性:55 条记录 ↔ 55 个文件,无孤立条目、无缺失条目,无文件越过 470000 门禁,也没有触发 20000 字节的冗余回收分支。这一行确实就是全部修复。
  • CI 也印证了:本 PR 的 Lint & Static 唯一注解就是 469259 的接近门禁警告,增长报错已消失。
  • 仓库中不存在其他残留的 463090;约定也遵守了 —— 基线头注释写的是"更新数字并在 PR 里说明原因",说明就该在 PR 里。#11157release.yml 上同款一行改动。
  • 漂移历史完全吻合:21e1133514#11124)记录 463090ecae037176#9940)465612(+2522),ad92d2bf8f#11516)469259(+3647)。两步各自在容差内,累加越界。

741 字节余量那条提醒是准确的,值得保留在提交信息里。

Critical —— Fixes #11529 会关闭一个本 PR 并未触及的、仍在发生的 main CI 故障

描述称任务日志"需要管理员权限,无法提取测试名",并据此把运行 34441350822 归因为瞬时共享池故障(#10490#10035)。两半都不成立:

1. 日志能读。 gh run view 34441350822 --repo QwenLM/qwen-code --log-failed 返回 4 MB,把一切都点名了:Test Files 2 failed | 298 passed (300)Tests 8 failed | 7105 passed (7113),失败在 WorkspaceSessionProvider.loading.test.tsx:199expected [ 'GET /capabilities', 'GET /brand' ] to deeply equal [ 'GET /capabilities' ])与 WebShellSidebar.brand.test.tsx:204:212expected null not to be null)。

2. 不是瞬时故障。 VITEST_RETRY: 2 意味着三次尝试;日志把这 8 个全部标为 (retry x2),三次尝试全败。之后每一次 main push 运行都在同样 2 个文件的同样 8 条断言上失败,包括最新完成的 34447493274(今天 07:32Z,1097b9fe0a)。首个坏提交是 13b69b3313#11244make the product name and logo configurable):它自己的 push 运行 34439027258 就已经失败在同样这 8 条上。

3. 棘轮可以被证明不是触发原因。 shell 门禁位于 lint_and_static,而 Lint & Static 在运行 34441350822 上的结论就是 success。vitest 镜像也不可能触发 —— 该步骤只在 test:ci:workspaces 返回 0 时才执行 npm run test:scripts,而它返回了非零,所以那次运行的失败日志里 workflow-size 出现 0 次。

4. 本 PR 自己的 Test 任务复现了 #11529 本 HEAD 的任务 102778766005Test Files 2 failed | 298 passed (300)Tests 8 failed,测试名完全一致。这个检查目前是红的,原因不在本 diff。

也就是说,真正的缺陷是一个 web-shell 语义冲突,形态与本 PR 处理的问题一模一样,只是发生在另一条通道:#11413 写下 expect(calls).toEqual(['GET /capabilities']),随后 #11244DaemonWorkspaceProvider 加上了 GET /brand 请求 —— 各自相对自己的 base 都是绿的,叠加后变红。带着关闭关键字合并,会连同 status/ready-for-agent 路由一起自动关闭这个故障唯一的追踪 issue,而那 8 条测试仍在失败。

希望调整的地方:Fixes #11529 降级为普通引用 —— 就像 #11157 对同款漂移所做的那样 —— 让 #11529 保持打开以承载 web-shell 的修复。或者,先为这 8 条失败测试单独开 issue/PR 并在此关联,再保留关闭关键字。diff 无需改动;关联关系定下来我就批准。

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator Author

🕐 Review received — an automatic review of the current head is still running, so this round is held until it lands (a push now would cancel it and discard its work, #8888). Your feedback stays queued for the next eligible round.

中文说明

🕐 已收到评审 —— 当前 head 上仍有一轮自动 review 在运行,本轮暂缓(现在推送会取消该 review 并丢弃其工作,#8888)。反馈保持排队,等待下一次可运行的轮次处理。

@yiliang114 yiliang114 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One-line bookkeeping PR, so I checked the number rather than the prose. No blocking finding. Approving.

Verified

  • The diff is exactly one line and nothing else. -463090 qwen-autofix.yml+469259 qwen-autofix.yml in .github/workflows/.size-baseline. No other entry touched, no workflow file touched — git diff --name-only for the whole PR returns that one path.
  • The recorded value is the real measured size. git cat-file -s on the qwen-autofix.yml blob gives 469259 at the base 1097b9fe, at this head, and at origin/main — all three identical, and the delta against the new record is exactly 0. Not a rounding, not a stale copy.
  • The gate arithmetic is right. GROWTH_ALLOWANCE=4096 (check-workflow-size.sh:28), so the old record put the file 6169 over and took the hard-error branch at :129 on any run without a base SHA. GATE_BYTES=470000 (:16) and 469259 is under it by exactly the 741 bytes the body claims; WARN_BYTES is 445000, so the approaching-gate warning at :105 still fires — matching the body's "plus the pre-existing approaching-gate warning".
  • The drift story is internally consistent. 463090 +2522 (#9940) = 465612, +3647 (#11516) = 469259. Both steps individually inside the 4096 allowance, the sum 6169 past it — exactly the two-in-allowance-PRs pattern the baseline header comment exists to catch, and the remedy the gate's own error text prescribes ("if the growth is real, update .size-baseline in this PR and say why"). Same shape as #11157 did for release.yml.
  • No other entry is over the allowance, so this actually turns the lane green. I swept all 54 recorded entries against their real blob sizes at this head: zero over 4096, zero past the 470000 gate, zero missing files. So after this line the ratchet passes repo-wide, not just for qwen-autofix.yml — which is the thing worth knowing before merging a one-entry fix.

Non-blocking: ten other entries are drifting the same way

The sweep also shows the accumulation pattern is not unique to this file. Ten entries are silently over their records and inside the allowance today, closest to breaking first:

file recorded actual over by bytes until it fails
serve-ab.yml 17013 19896 +2883 1213
live-host-release.yml 16647 19441 +2794 1302
qwen-triage.yml 350381 352851 +2470 1626
security-checks.yml 3197 5519 +2322 1774
main-ci-failure-issue.yml 7642 9948 +2306 1790
ci.yml 134426 136712 +2286 1810
desktop-release.yml 31677 33458 +1781 2315
sdk-java.yml 10691 11973 +1282 2814
cd-cua-driver.yml 49610 50814 +1204 2892
qwen-autofix-fork-signal.yml 5942 7089 +1147 2949

Each is one more in-allowance PR away from producing this exact red wall. Definitely not this PR's job — it correctly fixes the one record that already lies — but a follow-up that re-records all of them (or a scheduled job that flags drift before it compounds) would stop the pattern recurring. Worth an issue.

CI: the red Test (ubuntu-latest) is not this PR's

I attributed it rather than assuming. 8 failures across 2 files, all in packages/web-shell: components/WorkspaceSessionProvider.loading.test.tsx (6, every StrictMode × initialFailure permutation) and the sidebar brand suite (2). The assertions are expected [ 'GET /capabilities', 'GET /brand' ] to deeply equal [ 'GET /capabilities' ] and expected null not to be null — i.e. the /brand endpoint and the compact-footer tooltip from main's configurable-branding work (#11244) landing without the matching fixtures.

This PR changes only .size-baseline, which no web-shell test reads, and the fix for precisely those two files already exists as #11524's 14a66491 ("align fixtures with branding and compact footer"): it adds the /brand branch to the fetch mock and filters it out of the expected calls, and sets qwen-code-web-shell-sidebar-width to 360 so the version tooltip renders. That commit is not in this PR's base, so this is pre-existing main red surfacing on an unrelated one-line PR — not a reason to hold it. Every other suite in the job passed (20, 13, 12, 17, 7, 6, 6, 5, 2, 2, 1, 1 files), including the scripts/tests runs that contain workflow-size.test.js — the mirror that would actually catch a wrong number here is green. Main has no required status checks, so the lane does not gate the merge either way.

On the headroom note the body raises: agreed, and the script is explicit that the ceiling must not move (:102, "do not raise the gate"), so the next real growth in qwen-autofix.yml has to shed prose into qwen-autofix.md. Recording that constraint in the commit message, as this does, is the right place for it.

中文说明

一行的记账 PR,所以我核的是数字而不是叙述。没有阻塞项。 批准。

已核实

  • diff 恰好一行,别无其他。 .github/workflows/.size-baseline-463090 qwen-autofix.yml+469259 qwen-autofix.yml。没有动其它条目,也没有动任何 workflow 文件——整个 PR 的 git diff --name-only 只返回这一个路径。
  • 记录值就是真实实测大小。qwen-autofix.yml 的 blob 做 git cat-file -s,在 base 1097b9fe、本 head 与 origin/main 上都是 469259,三者一致,且与新记录值的差恰为 0。不是取整,也不是陈旧副本。
  • 门禁算术正确。 GROWTH_ALLOWANCE=4096check-workflow-size.sh:28),所以旧记录让该文件超出 6169,在任何没有 base SHA 的运行里走 :129 的硬错误分支。GATE_BYTES=470000:16),469259 正好低于它 741 字节,与正文所说一致;WARN_BYTES 是 445000,所以 :105 的「接近门禁」警告仍会触发——对应正文那句「加上既有的接近门禁警告」。
  • 漂移叙述自洽。 463090 +2522(#9940)= 465612,+3647(#11516)= 469259。两步各自都在 4096 额度内,合计 6169 越过它——正是基线文件头注释要抓的「两个都在额度内的 PR」形态,也是门禁自身错误文本所开的处方(「若增长属实,在本 PR 里更新 .size-baseline 并说明原因」)。与 #11157release.yml 的处理同形。
  • 没有其它条目超额,所以这一行确实能让该 lane 转绿。 我把全部 54 个记录条目与本 head 上的真实 blob 大小对了一遍:0 个超过 4096、0 个越过 470000 门禁、0 个文件缺失。所以这一行之后棘轮在全仓通过,而不只是 qwen-autofix.yml——在合并一个只改一条记录的修复之前,这一点值得知道。

非阻塞:另有十个条目在同样漂移

这次扫描也说明该累积形态并非此文件独有。十个条目今天静默超出其记录值但仍在额度内,最接近先炸的是:serve-ab.yml +2883(还差 1213 字节就失败)、live-host-release.yml +2794(1302)、qwen-triage.yml +2470(1626)、security-checks.yml +2322(1774)、main-ci-failure-issue.yml +2306(1790)、ci.yml +2286(1810)、desktop-release.yml +1781(2315)、sdk-java.yml +1282(2814)、cd-cua-driver.yml +1204(2892)、qwen-autofix-fork-signal.yml +1147(2949)。

每一个都只差再来一个「额度内」的 PR 就会造出完全相同的红墙。这肯定不是本 PR 的活——它正确地只修了那条已经在撒谎的记录——但后续把全部条目重新记录一遍(或用定时任务在漂移复合之前报警)能阻止该形态重演。值得开个 issue。

CI:红掉的 Test (ubuntu-latest) 不属于本 PR

我是做了归属而不是假定。8 条失败分布在 2 个文件,全在 packages/web-shellcomponents/WorkspaceSessionProvider.loading.test.tsx(6 条,StrictMode × initialFailure 的全部组合)与 sidebar brand 套件(2 条)。断言是 expected [ 'GET /capabilities', 'GET /brand' ] to deeply equal [ 'GET /capabilities' ]expected null not to be null——即 main 的可配置品牌改动(#11244)带来了 /brand 端点与紧凑页脚的 tooltip,却没带上配套 fixture。

本 PR 只改 .size-baseline,没有任何 web-shell 测试读它;而恰好修这两个文件的补丁已经存在,就是 #1152414a66491(「align fixtures with branding and compact footer」):它给 fetch mock 加了 /brand 分支并在期望调用里过滤掉它,还把 qwen-code-web-shell-sidebar-width 设为 360 让版本 tooltip 渲染出来。那个提交不在本 PR 的 base 里,所以这是 main 上既有的红在一个无关的一行 PR 上显形——不是压住它的理由。该 job 里其余所有套件都通过(20、13、12、17、7、6、6、5、2、2、1、1 个文件),其中包含 workflow-size.test.jsscripts/tests 运行也是绿的——真正会抓到「数字写错」的镜像测试通过了。main 没有任何必需状态检查,所以这条 lane 本来也不影响合并。

关于正文提的余量提醒:同意,而且脚本写得很明确——上限不能动(:102,「do not raise the gate」),所以 qwen-autofix.yml 下一次真实增长必须把散文挪进 qwen-autofix.md。像本 PR 这样把这个约束记进提交信息,是它该在的地方。

@wenshao
wenshao added this pull request to the merge queue Sep 10, 2026
Merged via the queue into main with commit b745927 Sep 10, 2026
79 of 81 checks passed
@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Released in v0.23.3.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review/self-reported The linked issue was opened by the PR author (self-reported)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Main CI failed: Qwen Code CI on 21951941d726

5 participants