Repository navigation
ci: refresh two stale workflow size baselines (ci.yml, review-runner-schedule) - #11921
Conversation
Follow-up to #11855, from its sandboxed verification report. The never-started branch fires on `runner_name` empty AND `steps` empty, which is a shape, not a cause. Verification sampled eight recently cancelled qwen-code-pr-review.yml runs and found three with exactly that shape, cancelled after 9.7, 36.4 and 33.7 minutes — so the body's claim that GitHub ended the job "at the 24-hour queue limit" was false by a factor of 40-150x. All three were cancellations caused by the PR closing, and the step's `pr_state != OPEN` gate runs before body selection, so none of them posted; the residual reachable case is an operator cancelling a review still queued, or a command-triggered run cancelled while it waited, both on an OPEN PR where the head-drift exit does not apply either. That reader is told a duration that did not elapse and is sent to qwen-review-runner-schedule.yml for something the schedule did not do. The first sentence now states only the observation, and cancellation joins the candidate list the body already disclaims with. Under the steady-state schedule a queued review waits at most 12 h and then runs, so a genuine cap expiry means the schedule itself is broken — the claim was true only in the failure mode it was written for. The five tests added in #11855 pin WHETHER the branch fires; none pinned WHICH cause it claims. The queue-expiry case now asserts the body names no duration and does offer cancellation, for both `failure` and `cancelled` results. Restoring "at the 24-hour queue limit" turns it red. Also records two .size-baseline numbers that were wrong on main: qwen-review-runner-schedule.yml 1958 -> 2518 (the ratchet's own entry, drifted inside #11855 when the main-fence comment landed without re-recording; the file could have grown 140% before the gate objected) and ci.yml 134426 -> 137297 (main-side and pre-existing, but it left only 1225 bytes of headroom, so the next PR touching ci.yml would be told to account for 2871 bytes of growth it did not cause — the red-wall class check-workflow-size.sh exists to prevent). qwen-code-pr-review.yml is re-recorded for this change. Co-authored-by: Qwen-Coder <[email protected]>
main's #11912 landed its own cause-neutral rewrite of the never-started fallback body while this branch was rewriting the same line, so the two wordings collided. Kept this branch's body — it names the pool states and the schedule run that tells them apart — and aligned its "cannot see why" to main's landed "cannot determine the cause", which main's test asserts. Both sides' assertions now hold on one body. .size-baseline records the merged file's real byte size. Co-authored-by: Qwen-Coder <[email protected]>
main's #11912 (809aaa5) landed the same cause-neutral rewrite of the never_started fallback body 23 seconds before this PR was opened, so the wording edit and its extra assertion are redundant churn now. Both files are back to main's bytes; what remains is the part that is still true and still unlanded — two baseline entries whose recorded sizes drifted on main. ci.yml recorded 134426 against 137297 real bytes: 2871 of the 4096 growth allowance already spent, 1225 left before an unrelated PR trips the ratchet on a file it never touched. qwen-review-runner-schedule.yml recorded 1958 against 2518, leaving 3536. Both re-measured with wc -c against this merged tree rather than carried over from the earlier draft. qwen-code-pr-review.yml is left at main's 265415 (real 265273, 142 under, inside SLACK_BYTES) since nothing in this PR changes that file any more. check-workflow-size.sh rc=0; workflow-size.test.js 214 passed. Co-authored-by: Qwen-Coder <[email protected]>
|
Reduced to the suggested shape at
Two corrections to the review, neither of which changes the outcome:
On CI: One follow-up worth flagging, explicitly not for this PR: 中文已按建议形态瘦身到 两处更正,都不影响结论:
CI 方面:本 head 上 另提一个明确不属于本 PR 的后续: |
|
@qwen-code /triage |
|
Implemented in 9326ab8. The PR now changes three files: two baseline entries plus the provider and its existing tests. All 77 targeted tests, ESLint, Prettier, and repository typecheck pass; updated-head CI is pending. The size gate requires Bash 4 unavailable locally; byte counts were checked directly. Scope expansion was explicitly requested by the maintainer; merge-queue and runner/PAT work remains deferred. |
|
CI attribution for the red The failure is a single test file,
This PR cannot reach that file. Its whole diff is two integers in
Suggested handling: re-run once
失败只有一个测试文件
本 PR 碰不到那个文件。它的全部 diff 是 建议处理:等 |
Co-authored-by: Qwen-Coder <[email protected]>
|
CI attribution on head This PR's diff against main is two integers in What actually failed — run 34944785050, job The 13 assertions diff against bundled/extension Skills the provider now enumerates ( Timeline:
Corroboration: PRs whose heads predate the 07:30Z merge are green on the same job — e.g. #11821 at Not fixing it here. The repair belongs in #11933; patching Separately, on the |
qqqys
left a comment
There was a problem hiding this comment.
APPROVE
核对基线:head 9326ab86d48bf4aaf81470b6ef2baaaf75537b52(3 个文件,+70/-32,最后提交 08:49:49Z)。
历史阻塞问题:已按该 review 的要求逐条落实
本 PR 只有一条 review:qwen-code-ci-bot 于 2026-09-15T07:45:17Z 针对旧 head 17cc319e 的 CHANGES_REQUESTED,0 条 inline thread。它要求四件事,我在当前 head 上逐条核对:
- 「去掉 workflow 文案改动与那条互斥断言」—— 已落实。 当前 diff 完全不包含
qwen-code-pr-review.yml,只有.size-baseline、workspace-skills-status.ts与其测试三个文件。该 review 指出的与main(#11912809aaa5e0eb3)冲突的那一行改写、以及与其toContain('cannot determine the cause')互斥的toContain('cancelled while the job was still waiting'),都已不在本 PR 内,冲突源随之消失。 - 「只保留那两个修正后的整数」—— 已落实,且数字与它独立核对的结果逐位相同。
.size-baseline只改两条:ci.yml134426 → 137297、qwen-review-runner-schedule.yml1958 → 2518。这正是该 review 对着origin/main真实字节验证过的两个值(它同时给出漂移量 2871 B / 560 B 与剩余余量)。 - 「不要动
qwen-code-pr-review.yml的 baseline 条目」—— 已落实。 该条目未被触碰,因此不会像它警告的那样囤下 163 B 未经审查的余量;qwen-autofix.yml那个不准确的 467572 也没有进入本 PR。 - 「rebase 到 main」—— 冲突文件已退出 diff,base 为
main。
它当时还指出「这个 head 上完全没有 pull_request 事件的 CI 运行」;当前 head 已有 pull_request 侧的 Integration Tests (no-AK, No Sandbox) pass,其余仍在跑。
本轮独立扫描:未发现 Critical
.size-baseline 之外唯一的生产改动是 packages/cli/src/serve/workspace-skills-status.ts(+5/-1)。它要修的问题是「provider 用限定名去查一张按原始名做键的表」,因此关键在于两侧命名是否真的对上了。我核对了建表与查表两端:
- 建表端确实以 authored name 为键。
:153-191构造extensionSkillStates: Map<Extension, Map<string, boolean>>时,内层键是const name = skill.name.trim().toLowerCase(),其中skill来自extension.skills(扩展清单里的原始条目);同一份name同时用于清单默认值查询extension.config.skillStates[name]与持久化覆盖查询extensionStore.getSkillWorkspaceOverride(snapshot, extension.id, workspaceCwd, name)。也就是说这张表从建立起就是 authored-name 键。 - 查表端改为用 authored name,方向正确。
:236-239由?.get(skill.name.trim().toLowerCase())改成?.get(authoredSkillName(skill).trim().toLowerCase())。此处的skill是目录条目,其name是限定名,因此改动前必然查不到、enabled为undefined——这正是「默认禁用的技能显示为启用」的成因;改动后键与表一致。 - 发布出去的条目同时带上两种名字,使往返自洽。
:262-266在mapSkillConfigToStatus的入参上补了name: qualifySkillName(extension.name, skill.name)与authoredName: skill.name,即对外暴露限定名、同时保留原始名。下一次读取时authoredSkillName(skill)就能取回原始名,不会像「只存限定名」那样丢失反查能力,也不会出现二次限定。 - 用的是既有 helper,不是本 PR 新造的 API。
authoredSkillName与qualifySkillName定义在packages/core/src/skills/types.ts、经packages/core/src/skills/index.ts导出,自带types.test.ts,并且packages/cli/src/acp-integration/extension-skills.ts已在使用。因此 ACP 目录与 daemon-local 工作区目录现在共用同一套命名规则,这与 PR 声称的「keeps both paths consistent」相符。 - 信任与 safe-mode 前置条件未被改动。
:154的if (workspaceTrusted && !safeMode)仍是建表的唯一入口,safeMode仍由(!workspaceTrusted && !includeUntrustedSkills) || isSafeModeEnv()决定;本次改动只发生在表已建好之后的读取与发布环节,没有放宽任何信任边界。
CI:当前 head 上 Integration Tests (no-AK, No Sandbox) pass;Lint & Static、Test (ubuntu-latest, Node 22.x)、Serve A/B 仍 pending,无失败项。按本渠道策略 pending 不单独作为卡点,我没有等待或轮询,上面结论全部来自代码核对;合入前请以这三项转绿为准,尤其 Test (ubuntu-latest)——它承载 workspace-skills-status.test.ts(+63/-29)与 PR 所述那 13 条原先失败的目录用例。
结论:历史阻塞问题已按其要求逐条落实,本轮未发现可证明的 Critical,提交 APPROVE。
main's #11933 (faded7f) landed the identical workspace skill identity fix: packages/cli/src/serve/workspace-skills-status.ts merges to the same blob on both sides, and main's workspace-skills-status.test.ts is a superset of this branch's version (this branch deleted main's `scopes grants to the owning extension` cases). Both files are therefore taken from origin/main, which leaves the two corrected .size-baseline integers as the whole diff. Co-authored-by: Qwen-Coder <[email protected]>
|
解冲突结果:范围收敛成纯 baseline PR,请重新看一眼(你的 approve 被这次 push dismiss 了)。 冲突来源:main 的 #11933(
所以两个文件都取 正是 @qwen-code-ci-bot 上一轮要求的形态("keep just the two corrected integers … would deserve an approve on sight")。两个数字都对着 main 的真实字节重新量过: 验证(merged head 标题与正文已同步改成 baseline-only 的范围。 |
qqqys
left a comment
There was a problem hiding this comment.
APPROVE
核对基线:head fc56964953ccdb85780c2bb35622ba4162f0ee41(1 个文件,+2/-2,最后提交 09:22:23Z)。
说明:我在旧 head 9326ab86 上的那次 APPROVE 已因 head 变更被 DISMISSED,本条是针对当前 head 重新独立核对后的结论。
历史阻塞问题:已逐条落实
本 PR 唯一一条阻塞 review 是 qwen-code-ci-bot 于 2026-09-15T07:45:17Z 针对 17cc319e 的 CHANGES_REQUESTED;当前 0 条 review thread。它要求四件事,我在当前 head 上逐条核对,全部满足:
- 去掉与
main冲突的 workflow 文案改写 —— 当前 diff 完全不含qwen-code-pr-review.yml,只剩.size-baseline一个文件,冲突源消失。 - 去掉与之互斥的那条断言 —— 测试文件已整体退出 diff。
- 不要动
qwen-code-pr-review.yml的 baseline 条目 —— 未触碰(仍是 265415)。 - 只保留那两个修正后的整数 —— diff 正好只改这两行。
本轮独立扫描:两个整数我对着实际字节数自行核过,均精确
我没有采信 review 或描述里给出的数字,而是在当前 head 上直接读取每个 workflow 的实际大小并与 baseline 逐项对照:
| 条目 | baseline(本 head) | 实际字节 | 本 PR 是否改动 | 结论 |
|---|---|---|---|---|
ci.yml |
137297 | 137297 | 是(134426 → 137297) | 精确相等 |
qwen-review-runner-schedule.yml |
2518 | 2518 | 是(1958 → 2518) | 精确相等 |
qwen-code-pr-review.yml |
265415 | 265273 | 否 | baseline 高于实际 142 B,在 slack 内,未囤积未经审查的余量 |
qwen-autofix.yml |
469165 | 467357 | 否 | 未改动,本 PR 不引入该条目的任何新数字 |
两个被改动的条目都与实际字节数逐位相等,方向也是对的:把陈旧的 baseline 抬到实际值会让体积棘轮重新咬合(原值 134426 / 1958 分别低于实际 2871 B / 560 B,属于 baseline 过期),而不是把 baseline 设得高于实际去悄悄囤余量——后者才是这类改动真正的风险面,本 PR 没有踩到。未被改动的两条也确认没有因为本次改动而变得不准确。
改动范围是一个纯数据文件里的两个整数,不含任何代码、配置语义或行为变化,因此没有可报告的正确性、安全性、数据损坏或回归面。
CI:当前 head 上 Integration Tests (no-AK, No Sandbox) pass;Lint & Static、Test (ubuntu-latest, Node 22.x)、review-pr 仍 pending,无失败项。按本渠道策略 pending 不作为卡点,我没有等待或轮询。承载体积门禁的 Lint & Static 尚未出结果,但上表的数字是我直接对实际字节核出来的,比门禁结果更直接;合入前仍以它转绿为准。
结论:历史阻塞问题已逐条落实,两个整数经我独立核对精确无误,本轮未发现可证明的 Critical,提交 APPROVE。
qwen-code-review-bot
left a comment
There was a problem hiding this comment.
APPROVE
Verified against head fc56964953cc (1 file, +2/-2). The diff is exactly two integers in .github/workflows/.size-baseline, and both reproduce under independent measurement:
ci.yml: baseline134426→137297; the file onmainmeasures 137297 bytes today. ✓qwen-review-runner-schedule.yml: baseline1958→2518; the file onmainmeasures 2518 bytes today. ✓
A baseline refresh should record current reality and nothing else — this does.
Historical blocker: the only CHANGES_REQUESTED on this PR was the ci-bot's 07:45 review of the old head 17cc319e, which asked for the workflow-wording changes and the mutually exclusive assertion to be dropped and the PR reduced to the two drifted entries. That is exactly the shape of the current head, so the request has been implemented rather than argued with. (Per platform rules my approval does not dismiss that review — it stays attached to the old head until the bot re-verdicts or a maintainer dismisses it.)
Red CI attribution: the failing Test (ubuntu-latest, Node 22.x) is the repo-wide workspace-skills-status.test.ts failure that came in from main — this diff touches only .size-baseline and cannot reach any vitest file. Same attribution chiga0 confirmed on #11928.
LGTM.
Dismissing as fully implemented on the current head. This review (on 17cc319) asked the PR to drop the workflow-wording changes and the mutually exclusive assertion and to reduce to the two drifted .size-baseline entries. The current head fc56964 is exactly that: two integers in .github/workflows/.size-baseline, both verified byte-for-byte against the actual workflow files on main (ci.yml=137297, qwen-review-runner-schedule.yml=2518). Nothing requested here remains outstanding.
Resolve the .github/workflows/.size-baseline conflict on ci.yml by recording the merged file's byte size (137778): main raised the same entry for the stale workflow size baselines (#11921) and this branch adds its own ci.yml steps. The merged baseline passes the check-workflow-size.sh ratchet for all 56 tracked workflow files.
qwen-code-dev-bot
left a comment
There was a problem hiding this comment.
APPROVE
核对基线:head fc56964953(base d313505f),净改动 1 个文件 .github/workflows/.size-baseline +2/-2。四条 required 现已全部 completed 且 success:Test (ubuntu-latest, Node 22.x)、Lint & Static (ubuntu-latest, Node 22.x)、Integration Tests (no-AK, No Sandbox)、web-shell E2E Smoke。
历史阻塞已解决:qwen-code-ci-bot 在旧 head 17cc319e 的那条 CHANGES_REQUESTED(要求 rebase + 收敛改动范围)现为 DISMISSED,且当前 diff 已收敛成只剩 baseline 两行 —— 它反对的 workflow 文案改动与那条互斥断言都不在本 PR 内。
独立核对数字:git show fc56964953:.github/workflows/ci.yml | wc -c = 137297、... | wc -c 的 qwen-review-runner-schedule.yml = 2518,与提交值逐位一致;base 上同两行分别是 134426 与 1958。两个 workflow 本体在 base 与 head 之间字节一致,本 PR 未触碰 qwen-code-pr-review.yml、qwen-autofix.yml 等其它条目。
如实说明两点:这条 Approve 是合并后补记的 —— 该 PR 已于 10:05:53Z 合入,而 Test 档的重跑到 10:31:33Z 才 success(合入前那次红在 packages/cli/src/ui/use-box-metrics-loop-guard.test.tsx,Maximum update depth exceeded 出自 ink 自身的 use-box-metrics.ts:123;本 PR 净改动只是 manifest 两行,同一 base 的其它 PR 前后脚为绿,所以是用例抖动而非本 PR 引入,重跑即转绿)。其次,这两行是把记录值改回实测值的例行维护:按 check-workflow-size.sh 的棘轮规则(GROWTH_ALLOWANCE=4096)复算,57 个 workflow 文件配 57 条条目,用 base 的旧 manifest 也不构成违例,本 PR 未抬高 GATE_BYTES=470000,也没有囤积未审余量。
What this PR does
Corrects two stale entries in
.github/workflows/.size-baselineto the sizes those workflows actually have onmain:ci.yml: 134426 → 137297 (drift 2871 B, only 1225 B of the 4096 B allowance left)qwen-review-runner-schedule.yml: 1958 → 2518 (drift 560 B, 3536 B left)This is the one-line baseline update that
check-workflow-size.sh's own stale-baseline warning asks for. Nothing else is in the diff.Why it's needed
Both entries had drifted from the real bytes, so the size ratchet was measuring against numbers nobody had reviewed. Left alone,
ci.ymlneeds only ~1.2 KB more growth before the gate turns red for an unrelated PR.The skill-identity fix this branch originally carried is no longer needed here:
main's #11933 (faded7f14e) landed the identical change —packages/cli/src/serve/workspace-skills-status.tsmerges to the same blob on both sides, andmain'sworkspace-skills-status.test.tsis a superset of this branch's version (this branch had droppedmain'sscopes grants to the owning extension and preserves authored restrictionscases). Both files were taken fromorigin/main, and the earlier review-wording fix is already in #11912.Reviewer Test Plan
How to verify
Compare each recorded integer against the file's real size on
main:Both must match the values this PR records, and
bash .github/scripts/check-workflow-size.shmust exit 0.Evidence (Before & After)
Before:
check-workflow-size.shreported both files as above their recorded baselines. After (merged headfc56964953, bash 4.2):The remaining
qwen-autofix.ymlwarning is pre-existing debt onmain(recorded 469165 vs actual 467357) and is deliberately left out of this PR.Tests:
scripts/tests/workflow-size.test.js214/214 passed;.github/scripts/review-runner-schedule.test.mjs6/6 passed.Tested on
Linux, bash 4.2, Node from the repository lockfile. No workflow file content is modified, so no runner-label, PAT, or merge-queue behavior changes.
Risk & Scope
Two integers in one baseline file. Deliberately not included: the other drifted baseline entries on
main(e.g.qwen-autofix.yml,qwen-code-pr-review.ymlat 265415 vs actual 265273 — insideSLACK_BYTES, so nothing is owed), any workflow edit, and the skill-identity fix already landed in #11933.Linked Issues
Follows up the size-baseline drift noted in #11855. Superseded work: #11912 (review fallback wording), #11933 (skill identity).