Skip to content
Merged
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
a623924
fix(acp-bridge): deflake the exhaustive UTF-16 byte-estimate test (#1…
qwen-code-dev-bot Aug 30, 2026
add1021
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Aug 30, 2026
9da9722
Merge branch 'main' into autofix/issue-10529
yiliang114 Aug 30, 2026
ed03500
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Aug 30, 2026
ccbcde4
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Aug 30, 2026
a8394bd
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Aug 31, 2026
ac4b2a4
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Aug 31, 2026
66882c2
Merge remote-tracking branch 'origin/main' into autofix/issue-10529
qwen-code-dev-bot Aug 31, 2026
50447e2
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Aug 31, 2026
62162ce
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Aug 31, 2026
18aaa8f
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Sep 1, 2026
964fb72
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Sep 1, 2026
8cae3ac
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Sep 2, 2026
3f56e9a
test(acp-bridge): assert exhaustive byte-estimate sweep once per run
qwen-code-dev-bot Sep 2, 2026
323281f
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Sep 2, 2026
4c06d54
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Sep 2, 2026
049ef40
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Sep 2, 2026
5dcf629
test(acp-bridge): bound the byte-estimate sweep's mismatch report
qwen-code-dev-bot Sep 2, 2026
488a1d9
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Sep 2, 2026
4e8d80b
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Sep 3, 2026
75ea637
Merge branch 'main' into autofix/issue-10529
qwen-code-dev-bot Sep 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions packages/acp-bridge/src/json-string-bytes.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,19 @@ import { estimateJsonStringBytes } from './json-string-bytes.js';

describe('estimateJsonStringBytes', () => {
it('matches JSON.stringify UTF-8 bytes for every UTF-16 code unit', () => {
const mismatches: Array<{ code: number; got: number; want: number }> = [];

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Escalated — not implementable in-tree. This thread stays open.

Confirmed and not disputed. In run 33274358974 the Run .github/scripts helper tests step failed on the autofix-status-heartbeat loop subtest and Run tests and generate reports — the only step that executes npm run test:ci, and therefore the only one that ever runs the acp-bridge suite — was skipped. So Fixes #10529 is a false certification on the record. Maintainer @wenshao reached the same conclusion independently from the run's own step data (§1 and §6 of their two verification reports).

Neither remediation this finding offers is available to this loop:

  • Dropping the Fixes #10529 linkage and the (#10529) title reference is a PR title / body / branch write. This loop has no GitHub credentials and performs no network writes — the workflow owns them. That is the same boundary this thread has been escalated against since round 1.
  • Retargeting at the heartbeat suite means editing .github/scripts/autofix-status-heartbeat.test.mjs. .github/ is CI machinery this PR was never about, which this loop may not modify, and it is outside the PR's footprint, which the gate rejects. It is also moot: the heartbeat race was already fixed on main by 3483836895 fix(ci): stop heartbeat mint-skip test racing loop startup (#10527) — verified an ancestor of this head — and Main CI failed: Qwen Code CI on 02f2101f4305 #10529 has been closed since 2026-08-31.

The maintainer's instruction is already on the record and is bookkeeping, not code: "merge the code change, but drop or downgrade the Fixes #10529 link first", and in round 2 "rewrite 'What this PR does', 'Reviewer Test Plan', 'Evidence' and 'Risk & Scope' around the assert-once change, and drop Fixes #10529 (a plain reference is fine)". What remains is executing that metadata write.

Question for the maintainer: will you — or the workflow — apply those metadata edits (demote Fixes #10529 and the title reference to plain references, rewrite the body around the assert-once change) so this can merge? Re-running this loop will keep returning the same report: there is no edit inside this PR's one-file footprint that closes this finding.

Code state for the merge decision, re-verified this round at head 488a1d9a29 (a base-update merge carrying no source or test edits): unchanged and green. packages/acp-bridge 34 files / 1919 tests passed in 20.6 s; the changed file 5 tests in 49 ms; eslint --max-warnings 0 and prettier clean; grep -c '60_000' on the changed file is 0, so #10552's ECS-conditional testTimeout knob is authoritative for this test again. The diff is the assert-once rewrite plus the bounded mismatch collector from @wenshao's round-2 §5. Full detail in this round's report.

中文说明

升级 —— 无法在代码树内实施。本线程保持开放。

已确认,不作反驳。在 run 33274358974 中,Run .github/scripts helper tests 步骤失败于 autofix-status-heartbeat loop 子测试,而 Run tests and generate reports —— 唯一执行 npm run test:ci、也就是唯一会运行 acp-bridge 套件的步骤 —— 被跳过。因此 Fixes #10529 是记录上的一次错误认证。维护者 @wenshao 对照该 run 自己的步骤数据独立得出同样结论(见其两份验证报告的 §1 与 §6)。

该发现给出的两种修复方式,本循环都无权执行:

  • 移除 Fixes #10529 关联与 (#10529) 标题引用 属于 PR 标题 / 正文 / 分支的写入。本循环没有 GitHub 凭据,也不执行任何网络写入 —— 这些由 workflow 负责。这与该线程自第 1 轮起持续升级所依据的边界是同一个。
  • 重新对准心跳套件 意味着编辑 .github/scripts/autofix-status-heartbeat.test.mjs。.github/ 属于本 PR 从未涉及的 CI 机制,本循环不得修改;它也超出本 PR 的 footprint,会被门禁拒绝。而且已无意义:该心跳竞争问题已由 main 上的 3483836895 fix(ci): stop heartbeat mint-skip test racing loop startup (#10527) 修复(已验证为本 head 的祖先),且 Main CI failed: Qwen Code CI on 02f2101f4305 #10529 自 2026-08-31 起已关闭。

维护者的指令已在记录上,且属记账而非代码:"合入代码改动,但先去掉或降级 Fixes #10529 关联";第 2 轮补充 "把 'What this PR does'、'Reviewer Test Plan'、'Evidence' 与 'Risk & Scope' 围绕只断言一次的改动重写,并去掉 Fixes #10529(保留为普通引用即可)"。剩下的就是执行这次元数据写入。

给维护者的问题: 是否由您(或 workflow)来应用这些元数据修改(把 Fixes #10529 与标题引用降级为普通引用,并围绕只断言一次的改动重写正文),以便本 PR 可以合入?重跑本循环只会持续返回同样的报告:在本 PR 单文件的 footprint 之内,不存在能关闭该发现的编辑。

供合入决定使用的代码状态,本轮已在 head 488a1d9a29(一次不含源码或测试改动的 base 更新合并)重新验证:未改动且为绿。packages/acp-bridge 34 个文件 / 1919 个测试通过,耗时 20.6 秒;改动文件 5 个测试、49 毫秒;eslint --max-warnings 0 与 prettier 均干净;对改动文件执行 grep -c '60_000' 为 0,因此 #10552 的 ECS 条件 testTimeout 旋钮对该测试重新具有权威性。该 diff 就是只断言一次的重写,外加 @wenshao 第 2 轮 §5 的有界不匹配收集器。完整细节见本轮报告。

for (let code = 0; code <= 0xffff; code++) {
const value = String.fromCharCode(code);
Comment on lines +12 to 14

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Verified as real; escalated — the fix is PR metadata, which this round cannot write.

Confirmed against this checkout, not just the report:

  • .github/scripts/autofix-status-heartbeat.test.mjs:919 is the subtest stamps each tick in flight around the gh call and clears it after, and ci.yml:739 runs it as its own Run .github/scripts helper tests step ($HELPER_TESTS, ci.yml:82) ahead of the Vitest step that executes this PR's test. A failure there aborts the job, so the Vitest step is skipped — this change cannot have fixed that run.
  • git diff origin/main...HEAD --stat is one file, packages/acp-bridge/src/json-string-bytes.test.ts (+10/-3). grep -rn "10529" over the repo returns nothing, so the certification lives only in the PR title/body on GitHub.

Why no commit: the finding's own remediation is "PR-metadata bookkeeping only, no code change", and @wenshao's round-2 verification says "drop Fixes #10529 (a plain reference is fine). Then merge." The shipped assert-once rewrite is correct and stays as it is. This mode's agent has no GitHub credentials (GITHUB_TOKEN / GH_TOKEN / CI_DEV_BOT_PAT unset), and the review-address path consumes no PR-metadata file — pr-title.txt / pr-body.md are read only by gh pr create in the develop-issue publish job (qwen-autofix.yml:1543-1544); the autofix workflow contains no gh pr edit. So writing them here would produce nothing.

Applying it needs one gh pr edit 10532:

Title, minus the trailing reference:

fix(acp-bridge): deflake the exhaustive UTF-16 byte-estimate test

Both body sections, with the closing keyword removed from each — GitHub parses closing keywords anywhere in the body, so removing one leaves the certification live:

## Linked Issues

Related to #10529 — deliberately **without** a closing keyword. That issue's recorded CI failure was in the `.github/scripts` helper suite `autofix-status-heartbeat.test.mjs` (subtest `stamps each tick in flight around the gh call and clears it after`), run by a separate `Run .github/scripts helper tests` step; in that run the step executing this PR's test was skipped, so this change is not its fix. The issue was closed as stale on 2026-08-31.

Restores the ECS-conditional `testTimeout` knob from #10552 as the authoritative per-test timeout for this package.
## 关联 Issue

与 #10529 相关——刻意**不使用**关闭关键字。该 issue 记录的 CI 失败发生在 `.github/scripts` 辅助测试套件 `autofix-status-heartbeat.test.mjs`(子测试 `stamps each tick in flight around the gh call and clears it after`),由独立的 `Run .github/scripts helper tests` 步骤执行;在那次运行中,执行本 PR 测试的步骤被跳过,因此本改动不是它的修复。该 issue 已于 2026-08-31 以 stale 关闭。

恢复了 #10552 中按 ECS 条件生效的 `testTimeout` 开关,使其重新成为本包权威的单测超时。

The remaining stale sections the finding names ("What this PR does", Test Plan step 3, Evidence, Risk) still describe the superseded 60s timeout raise. A complete paste-ready replacement body describing the assert-once change that actually ships is in this round's report comment on the PR.

Thread intentionally left open: the finding is not resolved in code, so resolving it would hide an unaddressed Critical.


经复核属实;已上报——修复对象是 PR 元数据,本轮无法写入。

对照当前 checkout 确认(不只是照抄报告):

  • .github/scripts/autofix-status-heartbeat.test.mjs:919 就是子测试 stamps each tick in flight around the gh call and clears it after;ci.yml:739 以独立的 Run .github/scripts helper tests 步骤运行它($HELPER_TESTS,见 ci.yml:82),位于执行本 PR 测试的 Vitest 步骤之前。该步骤失败会中止整个 job,Vitest 步骤因此被跳过——本改动不可能修复那次运行。
  • git diff origin/main...HEAD --stat 只有一个文件 packages/acp-bridge/src/json-string-bytes.test.ts(+10/-3)。对仓库执行 grep -rn "10529" 无任何匹配,说明该认证只存在于 GitHub 上的 PR 标题/正文中。

为何没有提交:该发现自身写明的修复方式是 "仅 PR 元数据操作,无需代码改动",@wenshao 的第 2 轮验证也写明 "drop Fixes #10529 (a plain reference is fine). Then merge."(去掉 Fixes #10529,普通引用即可,然后合入。)实际提交的 assert-once 重写是正确的,保持原样。本模式的 agent 没有任何 GitHub 凭据(GITHUB_TOKEN / GH_TOKEN / CI_DEV_BOT_PAT 均未设置),而 review-address 路径不消费任何 PR 元数据文件——pr-title.txt / pr-body.md 只在 develop-issue 发布 job 的 gh pr create 中被读取(qwen-autofix.yml:1543-1544);整个 autofix 工作流中没有 gh pr edit。因此在这里写出这两个文件不会产生任何效果。

要落实它,只需一条 gh pr edit 10532:

标题去掉末尾的 issue 引用:

fix(acp-bridge): deflake the exhaustive UTF-16 byte-estimate test

两处正文章节都要移除关闭关键字——GitHub 会解析正文任意位置的关闭关键字,只移除一处,认证仍然有效。(两段替换文本见上方英文区块中的 ## Linked Issues 与 ## 关联 Issue。)

该发现点名的其余过时章节("What this PR does"、Test Plan 第 3 步、Evidence、Risk)仍在描述已被替换的 60 秒超时上调。一份可直接整段粘贴、描述实际提交的 assert-once 改动的完整替换正文,已放在本轮发到 PR 上的报告评论中。

线程刻意保持开放:该发现并未在代码中被解决,关闭它会掩盖一条未处理的 Critical。

expect(estimateJsonStringBytes(value, Number.MAX_SAFE_INTEGER)).toBe(
Buffer.byteLength(JSON.stringify(value)),
);
const got = estimateJsonStringBytes(value, Number.MAX_SAFE_INTEGER);
const want = Buffer.byteLength(JSON.stringify(value));
if (got !== want) mismatches.push({ code, got, want });
}
expect({ count: mismatches.length, first: mismatches.slice(0, 5) }).toEqual(

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Disposition: escalated to a maintainer — not resolved in code, so this thread stays open.

Re-verified at head 5dcf62992c rather than carried over:

  • The code carrier is gone. The entire PR diff is packages/acp-bridge/src/json-string-bytes.test.ts (+10/−3, test-only); read at HEAD it carries no per-test timeout literal, so packages/acp-bridge/vitest.config.ts stays authoritative on every lane, and the changed test runs 5/5 green in 55 ms.
  • The remaining carriers are the PR title and body, and this path has no channel for them: pr-title.txt / pr-body.md are consumed only by gh pr create in the develop-issue publish step (qwen-autofix.yml:1541-1544), gh pr edit and updatePullRequest appear zero times in that workflow, the address path consumes only address-summary.md / no-action.md / failure.md / handoff.md / resolved-comments.txt / comment-replies.json / deferred-findings.json / growth-audit.json (qwen-autofix.yml:5521-5592), and this agent holds no GitHub credentials. Adding an edit channel would mean editing .github/, which is out of bounds for this loop.

New evidence this round, which supports the finding rather than weakening it. Since this branch's merge-base (29baecd780), the only CI-lane commit on main is 3483836895 fix(ci): stop heartbeat mint-skip test racing loop startup (#10527). It rewrites a subtest of .github/scripts/autofix-status-heartbeat.test.mjs — the suite issue #10529's closing comment names — because the pre-fix fixed 2.5 s sleep let "bash startup plus the tick's forks land after that budget on a loaded runner — reddening the helper-tests lane with no product defect". Main therefore records in writing that this suite reddens the Test lane with no product defect: the same attribution this finding makes, and the opposite of what Fixes #10529 claims.

One observation for whoever owns #10547, stated as a code-shape fact and not as a verified defect: the subtest this finding names (stamps each tick in flight around the gh call and clears it after, line 866 at HEAD) is not touched by #10527 — the file's diff has two hunks, @@ -833,6 and @@ -848,21, both in the mint-skip region — and on main it still gates two full loop ticks behind a fixed waitFor(..., 8000), the shape #10527 calls a race. I did not reproduce a failure of it: invoked exactly as CI invokes it, the suite passed 29/29 twice at HEAD, at loadavg 11.1 and at loadavg 66.7 on 64 cores (the subtest took 3051 ms and 3209 ms).

The ask is unchanged (comment 3910803244, reconfirmed by @wenshao in 5509928882 Recommendation 1): title → test(acp-bridge): deflake the exhaustive UTF-16 byte-estimate sweep; body → replace Fixes #10529 in both the "Linked Issues" and "关联 Issue" sections with a plain non-closing reference recording that #10529 was closed as stale and that its recorded failure was the unrelated .github/scripts heartbeat flake, and bring "What this PR does" / Test Plan step 3 / Risk & Scope in line with the collect-then-assert-once change (the 60 s raise was withdrawn in 3f56e9a8c7); do not re-point the closing keyword at #10547.

On the red Test (ubuntu-latest, Node 22.x) check named in this round's feedback: it cannot come from this diff, the branch is 20+ commits behind main and still carries the pre-#10527 helper suite, --conflict false was supplied so this round merges nothing, and the logs of run 33637618240 are unavailable to an agent with no credentials — so the failing step cannot be named with certainty. A red lane that passes on current main is the workflow's base-update mechanism's job, which has already fired five times on this PR.

中文说明

处置:上报维护者 —— 未在代码中解决,因此该线程保持开放。

以下均在 head 5dcf62992c 上重新核实,不是沿用旧结论:

  • 代码载体已移除。本 PR 的完整 diff 只有 packages/acp-bridge/src/json-string-bytes.test.ts(+10/−3,纯测试);在 HEAD 上读取,它不含任何 per-test 超时字面量,因此 packages/acp-bridge/vitest.config.ts 在所有 lane 上仍具权威性,被改动的测试 5/5 通过、耗时 55 ms。
  • 剩余载体是 PR 标题与正文,而此路径没有写入它们的通道:pr-title.txt / pr-body.md 只被 develop-issue 发布步骤中的 gh pr create 消费(qwen-autofix.yml:1541-1544);gh pr edit 与 updatePullRequest 在该 workflow 中出现次数为零;address 路径只消费 address-summary.md / no-action.md / failure.md / handoff.md / resolved-comments.txt / comment-replies.json / deferred-findings.json / growth-audit.json(qwen-autofix.yml:5521-5592);并且本 agent 没有 GitHub 凭据。新增一个编辑通道意味着修改 .github/,这越过本循环的边界。

本轮的新证据,它支持而非削弱该发现。 自本分支 merge-base(29baecd780)以来,main 上唯一的 CI 相关提交是 3483836895 fix(ci): stop heartbeat mint-skip test racing loop startup (#10527)。它改写了 .github/scripts/autofix-status-heartbeat.test.mjs(即 issue #10529 关闭评论点名的套件)中的一个子测试,原因是修复前那个固定的 2.5 秒 sleep 会让「bash 启动加上该 tick 的多次 fork 在负载较高的 runner 上超出预算 —— 让 helper-tests lane 变红,而没有任何产品缺陷」。因此 main 已以文字形式记录:这个套件会在没有产品缺陷的情况下让 Test lane 变红 —— 与该发现的归因一致,也与 Fixes #10529 的声称相反。

一条给 #10547 负责人的观察,作为代码形态事实陈述,而非已核实的缺陷:该发现点名的子测试(stamps each tick in flight around the gh call and clears it after,HEAD 上第 866 行)并没有被 #10527 触碰 —— 该文件的 diff 只有两个 hunk,@@ -833,6 与 @@ -848,21,都在 mint-skip 区域 —— 且在 main 上它仍把两个完整的 loop tick 关在固定的 waitFor(..., 8000) 之后,正是 #10527 称之为竞态的形态。我没有复现出它的失败:以与 CI 完全一致的方式调用,该套件在 HEAD 上两次都是 29/29 通过,分别在 loadavg 11.1 与 64 核 loadavg 66.7 下(该子测试耗时 3051 ms 与 3209 ms)。

请求事项不变(评论 3910803244,并由 @wenshao 在 5509928882 建议 1 中再次确认):标题 → test(acp-bridge): deflake the exhaustive UTF-16 byte-estimate sweep;正文 → 把 "Linked Issues" 与 "关联 Issue" 两节中的 Fixes #10529 换成一条非关闭性的普通引用,说明 #10529 已按过期关闭、其记录的失败是无关的 .github/scripts 心跳抖动,并把 "What this PR does" / Test Plan 第 3 步 / Risk & Scope 改写为与「先收集、只断言一次」的改动一致(60 秒上调已在 3f56e9a8c7 中撤回);不要把关闭关键字改为指向 #10547。

关于本轮反馈中点名的红色检查 Test (ubuntu-latest, Node 22.x):它不可能来自本 diff;本分支落后 main 20 多个提交,仍携带 #10527 之前的 helper 套件;本次传入 --conflict false,因此本轮不做任何合并;而没有凭据的 agent 拿不到 run 33637618240 的日志,所以无法确定失败的具体步骤。「在当前 main 上能通过」的红色 lane 属于 workflow base 更新机制的职责,该机制在本 PR 上已触发过五次。

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Round 18: confirmed again at HEAD 75ea637edb; still not implementable from this loop, so the thread stays UNRESOLVED for a maintainer.

Re-verified locally this round rather than carried over:

  • git diff $(git merge-base origin/main HEAD)..HEAD --stat → one file, packages/acp-bridge/src/json-string-bytes.test.ts, +10/−3; git diff fa5f7a11a0..HEAD -- .github/ → empty. The heartbeat suite issue Main CI failed: Qwen Code CI on 02f2101f4305 #10529 records is untouched, as the finding states.
  • No commit message on the branch carries a closing keyword (a623924a's (#10529) is a parenthetical reference, and history rewriting is forbidden anyway), so the live closing reference is exclusively the PR body's Fixes #10529 — in both "Linked Issues" and "关联 Issue", exactly as the finding says.

The finding is real and undisputed. What has not changed in 18 rounds is that its only fix is a GitHub metadata write this loop cannot make, re-verified this round from the workflow source and the environment rather than asserted:

  • grep -n "gh pr edit" .github/workflows/qwen-autofix.yml → no matches. The address-review lane has no PR-title/body edit mechanism.
  • pr-body.md is consumed exactly once in the whole workflow — gh pr create --body-file at line 1544, develop-issue lane only. It is never re-read after creation, so writing an updated body file this round would change nothing.
  • gh auth status → "You are not logged into any GitHub hosts." No credentials, and the loop's rules forbid using any.

Retargeting the fix at the heartbeat suite is also unavailable (.github/ is a protected area outside this PR's packages/acp-bridge footprint) and no longer wanted — @yiliang114 closed #10529 as a stale flake on 2026-08-31.

For the maintainer — two commands, then merge. @wenshao already reached this conclusion twice (ic:5503235459 §Recommendation 1, ic:5509928882 §6 and §Recommendation 1: "merge the code … but rewrite the PR body first"), and the code side is done: the assert-once rewrite plus the bounded { count, first } report from ic:5509928882 §5 are both at HEAD, green (npx vitest run src/json-string-bytes.test.ts → 5/5, 175ms file duration against vitest's 5s default).

  1. gh pr edit 10532 --body … — replace Fixes #10529 with a non-closing reference (e.g. Refs #10529) in both body sections. GitHub parses closing keywords anywhere in the body, so editing only one leaves the certification live. In the same edit, restate "What this PR does" / "Reviewer Test Plan" / "Evidence" / "Risk & Scope" around the change actually shipped instead of the superseded 60s timeout raise (that is the deferred D15-1 item — same edit, same command).
  2. gh pr edit 10532 --title 'test(acp-bridge): assert the exhaustive UTF-16 byte-estimate sweep once per run' — drop (#10529). The squash-merge commit title follows the PR title, so this is what keeps the closing reference out of the merge record.

The round-18 review's own exit recommendation is land-with-residual-risk — a maintainer risk-acceptance decision, not another review round. This bot has no further path to that edit and will keep reporting the same blocker until it lands.

中文说明

第 18 轮:已在 HEAD 75ea637edb 上再次确认;本循环仍无法实施,因此线程保持未解决,交由维护者处理。

本轮在本地重新核实,而非沿用旧结论:

  • git diff $(git merge-base origin/main HEAD)..HEAD --stat → 只有一个文件 packages/acp-bridge/src/json-string-bytes.test.ts,+10/−3;git diff fa5f7a11a0..HEAD -- .github/ → 为空。issue Main CI failed: Qwen Code CI on 02f2101f4305 #10529 记录的心跳套件未被触碰,与该发现一致。
  • 分支上没有任何 commit message 携带关闭关键字(a623924a 的 (#10529) 是括号引用,且本就禁止重写历史),因此当前存活的关闭引用只存在于 PR 正文的 Fixes #10529——位于 "Linked Issues" 与 "关联 Issue" 两处,正如该发现所述。

该发现属实且无争议。18 轮以来未曾改变的是:它唯一的修复是一次本循环无法执行的 GitHub 元数据写入——本轮已从 workflow 源码与运行环境重新核实,而非凭空断言:

  • grep -n "gh pr edit" .github/workflows/qwen-autofix.yml → 无任何匹配。address-review 通道不存在修改 PR 标题/正文的机制。
  • pr-body.md 在整个 workflow 中只被消费一次——第 1544 行的 gh pr create --body-file,且仅在 develop-issue 通道。PR 创建后它再也不会被读取,因此本轮即使写出更新后的正文文件也不会产生任何效果。
  • gh auth status → "You are not logged into any GitHub hosts"。无凭据,且本循环规则禁止使用凭据。

把修复重新对准入心跳套件同样不可行(.github/ 是受保护区域,且在本 PR 的 packages/acp-bridge 足迹之外),也已不再被期望——@yiliang114 已于 2026-08-31 将 #10529 作为过期抖动关闭。

给维护者——两条命令,然后合入。 @wenshao 已两次得出同一结论(ic:5503235459 建议 1;ic:5509928882 第 6 节与建议 1:"合入代码……但请先重写 PR 正文"),而代码侧已经完成:ic:5509928882 第 5 节要求的只断言一次改写与受限的 { count, first } 报告都已在 HEAD 上,且为绿(npx vitest run src/json-string-bytes.test.ts → 5/5,文件耗时 175ms,相对 vitest 默认的 5 秒预算)。

  1. gh pr edit 10532 --body … —— 将 Fixes #10529 替换为非关闭引用(例如 Refs #10529),且两处正文都要改。GitHub 会解析正文任意位置的关闭关键字,因此只改一处,认证仍然有效。同一次编辑中,请把 "What this PR does" / "Reviewer Test Plan" / "Evidence" / "Risk & Scope" 按实际交付的改动重写,而不是已被取代的 60 秒超时上调(即延后项 D15-1——同一次编辑、同一条命令)。
  2. gh pr edit 10532 --title 'test(acp-bridge): assert the exhaustive UTF-16 byte-estimate sweep once per run' —— 移除 (#10529)。squash 合并的提交标题跟随 PR 标题,因此这一步才能保证关闭引用不进入合并记录。

第 18 轮评审自身给出的出口建议是 land-with-residual-risk——维护者的风险接受决定,而非再开一轮评审。本机器人已无通往该编辑的进一步路径,在该编辑落地前只能持续报告同一个阻塞点。

{
count: 0,
first: [],
},
);
});

it('matches JSON.stringify for paired surrogates and mixed escaping', () => {
Expand Down
Loading