Skip to content

fix(ci): give the macOS and Windows lanes a trigger again - #9370

Merged
yiliang114 merged 27 commits into
mainfrom
fix/revive-platform-lanes
Aug 25, 2026
Merged

fix(ci): give the macOS and Windows lanes a trigger again#9370
yiliang114 merged 27 commits into
mainfrom
fix/revive-platform-lanes

Conversation

@wenshao

@wenshao wenshao commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

What this PR does

Gives the macOS and Windows test lanes a way to run again, and a way for a failure on them to be seen. They keep their merge-queue trigger and gain two more: a pull request whose diff a new platform-sensitivity classifier recognises, and a nightly run on main. The classifier's answer is fail-safe in every direction — only a confident "no" skips the lanes — and every other job in the workflow now excludes the schedule explicitly, so a nightly run is exactly those two jobs. A red nightly opens an autofix-ready issue through the existing main-failure watcher.

Why it's needed

Both lanes are gated on merge_group, and no merge queue is enabled on this repository: the main ruleset carries only deletion, non-fast-forward and pull_request rules, no status check is required, and merges land as squashes. The last merge_group run of any workflow was 2026-07-02. The gate was therefore an off switch — the lanes reported as "skipped" on every pull request, which reads as agreement, and nothing ever reached them afterwards. The only signal this repository has about a host that is not Linux with a GNU userland had been silently off for six weeks.

That is how the defect behind this work shipped: a workflow guard was hardened with realpath -m, a GNU-only flag that a BSD userland exits 1 on, and the test written to pin that canonicalization was red on every Mac. Eight review rounds on Linux runners created it, blessed it, and merged it, because the lane that would have contradicted them could not run. The path-based gate here catches that class before merge; the nightly catches what a path list cannot see, one day later.

Reviewer Test Plan

How to verify

Two things are worth confirming separately: what the classifier decides, and what the wiring does with that decision.

The classifier is a pure function over a changed-file list, so its judgement is readable in its tests — node --test .github/scripts/ci/classify-platform-sensitivity.test.mjs. The interesting cases are the negative ones: an ordinary source-and-docs diff must stay off the lanes (that is the entire cost argument), and the substring traps must not drag them in — a component named Shellfish.tsx, a cryptic.ts, a plateauDetector.ts. The positive list is shell in every dialect, workflow and composite-action YAML and the scripts they call, the script layer and its tests, the runner configuration, the root manifests, and path segments naming a platform-coupled subsystem. Every unknown — an unreadable listing, an entry with no usable name, a fork pull request, a truncated file list, the classify job failing outright — answers "sensitive", and the lanes' gate skips only on a literal false.

The wiring is pinned by npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/ci-platform-lanes.test.js: the schedule trigger exists, both lanes name all four triggers, the gate is spelled in the fail-safe direction and survives a skipped or failed classifier job, every other job in the workflow is excluded from the nightly, the classify job checks out the pull request's base commit rather than its head, and the main-failure watcher lists this workflow and fires on a scheduled main run. That the tests bite was measured rather than assumed: flipping the gate to == 'true', dropping the schedule clause from a lane, dropping the nightly guard from the ubuntu job, pointing the checkout at the head, dropping the new classifier's test from the helper-test list, and removing the schedule trigger are each caught by a named test.

Two design points to weigh rather than verify. The classify job is its own small hosted job instead of a step in classify_pr because that job's outputs pick the Linux runner for the whole run, and this one needs a checkout — on a pool whose workspace other jobs have poisoned before; here a failure costs one classification, which the gate reads as "run the lanes". And its listing goes through the existing classify-pr-profile.sh wrapper, extended with a mode argument rather than copied, because that wrapper exists precisely so one pull request is never listed twice and classified differently in two places.

This PR is itself platform-sensitive by its own classifier, so its checks are where the gate first proves it fires.

Evidence (Before & After)

N/A — CI infrastructure, no user-visible output. Before: Test (macos-latest, Node 22.x) and Test (windows-latest, Node 22.x) reported "skipping" on every pull request and had not run since 2026-07-02. After: they run on this pull request, on any pull request whose diff the classifier recognises, nightly on main, and on a manual dispatch.

Tested on

OS Status
🍏 macOS ⚠️
🪟 Windows ⚠️
🐧 Linux

Environment (optional)

Unit tests and the repository's workflow linter, on Linux. The lanes themselves are what this PR is for — their first real run is on this pull request's own checks, and the nightly's first run is the day it lands.

Risk & Scope

  • Main risk or tradeoff: runner cost. A pull request the classifier calls sensitive now pays two expensive lanes, and every failure mode of the classifier resolves that way on purpose — a gate that fails open stops testing without saying so. The nightly adds two runs a day. If the cost lands wrong, the tuning knob is the classifier's path list, in one tested module, not the gate.
  • Not validated / out of scope: whether the lanes are currently green. If either one has drifted red while unwatched, this PR is what surfaces it, and the fix belongs in its own change. Re-enabling the merge queue is a repository-settings decision and is deliberately not assumed here — the merge-queue trigger is kept exactly as it was.
  • Breaking changes / migration notes: none.

Linked Issues

None — observed while verifying #9220; the merge-queue gate's effect is visible in gh run list --event merge_group.

中文说明

这个 PR 做了什么

让 macOS 与 Windows 两条测试 lane 重新有机会运行,并让它们的失败能被看见。原有的 merge queue 触发保留,另外新增两个:diff 被新的"平台敏感性"分类器识别的 PR,以及 main 上的每日定时运行。分类器的判定在各个方向上都是 fail-safe——只有明确的"否"才会跳过 lane——同时 workflow 里其他每个 job 都显式排除了 schedule,因此一次 nightly 恰好只有这两个 job。nightly 变红会通过既有的 main 失败监听器自动开一个可交给 autofix 的 issue。

为什么需要

两条 lane 都以 merge_group 为门,而本仓库并未启用 merge queue:main 的 ruleset 只有 deletion、non-fast-forward、pull_request 三条规则,没有任何 required status check,合入全部是 squash。任何 workflow 的最后一次 merge_group 运行是 2026-07-02。于是这个门实际上是一个关闭开关——两条 lane 在每个 PR 上显示为 "skipped"(读起来像"通过"),而此后再也没有任何事件能触达它们。本仓库对"非 Linux、非 GNU userland 主机"的唯一信号,已经静默关闭了六周。

促成本次工作的缺陷正是这样上线的:一处 workflow guard 被用 realpath -m 加固,而这是 GNU 独有参数、BSD userland 上直接以 1 退出;为钉住这次规范化而写的测试在所有 Mac 上都是红的。八轮跑在 Linux runner 上的评审造出了它、放行了它、并合入了它,因为本该反驳它们的那条 lane 根本跑不了。本 PR 的路径门能在合入前拦住这一类问题,nightly 则覆盖路径清单看不见的部分,代价是晚一天。

Reviewer 测试计划

如何验证

有两件事值得分开确认:分类器判定什么,以及 wiring 拿这个判定做什么。

分类器是对"改动文件列表"的纯函数,判定直接体现在它的测试里——node --test .github/scripts/ci/classify-platform-sensitivity.test.mjs。真正有意思的是否定用例:普通的源码 + 文档改动必须不触发 lane(这就是全部的成本论证),以及子串陷阱不能把 lane 拖进来——名为 Shellfish.tsx 的组件、cryptic.tsplateauDetector.ts。肯定清单则是:各种方言的 shell、workflow 与 composite action YAML 及它们调用的脚本、脚本层及其测试、runner 配置、根 manifest,以及路径中以完整片段命名平台耦合子系统的源文件。所有"未知"一律判为敏感——列表读不出来、条目没有可用名字、fork PR、被截断的文件列表、分类 job 整个失败——而 lane 的门只在字面量 false 时才跳过。

wiring 由 npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/ci-platform-lanes.test.js 钉住:schedule 触发存在、两条 lane 都写全了四个触发、门的写法是 fail-safe 方向且能在分类 job 被跳过或失败时存活、workflow 里其他每个 job 都被排除在 nightly 之外、分类 job checkout 的是 PR 的 base commit 而非 head、以及 main 失败监听器已列入本 workflow 且会在定时的 main 运行上触发。"测试真的会咬人"是实测而非假设:把门翻成 == 'true'、从某条 lane 去掉 schedule 分句、去掉 ubuntu job 的 nightly 守卫、把 checkout 指向 head、把新分类器的测试从 helper 列表里删掉、删掉 schedule 触发——每一个都被某条具名测试抓住。

另有两个设计点值得掂量而非验证。分类放在自己的小型 hosted job 里而不是 classify_pr 的一个步骤,因为后者的输出决定了整个 run 的 Linux runner 选择,而这件事需要 checkout——而那个池的 workspace 曾被其他 job 污染过;放在这里,失败的代价只是少一次分类,而门会把它读作"跑 lane"。它的文件列表走既有的 classify-pr-profile.sh wrapper(扩展了一个 mode 参数,而不是复制一份),因为那个 wrapper 存在的全部意义就是:同一个 PR 不会被列两次、并在两个地方得到不同的分类。

本 PR 按它自己的分类器就是平台敏感的,因此它自身的 checks 就是这个门第一次证明自己会触发的地方。

证据(Before & After)

N/A——CI 基础设施改动,无用户可见输出。之前:Test (macos-latest, Node 22.x)Test (windows-latest, Node 22.x) 在每个 PR 上显示 "skipping",且自 2026-07-02 起没有运行过。之后:它们会在本 PR 上运行、在任何被分类器识别的 PR 上运行、每日在 main 上运行,以及手动 dispatch 时运行。

测试平台

OS 状态
🍏 macOS ⚠️
🪟 Windows ⚠️
🐧 Linux

环境(可选)

单元测试与仓库自带的 workflow linter,运行在 Linux 上。两条 lane 本身正是本 PR 的目的——它们的第一次真实运行就是本 PR 自己的 checks,nightly 的第一次运行则在合入当天。

风险与范围

  • 主要风险或权衡:runner 成本。被分类器判为敏感的 PR 会多付两条昂贵 lane,而分类器的每一种失败模式都刻意收敛到这一侧——一个 fail-open 的门会在不出声的情况下停止测试。nightly 每天多两次运行。如果成本落点不合适,调节旋钮是分类器的路径清单(一个有测试的模块),而不是门本身。
  • 未验证 / 不在范围内:两条 lane 当前是否是绿的。如果其中之一在无人看管期间已经飘红,本 PR 正是让它暴露出来的东西,修复应作为独立改动。是否重新启用 merge queue 属于仓库设置层面的决定,本 PR 刻意不做假设——merge queue 触发原封不动地保留。
  • 破坏性变更 / 迁移说明:无。

关联 Issue

无——在验证 #9220 的过程中发现;merge-queue 门的实际效果可用 gh run list --event merge_group 直接看到。

Both lanes are gated on `merge_group`, and no merge queue is enabled on
this repository — the `main` ruleset carries only deletion,
non-fast-forward and pull_request rules, no status check is required,
and merges land as squashes. The last `merge_group` run of anything was
2026-07-02. So the gate was an off switch: the lanes reported as
"skipped" on every pull request, which reads as agreement, and nothing
ever reached them afterwards. The only signal this repository has about
a host that is not Linux with a GNU userland had been silently off for
six weeks, which is how #9220 shipped a GNU-only `realpath -m` in a
workflow guard with the suite that pinned it red on every Mac.

Three triggers now, in cost order.

A pull request whose diff a new classifier recognises as
platform-sensitive: shell scripts of every dialect, workflow and
composite-action YAML and the scripts they call, the script layer and
its tests, the test-runner configuration that decides which suites run
where, the root manifests, and source paths whose segments name a
platform-coupled subsystem. It is a net, not a proof — it cannot see a
platform assumption inside an ordinary source file, and no path rule
ever will — so every unknown answers "sensitive": an unreadable listing,
an unparsable entry, a fork pull request, a truncated file list, or the
classify job failing outright all end as "run the lanes". Only a
confident `false` skips them.

The merge queue, if it is ever enabled again, unchanged.

And a nightly run on `main` for everything the path list cannot see.
Every other job in the workflow excludes `schedule` explicitly, so a
nightly is exactly two jobs, and 'Qwen Code CI' joins the workflows the
main-failure watcher opens autofix issues for — a red lane nobody is
told about is the same silence the queue gate produced. That watcher
gains a trigger-level `branches: ['main']` filter so the CI workflow's
pull-request completions do not raise an event there just to skip.

The classifier runs in its own small hosted job rather than as a step in
`classify_pr`: that job's outputs pick the Linux runner for the whole
run, and this one needs a checkout — on a pool whose workspace other
jobs have poisoned before. It checks out the pull request's BASE commit,
never the head: it runs before any review and executes a script from the
tree it checks out. Its listing goes through the existing
classify-pr-profile.sh wrapper, extended with a mode argument, because
that wrapper's whole point is that one PR is never listed twice and
classified differently in two places.

Twelve tests pin the wiring — the triggers, the fail-safe direction of
the gate, the base-commit checkout, that a nightly stays two jobs, and
the alerting — and ten more pin the classifier itself, including the
substring traps (`Shellfish.tsx`, `cryptic.ts`, `plateauDetector.ts`
must not drag both lanes in) and every fail-safe path. Mutation-checked:
flipping the gate to `== 'true'`, dropping the schedule from a lane,
dropping the nightly guard from the ubuntu job, pointing the checkout at
the head, dropping the classifier's test from the helper list, and
removing the schedule trigger are each caught.
@qwen-code-ci-bot

qwen-code-ci-bot commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

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

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

The first thing the revived triggers hit was not a test failure but the
lane's own plumbing. `test_windows` verifies its checkout with
`verify-checkout-head`, and the input was written when this lane ran in
the merge queue alone: `expected_sha: github.event.merge_group.head_sha`,
with no event gate. On a pull request that expression is empty, the
action refuses an empty SHA, and the lane went red in 63 seconds without
running a test — the first Windows run in six weeks, failing on the
trigger rather than on the code.

Give it the event-aware shape the Ubuntu gate already uses, and skip it
where there is nothing to verify: the scheduled and dispatch runs check
out a branch by name, not a head commit.

Pinned generally rather than by name: for both lanes, any step whose
inputs read a `github.event.<event>` context must be gated to that
event, in the step's own `if` or in the expression itself. Restoring the
old spelling turns that test red.
@qwen-code-ci-bot

qwen-code-ci-bot commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Re-running the gate on the current head, as requested. Template still looks good ✓ — all required sections present, bilingual body.

  • Problem: real and verified, now with live proof on top of the API evidence. The merge-queue gate was an off switch (no merge_group run since 2026-07-02, both lanes skipped on every PR), and the revived lanes demonstrated exactly what that silence was hiding: their first run in six weeks surfaced accumulated platform drift, filed as ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481.
  • Direction: aligned. Restoring the repository's only non-Linux test signal is squarely CI-reliability work; nothing to escalate.
  • Size: no core paths touched — all changes live in .github/ and scripts/tests/. ~372 production lines (classifier 157, ci.yml wiring 171, listing wrapper 29, failure watcher 15) vs ~1,485 test lines. Below every advisory threshold.
  • Approach: scope still feels right, and everything added since the first gate pass traces to the stated goal: the Windows lane's fork-trust routing (fork PRs stay off the persistent pool) with a mirror test that evaluates the real runs-on expression against classify's allowlist, the classifier's subsystem rule fixed to match segments instead of substrings (the web-shell false positive), and host probes that let the script suite load on BSD/macOS hosts instead of crashing at collection. No drive-by changes.
  • Risk: no elevated risk signals — none of the twelve changed files match the revert-correlated path list.

Moving on to code review. 🔍

中文说明

按要求在当前 head 上重新执行 gate。模板依旧完整 ✓ —— 必填小节齐全,正文双语。

  • 问题:真实且已验证,除 API 证据外现在还有了实证。merge queue 门槛曾是"关闭开关"(2026-07-02 之后无任何 merge_group 运行,两条泳道在每个 PR 上都是 skipped);而复活的泳道首次运行就证明了这片沉默掩盖了什么——六周来首次运行便暴露出累积的平台漂移,已立为 ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481
  • 方向:对齐。恢复本仓库唯一的非 Linux 测试信号完全属于 CI 可靠性工作;无需升级。
  • 规模:未触及核心路径 —— 所有改动位于 .github/scripts/tests/。约 372 行生产代码(分类器 157、ci.yml 接线 171、列举包装脚本 29、失败监视器 15)对约 1,485 行测试代码。低于所有建议阈值。
  • 方案:范围依旧合理,且首次 gate 之后新增的每一处都能追溯到既定目标:Windows 泳道的 fork 信任路由(fork PR 不进入持久 runner 池)及一个直接求值真实 runs-on 表达式并与 classify 白名单对照的镜像测试;分类器子系统规则改为按路径段匹配而非子串(修复 web-shell 误报);以及让脚本套件在 BSD/macOS 主机上能正常加载而不是在收集阶段崩溃的主机探针。无顺手改动。
  • 风险:无升级风险信号 —— 十二个改动文件均不匹配与 revert 相关的路径列表。

进入代码审查。🔍

Qwen Code · qwen3.8-max

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

@qwen-code-ci-bot

qwen-code-ci-bot commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Code review — this pass reviews bb599f6… (a main merge landed seconds before this re-run was triggered). The diff grew from eight files to twelve since the last full review; I read all of it, and verified the structural claims against the base tree myself rather than trusting the earlier pass:

  • Windows fork-trust routing is the substantive addition. Now that the lane runs on pull requests, its runs-on mirrors classify_pr's trust policy: same-repo branches and write-access authors land on the persistent ecs-win pool, every other fork PR on hosted windows-2022. The mirror is held by ci-runner-routing.test.mjs, which substitutes the routing inputs into the REAL expression text, evaluates it, and asserts agreement with classify's allowlist across every author association — a policy edit applied to only one of the two encodings fails there instead of silently routing fork code onto the pool. Kill-switch precedence and the non-pull-request events keeping the pool are pinned too.
  • Classifier refinements: subsystem keywords now match only when they NAME the thing — a whole path segment or the head of a hyphen/underscore stem — so packages/web-shell/** (a browser UI) no longer summons both lanes on every change, while sandbox/, shell.ts, pty-host.ts still do; both directions and the substring traps are pinned. The parser splits on \r?\n and normalizes backslashes, closing the CRLF and Windows-separator gaps. I re-derived the regex behaviour for the trap cases (Shellfish.tsx, web-shell/client/App.tsx, plateauDetector.ts) — it holds.
  • The wiring suite (ci-platform-lanes.test.js) pins what matters: the four triggers as a disjunction (a ||&& mutation makes the gate unsatisfiable and fails), the fail-safe direction (!= 'false', never == 'true'), the nightly blast radius (every other job excludes schedule — I checked all seven against the base file, they do), the base-commit checkout with persist-credentials: false, and the watcher's name binding in both directions (ci.yml renamed → watcher unhooks → test fails).
  • Host probes (hasBashMapfile, hasGnuMktemp) wrap two test groups that assume GNU/bash ≥ 4.4 and skip on hosts without them. This is what lets the script suite load and run on the macOS lane at all — without the companion import fix the file threw at collection and 156 tests were silently not running. The wrapped gates execute only on Linux runners in production, so a skip on a BSD host loses no production coverage; the Linux lane runs them un-skipped.

No correctness blockers, no convention violations. Known non-blocking items from the review ledger (the round-9 Suggestion that the nightly-exclusion pin is presence-based, plus three deferred probes) remain tracked there; I re-verified the shipped YAML directly and it is correct even where the pin could be tighter.

Test evidence — the PR's own CI. I did not run any PR code. The reviewed commit's CI was in flight at fetch time (table below, updated in place by the finalize job); the classification of the reds comes from the previous completed head 2f871fb5…, read from the failing jobs' logs via the API:

  • Test (windows-latest) — red, and every one of the failures is inside package suites this PR does not touch: 69 across 13 packages/cli serve/review files (daemon-git-worktree-guard, server, review/cleanup, …), 3 in packages/core, 1 in packages/desktop. The diff here is confined to .github/** and scripts/tests/**, so the failures cannot be this change — they are the six weeks of accumulated drift the revived lane was built to surface, tracked in ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481 (issue verified open, matching title). Note the workspace-suite failure short-circuits before test:scripts on Windows, so the wiring suite has no Windows signal yet; it is green on both Linux and macOS.
  • Test (macos-latest) — all tests pass, including test:scripts (59 files, 1,453 passed — that is the suite containing this PR's classifier and wiring tests). The job itself dies after the suites on an unhandled [vitest-worker]: Timeout calling "onTaskUpdate" — an infra failure mode, also recorded in ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481, not a code defect.
  • Desktop Shell (ubuntu-22.04) — the earlier cancellation was a 45-minute hang in apt before any build or test; the re-run is green on both of the last two heads. Nothing in this diff touches that job.
  • Test (ubuntu-latest), Desktop Shell (windows-2022), web-shell E2E Smoke, Classify PR, Classify platform sensitivity, secret scan, CVE audit — green. The classifier logged Platform-sensitive: true on this PR again, so the gate demonstrably fires on the current head too.

Trust boundary: that classification rests on the diff footprint and the failing test identities (GitHub metadata), not on anything the log body claims.

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

Check Conclusion
Test (macos-latest, Node 22.x) ❌ failure
Test (windows-latest, Node 22.x) ❌ failure
Classify platform sensitivity ✅ success
Classify PR ✅ success
Dependency CVE audit ✅ success
Desktop Shell (ubuntu-22.04) ✅ success
Desktop Shell (windows-2022) ✅ success
Post Coverage Comment (ubuntu-latest, 22.x) ✅ success
Secret scan (TruffleHog) ✅ success
Test (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,失败项排在最前。

No sandboxed lane applies here, and it is worth saying why rather than silently omitting it: the PR's central behavioural claim — the gate fires when the classifier recognises the diff — is substantiated by the PR's own checks (the classify job green and both lanes actually running, on two consecutive heads). The one claim no pre-merge lane can settle is the nightly cron itself: no /verify or /tmux can fire GitHub's scheduler, so its first run is necessarily the day it lands. The in-PR mitigation for that gap is the watcher alerting wired here, pinned by its test; a red nightly opens an autofix-ready issue instead of failing where nobody is told.

中文说明

代码审查 —— 本次审查针对 bb599f6…(本次 re-run 触发前数秒刚落入一次 main 合并)。自上次完整审查后 diff 从八个文件增至十二个;我通读了全部内容,并亲自对照 base 树核实了各项结构性论断,而不是沿用上一轮结论:

  • Windows fork 信任路由是实质性的新增。泳道开始在 pull request 上运行后,其 runs-on 镜像 classify_pr 的信任策略:同仓库分支与有写权限的作者进入持久 ecs-win 池,其余 fork PR 一律落在托管 windows-2022。该镜像由 ci-runner-routing.test.mjs 钉住:把路由输入代入真实表达式文本并求值,逐一对照 classify 白名单的全部作者关联——两种编码中只改一处策略会在测试里失败,而不是悄悄把 fork 代码放进持久池。kill-switch 优先级与非 pull_request 事件保留池也都被钉住。
  • 分类器精化:子系统关键词只在"命名该物"时匹配——完整路径段,或连字符/下划线词干的首部——因此 packages/web-shell/**(浏览器 UI)不再在每次改动时召唤两条泳道,而 sandbox/shell.tspty-host.ts 依旧命中;两个方向与子串陷阱均有测试钉住。解析器按 \r?\n 切分并归一化反斜杠,堵上 CRLF 与 Windows 分隔符缺口。我对陷阱用例(Shellfish.tsxweb-shell/client/App.tsxplateauDetector.ts)重新推演了正则行为——成立。
  • 接线套件ci-platform-lanes.test.js)钉住了关键不变量:四个触发器以析取连接(||&& 变异会使门不可满足从而失败)、失效安全方向(!= 'false',绝不 == 'true')、nightly 影响范围(其余每个 job 都排除 schedule —— 我对照 base 文件逐一核实了全部七个,确实如此)、base commit 检出加 persist-credentials: false、以及监视器名称绑定的双向钉住(重命名 ci.yml → 监视器脱钩 → 测试失败)。
  • 主机探针hasBashMapfilehasGnuMktemp)包住两组假设 GNU/bash ≥ 4.4 的测试,在不具备的主机上跳过。这正是让脚本套件能在 macOS 泳道上加载运行的关键——修复伴随的 import 缺失前,该文件在收集阶段就抛错,156 个测试被静默漏跑。被包住的 gate 在生产中只在 Linux runner 上执行,BSD 主机上的跳过不损失任何生产覆盖;Linux 泳道照常执行。

无正确性阻塞项,无规范违规。审查台账中的已知非阻塞项(第 9 轮 Suggestion:nightly 排除钉住基于"存在性"检查;以及三条延后的 probe)仍在那里跟踪;凡钉住可以更紧的地方,我都直接复核了上线 YAML 本身,是正确的。

测试证据 —— PR 自身的 CI。未运行任何 PR 代码。被审 commit 的 CI 在获取时仍在运行(下表由 finalize job 落定后更新);红色判定来自上一个已完成 head 2f871fb5…,经 API 读取失败 job 的日志:

  • Test (windows-latest) —— 红,且每一个失败都在本 PR 未触及的包套件内:69 个分布在 13 个 packages/cli serve/review 文件(daemon-git-worktree-guardserverreview/cleanup 等),3 个在 packages/core,1 个在 packages/desktop。本 diff 仅限 .github/**scripts/tests/**,这些失败不可能由本改动引起——正是复活的泳道按设计暴露出的六周累积漂移,已立 ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481(已核实该 issue 开启且标题吻合)。注意:workspace 套件失败会在 test:scripts 之前短路,因此接线套件暂无 Windows 信号;它在 Linux 与 macOS 上均为绿。
  • Test (macos-latest) —— 所有测试通过,含 test:scripts(59 个文件、1,453 通过——即包含本 PR 分类器与接线测试的套件)。job 本身在套件结束后死于未处理的 [vitest-worker]: Timeout calling "onTaskUpdate" —— 基础设施层面的失败形态,同样记录在 ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481,非代码缺陷。
  • Desktop Shell (ubuntu-22.04) —— 此前的取消是 apt 阶段 45 分钟挂起,未及任何构建或测试;重跑后最近两个 head 均为绿。本 diff 未触及该 job。
  • Test (ubuntu-latest)Desktop Shell (windows-2022)web-shell E2E SmokeClassify PRClassify platform sensitivity、密钥扫描、CVE 审计 —— 绿。分类器在本 PR 上再次记录 Platform-sensitive: true,gate 在当前 head 上依旧实证触发。

信任边界:上述判定基于 diff 足迹与失败测试的身份(GitHub 元数据),不基于日志正文的任何声称。

CI 表见上方标记区域(finalize job 更新)。无沙箱泳道适用于此,并值得说明原因而非静默省略:本 PR 的核心行为主张——分类器识别的 diff 会触发 gate——已由 PR 自身的 checks 证实(classify job 为绿、两条泳道真实运行,且连续两个 head 均如此)。唯一任何合并前泳道都无法验证的是 nightly cron 本身:没有任何 /verify/tmux 能拉动 GitHub 的调度器,其首次运行只能是落地当天。PR 内对该缺口的补救是此处接好的监视器告警(由测试钉住):红色 nightly 会自动开一个可交给 autofix 的 issue,而不是在无人知晓处失败。

Qwen Code · qwen3.8-max

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

@qwen-code-ci-bot

qwen-code-ci-bot commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Confidence: 4/5 — clean review across every stage; the one point withheld is not about the code but about what happens next: the two revived lanes are red for pre-existing reasons, so the deferred approval below will almost certainly be withheld by the finalize job, and this PR will need a human approval call.

Stepping back: my independent proposal for this problem — keep the queue trigger, add a classified pull-request trigger, add a nightly heartbeat everything else excludes, and make a red nightly visible — is materially identical to what landed, and every place the PR goes past it has an auditable reason in the diff. The piece I'd have missed twice now (the revived triggers tripping the Windows lane's stale merge-queue checkout guard; fork PRs reaching the persistent pool through the lane's runs-on) is in both cases fixed and turned into a standing invariant test. The review rounds converged: round 10 closed with no new findings, and the items still in the ledger are Suggestion-grade test-robustness notes, each one verified by me against the shipped YAML, which is correct.

The red lanes are the whole point of this PR, not an argument against it. I classified them from the failing jobs' logs, not from the PR's framing: every Windows failure sits in a package suite the diff does not touch, and macOS's own tests all pass before an infra timeout takes the job down. Six weeks of silence surfaced in one run, exactly as predicted, and it went into #9481 where it belongs. Blocking this PR on those failures would reproduce the exact deadlock that switched the lanes off: unfixable until the lanes run, and the lanes not running until the fix lands.

Two reservations, named rather than blocking. The nightly cron cannot be exercised by any pre-merge lane — its first run is the day it lands, and the watcher alerting is what keeps a red nightly from becoming another silence. And procedurally: approval is deferred until CI settles on the reviewed commit; when the two lanes land red for their documented pre-existing reasons, the finalize job will withhold the approval and flag it, at which point a maintainer needs to make the human call with that context. (The four stale changes-requested states on this PR are early bot review rounds whose threads are all resolved; they predate the current head.)

中文说明

置信度:4/5 —— 各阶段审查全部干净;扣掉的一分不在代码本身,而在接下来会发生什么:两条复活的泳道正因预先存在的原因而红,下方的延迟批准几乎必然被 finalize job 拦下,本 PR 需要一次人工批准决定。

退一步看:我为这个问题给出的独立提案——保留队列触发器、增加带分类的 pull-request 触发器、增加排除其余一切 job 的 nightly 心跳、让红色 nightly 可见——与落地方案实质相同;PR 超出提案的每一处都能在 diff 中找到可审计的理由。连我两次都会漏掉的点(复活的触发器撞上 Windows 泳道陈旧的 merge-queue 检出守卫;fork PR 经由泳道的 runs-on 触达持久池)都已修复,并被升级为常驻不变量测试。评审轮次已收敛:第 10 轮无新发现收尾;台账中遗留的条目均为 Suggestion 级的测试健壮性注记,我逐一对照上线 YAML 核实过,是正确的。

红色泳道正是本 PR 的意义所在,而不是反对它的理由。判定来自失败 job 的日志,而非 PR 的自我陈述:Windows 的每一个失败都在 diff 未触及的包套件内,macOS 自身的测试全部通过、job 死于一个基础设施超时。六周沉默在一次运行中尽数暴露,与预言一致,并已归入 #9481。以这些失败为由阻塞本 PR,会复现当初让泳道关闭的那个死锁:不跑泳道就修不了,而泳道在修复落地前不会跑。

两点保留意见,点名而非阻塞。nightly cron 无法被任何合并前泳道演练——首次运行只能是落地当天,接好的监视器告警保证红色 nightly 不再沦为沉默。程序上:批准推迟到 CI 在被审 commit 上落定;当两条泳道因其已记录的预存原因落红时,finalize job 会拦下批准并标记,届时需要维护者带着这些上下文做出人工决定。(本 PR 上四个过期的 changes-requested 状态是早期机器人评审轮次留下的,相关线程均已解决;它们早于当前 head。)

Qwen Code · qwen3.8-max

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

@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 85.42% 85.42% 90.85% 84.41%
Core 88.59% 88.59% 90.31% 87.04%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   85.42 |    84.41 |   90.85 |   85.42 |                   
 src               |   85.82 |    81.89 |   88.03 |   85.82 |                   
  cli.ts           |   95.68 |    84.11 |     100 |   95.68 | ...60-561,565-566 
  gemini.tsx       |   73.34 |    78.04 |   80.76 |   73.34 | ...1336-1340,1467 
  ...ractiveCli.ts |   88.26 |    82.64 |   88.88 |   88.26 | ...3135,3141,3207 
  ...liCommands.ts |   88.93 |    83.21 |      80 |   88.93 | ...97-599,615,721 
  ...ActiveAuth.ts |     100 |     87.5 |     100 |     100 | 66-80             
 ...cp-integration |   73.61 |    76.47 |   93.19 |   73.61 |                   
  acpAgent.ts      |    72.5 |     76.2 |    92.3 |    72.5 | ...74,12385,12431 
  ...k-reporter.ts |     100 |       80 |     100 |     100 | 81,84,119,141     
  authMethods.ts   |      92 |       60 |     100 |      92 | 33-34             
  ...heap-probe.ts |   97.39 |    96.66 |     100 |   97.39 | 243,264-265       
  errorCodes.ts    |     100 |      100 |     100 |     100 |                   
  ...ion-skills.ts |     100 |    88.23 |     100 |     100 | 17,32             
  generation.ts    |    97.1 |    81.25 |     100 |    97.1 | 109,112           
  ...figuration.ts |     100 |     91.3 |     100 |     100 | 73,124            
  ...DirContext.ts |     100 |      100 |     100 |     100 |                   
  ...ersistence.ts |   94.95 |    92.24 |     100 |   94.95 | ...13-118,227-228 
  ...management.ts |   74.75 |     66.3 |     100 |   74.75 | ...92-496,505-509 
  ...e-download.ts |    64.7 |    62.24 |    87.5 |    64.7 | ...08-609,615-619 
 ...tegration/live |    97.5 |       88 |   92.85 |    97.5 |                   
  ...en-context.ts |   95.74 |    82.35 |     100 |   95.74 | ...0,66-67,99-100 
  ...structions.ts |     100 |      100 |     100 |     100 |                   
  ...ak-to-user.ts |   96.66 |      100 |    87.5 |   96.66 | 37-38             
  ...task-tools.ts |   98.97 |      100 |   88.88 |   98.97 | 201-202           
 ...ration/service |    97.1 |    95.89 |   93.75 |    97.1 |                   
  filesystem.ts    |    97.1 |    95.89 |   93.75 |    97.1 | ...22-123,246-247 
 ...ration/session |   91.05 |    86.62 |   95.76 |   91.05 |                   
  Session.ts       |   90.39 |    85.36 |   95.14 |   90.39 | ...60,12687-12691 
  ...entTracker.ts |   96.81 |    89.36 |      90 |   96.81 | 137-143,222       
  ...projection.ts |   98.85 |    91.59 |     100 |   98.85 | 234,250,262       
  ...stop-guard.ts |     100 |    98.07 |     100 |     100 | 37,127            
  ...eplay-page.ts |   94.19 |    86.53 |     100 |   94.19 | ...53,357,437,441 
  ...y-replayer.ts |   83.41 |    93.33 |   94.11 |   83.41 | ...30-148,266-268 
  index.ts         |       0 |        0 |       0 |       0 | 1-40              
  ...ssionUtils.ts |   89.76 |    87.32 |     100 |   89.76 | ...54-270,326-328 
  ...oal-update.ts |   98.61 |    97.29 |     100 |   98.61 | 64                
  ...lure-guard.ts |   98.32 |    97.72 |     100 |   98.32 | 294-295,340-341   
  tasksSnapshot.ts |    94.3 |     87.5 |     100 |    94.3 | 65-71             
  ...on-tracker.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...ssion/emitters |   95.65 |    92.34 |   97.14 |   95.65 |                   
  ...ageEmitter.ts |   95.36 |    92.42 |     100 |   95.36 | ...16,129-130,223 
  PlanEmitter.ts   |     100 |       90 |     100 |     100 | 66                
  base-emitter.ts  |   78.26 |    77.77 |     100 |   78.26 | 23-24,26-28       
  index.ts         |       0 |        0 |       0 |       0 | 1-10              
  ...ll-emitter.ts |   98.57 |    94.84 |     100 |   98.57 | 75-76,394-395     
 ...ession/rewrite |   96.03 |    89.79 |   94.44 |   96.03 |                   
  LlmRewriter.ts   |   94.01 |    88.23 |     100 |   94.01 | 101-102,179-183   
  ...Middleware.ts |   96.99 |    88.37 |     100 |   96.99 | 145,153-155       
  TurnBuffer.ts    |     100 |      100 |     100 |     100 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 src/agent-view    |   86.63 |     80.8 |   94.01 |   86.63 |                   
  attach-lease.ts  |     100 |    97.05 |     100 |     100 | 173               
  ...t-cli-argv.ts |     100 |     92.3 |     100 |     100 | 15                
  ...ged-detach.ts |     100 |     90.9 |     100 |     100 | 40,64             
  presentation.ts  |   94.13 |    88.72 |   94.73 |   94.13 | ...57-358,382-384 
  protocol.ts      |     100 |      100 |     100 |     100 |                   
  pty-host-env.ts  |     100 |      100 |     100 |     100 |                   
  ...st-process.ts |   88.43 |    78.79 |   94.44 |   88.43 | ...1294,1384-1386 
  pty-host.ts      |   85.25 |    87.03 |   90.69 |   85.25 | ...22-524,539-540 
  ...sor-client.ts |   80.38 |    72.81 |   77.41 |   80.38 | ...22-626,652-656 
  ...r-dispatch.ts |      98 |    85.18 |     100 |      98 | 117,173,190       
  ...or-process.ts |    83.5 |     77.3 |   98.72 |    83.5 | ...4479-4482,4485 
  ...sor-runner.ts |   82.43 |    76.82 |   80.95 |   82.43 | ...69,493,496-506 
  ...sor-server.ts |   84.39 |    83.56 |    93.1 |   84.39 | ...67-568,571-588 
  ...isor-store.ts |   94.76 |    84.95 |     100 |   94.76 | ...,966,1008,1023 
  ...nal-bridge.ts |   93.98 |    91.54 |   83.33 |   93.98 | 228-238           
  ...r-sideband.ts |   94.91 |    89.36 |     100 |   94.91 | ...75-276,299-304 
 src/commands      |   90.66 |    78.53 |   65.62 |   90.66 |                   
  auth.ts          |     100 |    83.33 |     100 |     100 | 11,14             
  channel.ts       |   55.55 |      100 |       0 |   55.55 | 18-22,30-40       
  extensions.tsx   |   96.77 |      100 |      50 |   96.77 | 39                
  hooks.tsx        |   66.66 |      100 |       0 |   66.66 | 20-24             
  mcp.ts           |   95.45 |      100 |      50 |   95.45 | 31                
  review.ts        |   98.85 |      100 |      50 |   98.85 | 98                
  serve.ts         |   89.46 |    76.02 |     100 |   89.46 | ...12-915,927,938 
  sessions.ts      |     100 |      100 |      50 |     100 |                   
  update.ts        |   98.13 |    94.44 |   66.66 |   98.13 | 82-83             
 ...mmands/channel |   89.07 |    88.55 |   90.64 |   89.07 |                   
  channel-cwd.ts   |     100 |      100 |     100 |     100 |                   
  ...l-registry.ts |    94.9 |    95.45 |      90 |    94.9 | ...21-324,369-372 
  ...entry-path.ts |      75 |       50 |     100 |      75 | 8-9               
  config-utils.ts  |   95.83 |    96.35 |     100 |   95.83 | ...03-208,266-269 
  configure.ts     |    14.7 |      100 |       0 |    14.7 | 18-21,23-84       
  daemon-worker.ts |   93.91 |    85.55 |   94.33 |   93.91 | ...1264,1271-1272 
  loop-runtime.ts  |   91.66 |      100 |      50 |   91.66 | 15,22             
  ...classifier.ts |   98.53 |    96.66 |     100 |   98.53 | 115-116,161       
  ...tact-store.ts |   93.51 |    87.65 |     100 |   93.51 | ...71,288-289,337 
  pairing.ts       |      75 |      100 |      50 |      75 | 22-28,59-70       
  pidfile.ts       |   95.55 |       90 |     100 |   95.55 | ...50-251,315-316 
  proxy.ts         |     100 |      100 |     100 |     100 |                   
  reload.ts        |    77.5 |    86.95 |      75 |    77.5 | 72-84,93-97       
  runtime.ts       |   82.43 |    86.44 |     100 |   82.43 | ...87-191,251-253 
  set.ts           |   75.72 |    85.71 |      50 |   75.72 | 65-83,111-116     
  start.ts         |    85.8 |    82.17 |      88 |    85.8 | ...85,591-594,606 
  ...ure-format.ts |   93.65 |    82.45 |     100 |   93.65 | ...42,48-49,74-75 
  status.ts        |   78.57 |    59.25 |   66.66 |   78.57 | ...36-137,150-161 
  stop.ts          |   57.83 |    82.35 |      50 |   57.83 | ...3,74-76,85-111 
 ...nds/extensions |   88.85 |    87.91 |   87.09 |   88.85 |                   
  consent.ts       |   72.53 |    90.32 |   42.85 |   72.53 | ...86-142,157-163 
  disable.ts       |     100 |       90 |     100 |     100 | 30                
  enable.ts        |     100 |    91.66 |     100 |     100 | 38                
  install.ts       |   82.95 |    81.57 |      75 |   82.95 | ...96-199,202-211 
  link.ts          |     100 |      100 |     100 |     100 |                   
  list.ts          |     100 |     90.9 |     100 |     100 | 18                
  new.ts           |     100 |      100 |     100 |     100 |                   
  settings.ts      |   99.15 |      100 |   83.33 |   99.15 | 151               
  sources.ts       |   93.42 |    87.09 |   92.85 |   93.42 | ...4-66,96-98,167 
  uninstall.ts     |   74.57 |       40 |   66.66 |   74.57 | 45-47,60-67,70-73 
  update.ts        |   96.71 |    97.05 |     100 |   96.71 | 114-118           
  utils.ts         |   75.63 |    57.14 |     100 |   75.63 | ...30-134,136-140 
 ...les/mcp-server |       0 |        0 |       0 |       0 |                   
  example.ts       |       0 |        0 |       0 |       0 | 1-60              
 ...amples/starter |       0 |        0 |       0 |       0 |                   
  example.ts       |       0 |        0 |       0 |       0 | 1-64              
 src/commands/mcp  |   90.25 |    84.61 |   83.33 |   90.25 |                   
  add.ts           |    99.3 |    96.07 |     100 |    99.3 | 154-155           
  approve.ts       |   76.19 |     87.5 |   66.66 |   76.19 | ...,89-99,114-124 
  list.ts          |    92.9 |    84.84 |      80 |    92.9 | ...79-181,199-200 
  reconnect.ts     |   78.85 |    66.66 |   85.71 |   78.85 | 42-55,169-191     
  remove.ts        |     100 |       80 |     100 |     100 | 21-25             
 ...ommands/review |   91.68 |    90.04 |   93.01 |   91.68 |                   
  agent-prompt.ts  |   94.89 |    92.99 |   97.95 |   94.89 | ...3286,3621-3701 
  base-tree.ts     |   77.02 |    80.76 |   77.77 |   77.02 | ...63-384,386-399 
  capture-local.ts |   73.58 |     90.9 |      75 |   73.58 | 112-116,163-186   
  ...k-coverage.ts |   50.71 |       35 |   66.66 |   50.71 | ...40-245,279-289 
  cleanup.ts       |   92.18 |    89.69 |    90.9 |   92.18 | ...1061,1063-1064 
  comment-body.ts  |   67.85 |    87.09 |   66.66 |   67.85 | ...30,157,159-164 
  ...ent-status.ts |   94.22 |    87.32 |    90.9 |   94.22 | ...96,462,738-758 
  ...ose-review.ts |   97.06 |    93.57 |   98.52 |   97.06 | ...5745-5789,6064 
  cost-ledger.ts   |   94.58 |     94.4 |   81.25 |   94.58 | ...53-654,694-704 
  drive.ts         |    94.1 |    92.85 |   92.85 |    94.1 | ...80-782,787-789 
  extract-step.ts  |   91.36 |    90.62 |   88.88 |   91.36 | ...90-707,714-729 
  fetch-diff.ts    |   73.75 |      100 |   66.66 |   73.75 | 77-97             
  fetch-pr.ts      |   97.29 |    92.25 |     100 |   97.29 | ...1566,1724-1729 
  findings.ts      |   96.07 |    92.17 |     100 |   96.07 | ...1271,1280-1281 
  issue-context.ts |   88.15 |     93.1 |   85.71 |   88.15 | 249-276           
  load-rules.ts    |   26.41 |      100 |   16.66 |   26.41 | ...41-153,155-156 
  match-remote.ts  |   85.55 |     92.3 |   66.66 |   85.55 | 74-79,144-150     
  meta.ts          |   79.43 |    93.75 |   66.66 |   79.43 | 123-128,147-162   
  mock-provider.ts |   95.44 |    90.25 |   89.47 |   95.44 | 145,690-709       
  parse-args.ts    |   99.42 |    96.03 |     100 |   99.42 | 657,970,1026,1062 
  plan-diff.ts     |   71.42 |      100 |   66.66 |   71.42 | 162-197           
  pr-context.ts    |   96.07 |    87.76 |     100 |   96.07 | ...2256,2356-2372 
  presubmit.ts     |   94.32 |    90.83 |   94.11 |   94.32 | ...1214,1249-1280 
  ...ish-assets.ts |    81.3 |    82.22 |   85.71 |    81.3 | ...75-479,506-552 
  ...r-findings.ts |   90.74 |    83.75 |     100 |   90.74 | ...17-422,429-430 
  repo-context.ts  |   94.62 |    90.75 |     100 |   94.62 | ...66-467,482-487 
  ...ve-anchors.ts |   78.34 |    89.28 |      75 |   78.34 | ...83-188,200-217 
  run.ts           |   82.66 |    88.54 |   94.11 |   82.66 | ...22,638-692,706 
  save-artifact.ts |    94.2 |    92.46 |   94.11 |    94.2 | ...14-617,710-713 
  scratch-tree.ts  |   95.93 |       86 |     100 |   95.93 | ...91-392,461-464 
  script-lint.ts   |   83.78 |    78.57 |   88.88 |   83.78 | ...69-783,785-807 
  submit.ts        |   94.13 |    89.45 |   94.44 |   94.13 | ...1695,1723-1760 
  test-delta.ts    |   95.75 |     92.3 |      75 |   95.75 | 470-478           
  test-efficacy.ts |   84.03 |    80.48 |   96.07 |   84.03 | ...3249,3257-3277 
  test-plan.ts     |   94.61 |    91.79 |      95 |   94.61 | ...29-832,873-874 
 ...w/__fixtures__ |     100 |      100 |     100 |     100 |                   
  ...r-default.mjs |     100 |      100 |     100 |     100 |                   
  ...der-empty.mjs |     100 |      100 |     100 |     100 |                   
  ...der-named.mjs |     100 |      100 |     100 |     100 |                   
 ...nds/review/lib |   97.35 |    94.73 |   98.61 |   97.35 |                   
  agent-briefs.ts  |   99.08 |      100 |      50 |   99.08 | 824-825           
  ...t-identity.ts |     100 |      100 |     100 |     100 |                   
  anchors.ts       |     100 |    97.04 |     100 |     100 | ...39,175,184,231 
  assets.ts        |     100 |      100 |     100 |     100 |                   
  audit-layers.ts  |   98.67 |    96.15 |     100 |   98.67 | 288-290           
  authorization.ts |    96.5 |    95.61 |     100 |    96.5 | ...54-255,629-630 
  budget.ts        |     100 |    97.95 |     100 |     100 | 887,940           
  build-budget.ts  |     100 |      100 |     100 |     100 |                   
  certification.ts |     100 |      100 |     100 |     100 |                   
  convergence.ts   |   99.47 |     97.2 |    90.9 |   99.47 | 602,820           
  coverage.ts      |   98.97 |    95.11 |     100 |   98.97 | ...1103,1648-1649 
  deadline.ts      |   98.03 |    91.66 |     100 |   98.03 | ...20,752,820,837 
  diff-flags.ts    |     100 |        0 |     100 |     100 | 75                
  diff-plan.ts     |   98.77 |    93.26 |     100 |   98.77 | ...78,301,327-328 
  disk.ts          |     100 |      100 |     100 |     100 |                   
  effort.ts        |     100 |      100 |     100 |     100 |                   
  failing-files.ts |     100 |    93.33 |     100 |     100 | 41                
  gh.ts            |   89.53 |    95.52 |   78.94 |   89.53 | ...47,384-385,412 
  git.ts           |   96.77 |    93.93 |     100 |   96.77 | 234-235,272-273   
  heavy.ts         |     100 |      100 |     100 |     100 |                   
  import-graph.ts  |   96.68 |     95.4 |     100 |   96.68 | 180-182,211-212   
  ...ntal-scope.ts |     100 |      100 |     100 |     100 |                   
  inline-counts.ts |     100 |      100 |     100 |     100 |                   
  ...audit-gate.ts |     100 |     97.5 |     100 |     100 | 135               
  ledger.ts        |     100 |      100 |     100 |     100 |                   
  local-diff.ts    |   84.86 |    90.38 |     100 |   84.86 | ...63-473,475-483 
  ...ry-context.ts |   96.61 |    95.48 |     100 |   96.61 | ...47-450,496-499 
  md-field.ts      |     100 |      100 |     100 |     100 |                   
  merge-base.ts    |     100 |      100 |     100 |     100 |                   
  narrow-diff.ts   |     100 |      100 |     100 |     100 |                   
  npm-toolchain.ts |   98.23 |    95.29 |     100 |   98.23 | ...,822,1203,1220 
  path-rules.ts    |     100 |      100 |     100 |     100 |                   
  paths.ts         |   96.96 |       95 |     100 |   96.96 | 32-33             
  prompt-record.ts |   98.03 |    94.23 |     100 |   98.03 | 293-294,300       
  receipt.ts       |     100 |      100 |     100 |     100 |                   
  remote-match.ts  |   98.03 |    94.73 |     100 |   98.03 | 109-110           
  report.ts        |   92.92 |    86.66 |     100 |   92.92 | 213-214,216-220   
  ...ry-context.ts |     100 |    98.66 |     100 |     100 | 187               
  resume.ts        |     100 |      100 |     100 |     100 |                   
  retirement.ts    |     100 |    94.36 |     100 |     100 | ...58-559,760,917 
  review-footer.ts |   99.55 |     98.1 |     100 |   99.55 | 548-549           
  ...w-settings.ts |     100 |    96.42 |     100 |     100 | 99                
  roster.ts        |     100 |    97.14 |     100 |     100 | 177,222           
  round-model.ts   |     100 |      100 |     100 |     100 |                   
  run-ledger.ts    |    98.2 |    93.87 |     100 |    98.2 | ...23,541,647,670 
  same-file.ts     |     100 |       95 |     100 |     100 | 36                
  ...boxed-exec.ts |   94.26 |    89.32 |   95.65 |   94.26 | ...49-550,728-729 
  shell-quote.ts   |     100 |      100 |     100 |     100 |                   
  stale-bundle.ts  |   98.18 |    94.04 |     100 |   98.18 | 431,472,512-513   
  test-utils.ts    |   99.04 |    91.66 |     100 |   99.04 | 75                
  toolchain.ts     |     100 |      100 |     100 |     100 |                   
  transcripts.ts   |   98.09 |    95.07 |     100 |   98.09 | ...92,438,707-708 
  ...pace-scope.ts |     100 |    96.96 |     100 |     100 | 186               
  workspaces.ts    |     100 |    96.85 |     100 |     100 | 222,452,499,512   
  ...ree-reader.ts |     100 |      100 |     100 |     100 |                   
  worktree.ts      |   89.39 |    81.78 |     100 |   89.39 | ...1813-1814,1827 
 ...w/lib/platform |   94.71 |    87.89 |   97.05 |   94.71 |                   
  aone-client.ts   |   94.94 |     87.3 |     100 |   94.94 | ...92-293,299-302 
  aone.ts          |   93.06 |    89.86 |   94.73 |   93.06 | ...34,598-603,655 
  github.ts        |   99.08 |     75.8 |     100 |   99.08 | 249-250           
  registry.ts      |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...mands/sessions |   94.11 |    89.06 |   89.47 |   94.11 |                   
  common.ts        |     100 |      100 |     100 |     100 |                   
  list.ts          |   90.96 |    86.66 |   81.81 |   90.96 | 208-219,221-222   
  ps.ts            |     100 |    94.44 |     100 |     100 | 58                
 src/config        |   94.24 |    90.33 |   95.02 |   94.24 |                   
  ...l-fallback.ts |     100 |      100 |     100 |     100 |                   
  auth.ts          |   93.36 |    88.37 |     100 |   93.36 | ...06-307,330-331 
  ...eMcpImport.ts |   87.91 |    81.52 |     100 |   87.91 | ...63-371,453-454 
  compile-cache.ts |     100 |      100 |     100 |     100 |                   
  config.ts        |   89.54 |    90.29 |   83.78 |   89.54 | ...2497,2499-2507 
  ...cy-monitor.ts |      90 |    77.27 |     100 |      90 | ...72-73,90-92,98 
  ...ust-policy.ts |   83.02 |    88.88 |     100 |   83.02 | ...02-209,232-240 
  ...heme-names.ts |     100 |      100 |     100 |     100 |                   
  ...ScopeUtils.ts |   97.56 |    88.88 |     100 |   97.56 | 67                
  environment.ts   |   94.51 |    92.55 |   95.23 |   94.51 | ...24-625,679-680 
  ...le-watcher.ts |   90.86 |    83.65 |   95.83 |   90.86 | ...23-325,370,418 
  ...resh-state.ts |   90.57 |    97.29 |   93.75 |   90.57 | 137-142,146-152   
  ...ime-reload.ts |     100 |    69.69 |     100 |     100 | ...12-113,122-123 
  hot-reload.ts    |     100 |    89.13 |     100 |     100 | 47,172-178,238    
  keyBindings.ts   |    97.4 |       50 |     100 |    97.4 | 240-243           
  ...ngsAdapter.ts |     100 |    94.11 |     100 |     100 | 64                
  ...ig-watcher.ts |   95.17 |    83.05 |     100 |   95.17 | ...78,200,292-293 
  ...er-secrets.ts |   98.97 |    96.96 |     100 |   98.97 | 85                
  mcpApprovals.ts  |   78.57 |       92 |   86.66 |   78.57 | ...18-319,324-326 
  mcpJson.ts       |     100 |      100 |     100 |     100 |                   
  mcpServers.ts    |   92.85 |     87.5 |     100 |   92.85 | 46-47             
  ...idersScope.ts |      95 |    94.73 |     100 |      95 | 11-12             
  ...abledTools.ts |     100 |      100 |     100 |     100 |                   
  ...comparison.ts |     100 |      100 |     100 |     100 |                   
  ...n-settings.ts |   99.15 |    93.93 |     100 |   99.15 | 63                
  sandboxConfig.ts |   93.33 |    93.33 |     100 |   93.33 | ...42-147,216-217 
  session-id.ts    |     100 |      100 |     100 |     100 |                   
  ...ings-cache.ts |   96.52 |    93.93 |     100 |   96.52 | 90-91,201-202     
  settings.ts      |   91.16 |    92.89 |      90 |   91.16 | ...1027,1029-1030 
  ...ingsSchema.ts |     100 |      100 |     100 |     100 |                   
  settingsUtils.ts |   80.82 |     89.2 |   85.18 |   80.82 | ...85-603,610-618 
  ...ngsWatcher.ts |   95.54 |    88.34 |     100 |   95.54 | ...28,277-278,293 
  ...d-env-keys.ts |     100 |      100 |     100 |     100 |                   
  ...l-settings.ts |     100 |      100 |     100 |     100 |                   
  ...paths-lite.ts |   89.47 |       88 |     100 |   89.47 | 43-44,53-54,56-57 
  ...precedence.ts |   98.79 |     92.3 |     100 |   98.79 | 62                
  ...tedFolders.ts |   92.53 |    93.54 |     100 |   92.53 | ...36-337,373-384 
 ...nfig/migration |   95.23 |    78.94 |   85.71 |   95.23 |                   
  index.ts         |   95.65 |     87.5 |     100 |   95.65 | 117-118           
  scheduler.ts     |   96.55 |       80 |     100 |   96.55 | 19-20             
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...ation/versions |   94.91 |      100 |     100 |   94.91 |                   
  ...-v2-shared.ts |     100 |      100 |     100 |     100 |                   
  v1-to-v2.ts      |   81.75 |      100 |     100 |   81.75 | ...28-229,231-247 
  v2-to-v3.ts      |     100 |      100 |     100 |     100 |                   
  v3-to-v4.ts      |     100 |      100 |     100 |     100 |                   
  v5-to-v4.ts      |      96 |      100 |     100 |      96 | 94-95,99          
 src/core          |     100 |      100 |     100 |     100 |                   
  auth.ts          |     100 |      100 |     100 |     100 |                   
  initializer.ts   |     100 |      100 |     100 |     100 |                   
  theme.ts         |     100 |      100 |     100 |     100 |                   
 src/dualOutput    |   75.08 |    67.64 |   71.42 |   75.08 |                   
  ...tputBridge.ts |   75.33 |    68.18 |   73.68 |   75.33 | ...09-410,418-421 
  ...utContext.tsx |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-8               
 src/export        |       0 |        0 |       0 |       0 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-7               
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 src/hooks         |     100 |      100 |     100 |     100 |                   
  ...elete-hook.ts |     100 |      100 |     100 |     100 |                   
 src/i18n          |   89.68 |    88.66 |   93.02 |   89.68 |                   
  index.ts         |   73.45 |    77.77 |      90 |   73.45 | ...70-271,294-299 
  languageUtils.ts |   98.88 |    97.01 |     100 |   98.88 | 184-185           
  languages.ts     |   93.07 |     92.3 |   85.71 |   93.07 | ...35,164-169,184 
  ...nslateKeys.ts |     100 |      100 |     100 |     100 |                   
  ...lationDict.ts |   93.33 |    66.66 |     100 |   93.33 | 15                
 src/i18n/locales  |     100 |      100 |     100 |     100 |                   
  ca.js            |     100 |      100 |     100 |     100 |                   
  de.js            |     100 |      100 |     100 |     100 |                   
  en.js            |     100 |      100 |     100 |     100 |                   
  fr.js            |     100 |      100 |     100 |     100 |                   
  ja.js            |     100 |      100 |     100 |     100 |                   
  pt.js            |     100 |      100 |     100 |     100 |                   
  ru.js            |     100 |      100 |     100 |     100 |                   
  zh-TW.js         |     100 |      100 |     100 |     100 |                   
  zh.js            |     100 |      100 |     100 |     100 |                   
 ...nonInteractive |   87.37 |    83.73 |   89.32 |   87.37 |                   
  ...ng-failure.ts |     100 |      100 |     100 |     100 |                   
  ...iveHelpers.ts |   94.95 |    91.05 |     100 |   94.95 | ...30-431,529,542 
  ...uggestions.ts |   84.29 |    70.83 |     100 |   84.29 | 70-76,92-103      
  session.ts       |   84.97 |    76.31 |   96.07 |   84.97 | ...1048,1057-1067 
  ...iagnostics.ts |    95.8 |     87.5 |   93.75 |    95.8 | ...03,277-278,289 
  types.ts         |    42.5 |      100 |   33.33 |    42.5 | ...33-634,637-638 
 ...active/control |   75.54 |    89.83 |      80 |   75.54 |                   
  ...rolContext.ts |    6.06 |        0 |       0 |    6.06 | 57-99             
  ...Dispatcher.ts |   91.95 |    92.98 |   88.88 |   91.95 | ...54-372,392,395 
  ...rolService.ts |    6.89 |        0 |       0 |    6.89 | 46-188            
 ...ol/controllers |   57.47 |     66.3 |   73.68 |   57.47 |                   
  ...Controller.ts |    42.4 |      100 |   83.33 |    42.4 | 101-105,140-223   
  ...Controller.ts |       0 |        0 |       0 |       0 | 1-56              
  ...Controller.ts |   70.04 |    62.92 |   91.66 |   70.04 | ...11-620,635-640 
  ...Controller.ts |   49.23 |       60 |      50 |   49.23 | ...07-108,111-121 
  ...Controller.ts |   53.96 |    67.08 |   66.66 |   53.96 | ...78-690,699-728 
 .../control/types |       0 |        0 |       0 |       0 |                   
  serviceAPIs.ts   |       0 |        0 |       0 |       0 | 1                 
 ...Interactive/io |   98.18 |    94.09 |   95.34 |   98.18 |                   
  ...putAdapter.ts |   98.07 |    93.18 |   98.11 |   98.07 | ...1448,1464-1465 
  ...putAdapter.ts |   96.22 |    91.66 |   85.71 |   96.22 | 52-53             
  ...nputReader.ts |     100 |    94.73 |     100 |     100 | 67                
  ...putAdapter.ts |   98.51 |      100 |   90.47 |   98.51 | 90-91,131-132     
  ...projection.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/patches       |       0 |        0 |       0 |       0 |                   
  is-in-ci.ts      |       0 |        0 |       0 |       0 | 1-17              
 src/remoteInput   |   87.31 |    75.32 |   88.23 |   87.31 |                   
  ...utContext.tsx |     100 |      100 |     100 |     100 |                   
  ...putWatcher.ts |   88.01 |       76 |   93.33 |   88.01 | ...49-350,361-364 
  index.ts         |       0 |        0 |       0 |       0 | 1-8               
 src/runtime       |   99.69 |    96.28 |     100 |   99.69 |                   
  ...livery-ipc.ts |     100 |    91.17 |     100 |     100 | 94,106,134        
  ...l-delivery.ts |     100 |      100 |     100 |     100 |                   
  cpu-percent.ts   |     100 |      100 |     100 |     100 |                   
  ...ion-source.ts |     100 |      100 |     100 |     100 |                   
  ...erver-name.ts |     100 |      100 |     100 |     100 |                   
  ...-constants.ts |     100 |      100 |     100 |     100 |                   
  ...-summaries.ts |   86.66 |       50 |     100 |   86.66 | 11,19             
  ...ber-errors.ts |     100 |    95.32 |     100 |     100 | 53,93-94,172,192  
  ...ls-mapping.ts |     100 |      100 |     100 |     100 |                   
 src/serve         |   87.38 |    84.78 |   90.83 |   87.38 |                   
  ...extra-args.ts |     100 |      100 |     100 |     100 |                   
  ...tp-enabled.ts |     100 |      100 |     100 |     100 |                   
  ...ion-bridge.ts |     100 |      100 |     100 |     100 |                   
  auth.ts          |   93.99 |     91.5 |     100 |   93.99 | ...29-430,433-435 
  ...em-adapter.ts |     100 |      100 |     100 |     100 |                   
  capabilities.ts  |     100 |    98.07 |     100 |     100 | 703               
  ...cp-command.ts |     100 |      100 |     100 |     100 |                   
  ...horization.ts |   92.79 |    93.54 |    87.5 |   92.79 | 75-80,135-136     
  ...op-mcp-ipc.ts |   81.06 |    73.68 |   94.11 |   81.06 | ...37-242,267,289 
  ...nt-service.ts |    94.1 |    86.98 |     100 |    94.1 | ...75-477,484,486 
  ...-selection.ts |     100 |      100 |     100 |     100 |                   
  ...ings-store.ts |   89.64 |    94.16 |   96.55 |   89.64 | ...57-269,521-524 
  ...ebhook-ipc.ts |    98.5 |     87.5 |     100 |    98.5 | 47                
  ...iagnostics.ts |     100 |      100 |     100 |     100 |                   
  ...worker-env.ts |     100 |      100 |     100 |     100 |                   
  ...rker-group.ts |   87.27 |     85.2 |     100 |   87.27 | ...10,816-820,838 
  ...er-manager.ts |   89.39 |    83.88 |   93.33 |   89.39 | ...98,711,722-724 
  ...horization.ts |     100 |      100 |     100 |     100 |                   
  ...tartup-ipc.ts |   97.72 |    96.66 |     100 |   97.72 | 88-89             
  ...supervisor.ts |   92.54 |    84.53 |   97.14 |   92.54 | ...1489,1543-1547 
  ...e-grouping.ts |     100 |    94.28 |     100 |     100 | 71,137            
  core-runtime.ts  |     100 |      100 |     100 |     100 |                   
  ...ub-session.ts |    90.9 |     78.6 |   94.73 |    90.9 | ...1001,1022-1027 
  ...tree-guard.ts |   93.87 |    89.81 |     100 |   93.87 | ...3227,3297-3301 
  daemon-logger.ts |   82.82 |    78.68 |   92.04 |   82.82 | ...1775,1802-1808 
  ...y-pressure.ts |     100 |    96.96 |     100 |     100 | 135               
  ...trics-ring.ts |     100 |      100 |     100 |     100 |                   
  ...s-provider.ts |   68.04 |    52.77 |     100 |   68.04 | ...44-249,282-290 
  daemon-status.ts |   98.69 |    91.96 |     100 |   98.69 | ...1590,1592-1593 
  debug-mode.ts    |     100 |      100 |     100 |     100 |                   
  env-snapshot.ts  |   93.37 |    85.18 |     100 |   93.37 | 114-117,195-202   
  ...-scheduler.ts |   87.34 |    83.87 |     100 |   87.34 | 33-36,48-50,79-81 
  ...d-provider.ts |   92.06 |    87.09 |     100 |   92.06 | ...72,287-293,316 
  ...h-settings.ts |   94.94 |    90.45 |     100 |   94.94 | ...30,708,724,734 
  fast-path.ts     |   91.38 |       82 |   95.45 |   91.38 | ...46-555,633-634 
  ...ration-sse.ts |   42.55 |    33.33 |     100 |   42.55 | 23-24,30,33-56    
  health-query.ts  |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-149             
  ...e-observer.ts |   89.89 |    83.24 |      96 |   89.89 | ...11-512,541-543 
  ...back-binds.ts |     100 |    88.88 |     100 |     100 | 32                
  ...-workspace.ts |   91.58 |    86.48 |     100 |   91.58 | ...44-145,156-157 
  ...pp-sandbox.ts |   96.72 |    95.23 |     100 |   96.72 | 41-42             
  ...iders-edit.ts |     100 |    82.14 |     100 |     100 | 58-60,65,81       
  ...ory-picker.ts |     100 |    86.95 |     100 |     100 | 36,66,92          
  ...-with-auth.ts |     100 |      100 |     100 |     100 |                   
  ...sion-audit.ts |     100 |      100 |   93.33 |     100 |                   
  ...nal-ledger.ts |    94.9 |    84.78 |     100 |    94.9 | ...81,302,361-362 
  rate-limit.ts    |   92.68 |    88.29 |     100 |   92.68 | ...89-291,303-305 
  ...qwen-serve.ts |   84.04 |    80.69 |   76.06 |   84.04 | ...7995,8013-8017 
  ...tup-errors.ts |     100 |      100 |     100 |     100 |                   
  sandbox.ts       |   45.52 |    59.42 |   76.92 |   45.52 | ...1050,1062-1085 
  ...-keepalive.ts |   94.31 |    89.28 |     100 |   94.31 | ...37,541-542,581 
  ...-lifecycle.ts |     100 |      100 |     100 |     100 |                   
  ...-lifecycle.ts |   89.16 |    90.29 |   86.95 |   89.16 | ...24-325,330-334 
  serve-token.ts   |     100 |      100 |     100 |     100 |                   
  server.ts        |   91.16 |    90.45 |   71.42 |   91.16 | ...3012,3042-3043 
  ...-admission.ts |   99.13 |    95.94 |     100 |   99.13 | 308-309           
  ...on-helpers.ts |     100 |      100 |     100 |     100 |                   
  ...-redaction.ts |     100 |      100 |     100 |     100 |                   
  ...t-event-id.ts |     100 |    95.23 |     100 |     100 | 12                
  ...-admission.ts |   98.71 |    89.65 |     100 |   98.71 | 68                
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...ion-limits.ts |     100 |      100 |     100 |     100 |                   
  ...t-sessions.ts |   93.72 |    77.93 |     100 |   93.72 | ...51,854,867-869 
  ...l-resolver.ts |   90.32 |    66.66 |     100 |   90.32 | 16,45-46          
  ...ell-static.ts |   93.45 |    86.88 |     100 |   93.45 | ...77-280,323-326 
  ...ace-agents.ts |   66.13 |    70.57 |   92.68 |   66.13 | ...2246,2256-2266 
  ...generation.ts |    95.4 |    82.35 |   66.66 |    95.4 | 55-56,78,92       
  ...-git-state.ts |     100 |    91.93 |    90.9 |     100 | 161,172,202,265   
  ...ace-inputs.ts |     100 |      100 |     100 |     100 |                   
  ...ace-memory.ts |      83 |    74.54 |     100 |      83 | ...30-537,597-604 
  ...ers-status.ts |    98.6 |     79.8 |     100 |    98.6 | 108,136,179,182   
  ...tion-store.ts |   89.67 |    88.27 |   92.59 |   89.67 | ...91-400,411-414 
  ...e-registry.ts |   94.98 |    90.55 |     100 |   94.98 | ...67-568,575-576 
  ...e-remember.ts |   98.23 |    92.56 |     100 |   98.23 | ...36,340-345,386 
  ...te-runtime.ts |   89.88 |     90.9 |     100 |   89.88 | ...05-206,274-295 
  ...me-storage.ts |     100 |      100 |     100 |     100 |                   
  ...visibility.ts |     100 |      100 |     100 |     100 |                   
  ...management.ts |   72.63 |    72.83 |   96.15 |   72.63 | ...88-889,896-900 
  ...lls-status.ts |     100 |    95.45 |     100 |     100 | 152               
  ...reconciler.ts |   91.63 |    84.09 |     100 |   91.63 | ...71-273,306-307 
 ...serve/acp-http |    80.4 |    80.15 |   94.53 |    80.4 |                   
  ...r-registry.ts |   96.92 |    94.87 |     100 |   96.92 | 184-187           
  client-mcp-ws.ts |   54.85 |    58.62 |   72.72 |   54.85 | ...99-300,304-305 
  ...n-registry.ts |   93.03 |    84.13 |   98.52 |   93.03 | ...1624,1671-1682 
  dispatch.ts      |   75.65 |     77.1 |   93.44 |   75.65 | ...5536,5593-5599 
  index.ts         |   82.68 |    79.74 |   91.22 |   82.68 | ...2424,2510-2511 
  json-rpc.ts      |     100 |    96.96 |     100 |     100 | 92                
  ...ach-budget.ts |     100 |      100 |     100 |     100 |                   
  safe-ws-send.ts  |   52.94 |    71.42 |     100 |   52.94 | 33-42,47-55       
  sse-stream.ts    |   98.26 |    88.75 |     100 |   98.26 | 87-88,117         
  ...ort-stream.ts |       0 |        0 |       0 |       0 | 1                 
  ws-stream.ts     |   94.06 |    89.09 |     100 |   94.06 | 50,55,134,138-141 
 src/serve/auth    |   86.86 |     79.7 |   93.87 |   86.86 |                   
  device-flow.ts   |   96.35 |    80.57 |   97.61 |   96.35 | ...1358,1453,1519 
  ...w-provider.ts |   44.24 |    74.07 |   71.42 |   44.24 | ...23-284,297,301 
 ...rve/cdp-tunnel |   87.73 |    76.21 |    97.5 |   87.73 |                   
  ...r-emulator.ts |   93.27 |    77.77 |     100 |   93.27 | ...53-256,282-283 
  ...verse-link.ts |      88 |    76.19 |     100 |      88 | ...28-329,420-423 
  ...l-registry.ts |     100 |      100 |     100 |     100 |                   
  cdp-ws.ts        |   76.28 |    61.29 |    87.5 |   76.28 | ...13-217,223-228 
 ...nel/acceptance |    6.12 |    57.89 |   46.15 |    6.12 |                   
  ...helpers.d.mts |       0 |        0 |       0 |       0 | 1                 
  ...e-helpers.mjs |   97.64 |    70.96 |     100 |   97.64 | 22-23             
  ...mcp-smoke.mjs |       0 |        0 |       0 |       0 | 1-124             
  ...cceptance.mjs |       0 |        0 |       0 |       0 | 1-473             
  ...re-server.mjs |       0 |        0 |       0 |       0 | 1-59              
  ...ols-smoke.mjs |       0 |        0 |       0 |       0 | 1-268             
  real-tab.mjs     |       0 |        0 |       0 |       0 | 1-218             
  ...al-chrome.mjs |       0 |        0 |       0 |       0 | 1-223             
 .../conversations |   90.17 |    85.32 |      95 |   90.17 |                   
  ...e-activity.ts |     100 |      100 |     100 |     100 |                   
  ...ime-errors.ts |     100 |      100 |     100 |     100 |                   
  ...me-manager.ts |     100 |      100 |     100 |     100 |                   
  ...-ownership.ts |   87.33 |    83.58 |   88.46 |   87.33 | ...57-558,601-602 
  ...-workspace.ts |   89.09 |    78.66 |     100 |   89.09 | ...91-292,339-340 
 src/serve/fs      |   87.77 |    82.34 |     100 |   87.77 |                   
  audit.ts         |     100 |    96.29 |     100 |     100 | 211               
  errors.ts        |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...x-registry.ts |     100 |      100 |     100 |     100 |                   
  paths.ts         |   77.64 |    74.01 |     100 |   77.64 | ...65,594-598,611 
  policy.ts        |   90.52 |    89.18 |     100 |   90.52 | 172-180           
  text-cursor.ts   |   88.23 |       90 |     100 |   88.23 | 74-77,92-95       
  ...ile-system.ts |   88.02 |    81.85 |     100 |   88.02 | ...3027,3037-3038 
 src/serve/live    |   77.23 |     70.5 |   90.46 |   77.23 |                   
  discovery.ts     |   85.89 |    82.05 |    91.3 |   85.89 | ...73-579,592-593 
  ...oordinator.ts |   82.67 |    76.63 |   97.01 |   82.67 | ...1319,1351-1353 
  ...-installer.ts |    64.3 |    82.35 |   80.76 |    64.3 | ...45-446,460-472 
  ...oordinator.ts |    76.7 |    67.47 |   85.71 |    76.7 | ...1885,1976-1977 
  ...controller.ts |   67.82 |    79.66 |      75 |   67.82 | ...66-278,287-295 
  ...sk-service.ts |   87.45 |    65.93 |   95.65 |   87.45 | ...1186-1187,1215 
  ...redentials.ts |   96.26 |    93.47 |     100 |   96.26 | 91-94             
  ...me-session.ts |   65.63 |    57.24 |   88.88 |   65.63 | ...2270,2275-2282 
  ...up-context.ts |   94.85 |    77.39 |     100 |   94.85 | ...18,327-330,350 
  types.ts         |     100 |      100 |     100 |     100 |                   
 .../local-control |   82.89 |    88.77 |      90 |   82.89 |                   
  credentials.ts   |   96.42 |    95.45 |     100 |   96.42 | 109-110           
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...interfaces.ts |   43.58 |    82.75 |   42.85 |   43.58 | ...09-117,130-142 
  ...r-identity.ts |     100 |    85.71 |     100 |     100 | 61                
  service.ts       |    93.4 |       90 |     100 |    93.4 | ...20-222,313-315 
 src/serve/routes  |   86.06 |    81.18 |   95.24 |   86.06 |                   
  a2ui-action.ts   |   96.84 |     88.5 |    87.5 |   96.84 | ...70-272,309-311 
  capabilities.ts  |   98.73 |    96.15 |     100 |   98.73 | 82                
  ...nel-notify.ts |   79.16 |    85.18 |     100 |   79.16 | ...03-104,120-126 
  ...l-webhooks.ts |   93.56 |    84.09 |     100 |   93.56 | ...42,292,332,334 
  daemon-status.ts |   85.71 |    83.33 |     100 |   85.71 | 101-108           
  goals.ts         |   98.94 |    91.17 |     100 |   98.94 | 143               
  health.ts        |   99.09 |    91.17 |     100 |   99.09 | 147               
  live-setup.ts    |   33.33 |     37.5 |      50 |   33.33 | ...18-123,130-135 
  live.ts          |   84.61 |    76.47 |     100 |   84.61 | ...04,106-111,131 
  permission.ts    |     100 |     92.3 |     100 |     100 | 50,98             
  ...uled-tasks.ts |   87.94 |    85.26 |   93.75 |   87.94 | ...1539,1584-1585 
  ...on-runtime.ts |   91.42 |       90 |     100 |   91.42 | 56-64             
  session.ts       |   87.03 |    82.88 |   93.57 |   87.03 | ...6865,6867-6868 
  sse-events.ts    |   86.85 |    85.64 |   94.11 |   86.85 | ...18-929,932,939 
  usage-stats.ts   |     100 |    95.45 |     100 |     100 | 118               
  ...space-auth.ts |   85.55 |    75.64 |     100 |   85.55 | ...21-326,331,345 
  ...el-control.ts |   86.26 |    78.94 |     100 |   86.26 | ...17-318,339-347 
  ...management.ts |   90.35 |    78.94 |     100 |   90.35 | ...52-553,576-577 
  ...d-contacts.ts |   83.62 |    94.59 |     100 |   83.62 | 123,125-142       
  ...controller.ts |   83.33 |    80.47 |      90 |   83.33 | ...1056,1061,1068 
  ...extensions.ts |    88.8 |    77.83 |   93.84 |    88.8 | ...2329,2374-2375 
  ...-file-read.ts |      91 |    80.91 |     100 |      91 | ...20-621,624-625 
  ...file-write.ts |   89.72 |    79.35 |     100 |   89.72 | ...05,719-726,807 
  ...t-branches.ts |   75.04 |     66.4 |     100 |   75.04 | ...99-604,613-620 
  ...e-git-diff.ts |   97.19 |    89.58 |     100 |   97.19 | 157-158,185-187   
  ...ce-git-log.ts |     100 |       95 |     100 |     100 | 48,73             
  workspace-git.ts |   74.71 |     87.5 |     100 |   74.71 | 83-104            
  ...github-prs.ts |   88.26 |    63.46 |     100 |   88.26 | ...38-239,264-265 
  ...-lifecycle.ts |   95.23 |    75.75 |     100 |   95.23 | ...50-151,186-187 
  ...al-control.ts |   74.17 |    69.23 |     100 |   74.17 | ...18,220-226,231 
  ...management.ts |   87.47 |       85 |     100 |   87.47 | ...1733,1743-1748 
  ...cp-control.ts |    73.2 |    67.54 |   85.71 |    73.2 | ...27-633,644-645 
  ...ace-models.ts |   95.53 |    89.74 |     100 |   95.53 | ...52-157,296-297 
  ...ermissions.ts |    77.9 |    72.41 |     100 |    77.9 | ...69-277,298-316 
  ...e-settings.ts |   75.67 |       75 |     100 |   75.67 | ...15-726,732-733 
  ...tup-github.ts |   77.97 |    70.58 |   84.21 |   77.97 | ...46-352,397-398 
  ...ace-skills.ts |    76.9 |    87.15 |     100 |    76.9 | ...29-354,360-394 
  ...ace-status.ts |   82.57 |    74.48 |     100 |   82.57 | ...71-473,477-478 
  ...pace-tools.ts |   75.94 |    69.69 |   66.66 |   75.94 | ...59-164,193-194 
  ...pace-trust.ts |   76.92 |     67.1 |      80 |   76.92 | ...38-343,351-352 
  ...pace-voice.ts |   91.33 |    81.02 |     100 |   91.33 | ...70-673,676-678 
 src/serve/server  |   92.66 |    90.29 |   97.22 |   92.66 |                   
  access-log.ts    |   98.73 |    97.26 |     100 |   98.73 | 119,196           
  ...-timestamp.ts |     100 |      100 |     100 |     100 |                   
  ...er-helpers.ts |   63.82 |    78.15 |   81.81 |   63.82 | ...16,330,332-347 
  ...w-registry.ts |    98.8 |    81.81 |     100 |    98.8 | 107               
  ...r-handlers.ts |   97.87 |       80 |     100 |   97.87 | 27                
  ...r-response.ts |   87.73 |    76.19 |     100 |   87.73 | ...97,814,877-886 
  fs-factory.ts    |     100 |    95.52 |     100 |     100 | 77,144,200        
  ...branch-ops.ts |     100 |      100 |     100 |     100 |                   
  ...list-cache.ts |   99.01 |    95.52 |     100 |   99.01 | 184-185           
  ...t-deadline.ts |     100 |      100 |     100 |     100 |                   
  ...iter-setup.ts |      65 |       80 |   33.33 |      65 | 30-35,38-43,47-48 
  ...st-helpers.ts |   95.13 |    95.09 |     100 |   95.13 | ...66-168,423-428 
  self-origin.ts   |   76.19 |       80 |     100 |   76.19 | 45-54             
  ...e-features.ts |      95 |     87.5 |     100 |      95 | 182-188           
  ...on-archive.ts |   91.14 |    89.34 |   97.56 |   91.14 | ...1090,1153-1154 
  ...ion-export.ts |     100 |       95 |     100 |     100 | 64                
  session-list.ts  |      97 |    93.45 |     100 |      97 | ...1068,1273-1277 
  ...ry-context.ts |    87.5 |       50 |     100 |    87.5 | 49-50             
  telemetry.ts     |   99.06 |    97.26 |     100 |   99.06 | ...04,873,952-954 
 src/serve/voice   |    92.7 |    91.53 |   97.72 |    92.7 |                   
  ...ice-config.ts |   84.81 |       30 |     100 |   84.81 | 91-100,104-105    
  voice-ws.ts      |   91.58 |    93.44 |      96 |   91.58 | ...68,483,521-523 
  ...oordinator.ts |     100 |    98.24 |     100 |     100 | 176               
 ...kspace-service |    90.9 |    88.03 |   91.66 |    90.9 |                   
  index.ts         |   90.41 |    87.29 |      90 |   90.41 | ...1505-1509,1512 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/services      |   92.69 |    89.67 |   98.13 |   92.69 |                   
  ...mandLoader.ts |     100 |       95 |     100 |     100 | 106               
  ...killLoader.ts |   97.19 |    85.71 |     100 |   97.19 | 142,153-154       
  ...andService.ts |   98.73 |      100 |     100 |   98.73 | 107               
  ...mandLoader.ts |   87.09 |    83.07 |     100 |   87.09 | ...35-340,345-350 
  ...omptLoader.ts |   79.55 |    88.42 |   85.71 |   79.55 | ...48,178,245-246 
  ...mandLoader.ts |   97.77 |     92.3 |     100 |   97.77 | 176,183-184       
  ...nd-factory.ts |   91.42 |    91.66 |     100 |   91.42 | 128,137-144       
  ...ation-tool.ts |     100 |    95.45 |     100 |     100 | 125               
  ...ndMetadata.ts |   98.23 |    96.72 |     100 |   98.23 | 83,87             
  commandUtils.ts  |      96 |     90.9 |     100 |      96 | 48                
  ...and-parser.ts |   90.69 |    85.71 |     100 |   90.69 | 63-66             
  ...ionService.ts |     100 |      100 |     100 |     100 |                   
  prompt-stash.ts  |   96.66 |    92.85 |     100 |   96.66 | 34-35             
  ...tree-lease.ts |   92.14 |    92.42 |     100 |   92.14 | ...91-296,329-330 
  ...low-loader.ts |     100 |    96.29 |     100 |     100 | 88                
  setup-github.ts  |    90.8 |    80.95 |     100 |    90.8 | ...49-450,457-458 
  ...-args-file.ts |   93.93 |    91.66 |    87.5 |   93.93 | 208-210,224-230   
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...e-keyterms.ts |   98.64 |    95.77 |     100 |   98.64 | 116,142-143       
  voice-model.ts   |     100 |      100 |     100 |     100 |                   
  voice-service.ts |    90.4 |    87.87 |     100 |    90.4 | ...81,288,353-358 
  ...e-settings.ts |     100 |    95.23 |     100 |     100 | 19                
  ...ranscriber.ts |   91.77 |    87.11 |   97.22 |   91.77 | ...96-898,901-903 
 ...s/housekeeping |      93 |    88.34 |      95 |      93 |                   
  scheduler.ts     |      93 |    88.34 |      95 |      93 | ...57-359,411-415 
 ...rvices/insight |     100 |      100 |     100 |     100 |                   
  dates.ts         |     100 |      100 |     100 |     100 |                   
 ...ght/generators |   88.94 |    86.86 |   96.29 |   88.94 |                   
  DataProcessor.ts |   88.31 |    86.84 |      95 |   88.31 | ...1368,1372-1379 
  ...tGenerator.ts |   98.24 |    85.71 |     100 |   98.24 | 47                
  ...teRenderer.ts |     100 |      100 |     100 |     100 |                   
 .../insight/types |       0 |       50 |      50 |       0 |                   
  ...sightTypes.ts |       0 |        0 |       0 |       0 |                   
  ...sightTypes.ts |       0 |        0 |       0 |       0 | 1                 
 ...mpt-processors |   97.27 |    94.25 |     100 |   97.27 |                   
  ...tProcessor.ts |     100 |      100 |     100 |     100 |                   
  ...eProcessor.ts |   94.52 |       85 |     100 |   94.52 | 46-47,93-94       
  ...tionParser.ts |     100 |      100 |     100 |     100 |                   
  ...lProcessor.ts |   97.41 |    95.83 |     100 |   97.41 | 96-99             
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/services/tips |   97.27 |    84.61 |     100 |   97.27 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  tipHistory.ts    |   92.59 |       70 |     100 |   92.59 | ...24,146,153,162 
  tipRegistry.ts   |     100 |      100 |     100 |     100 |                   
  tipScheduler.ts  |     100 |    91.66 |     100 |     100 | 55                
 src/startup       |   88.99 |    83.47 |    90.9 |   88.99 |                   
  ...p-prefetch.ts |   98.09 |    94.23 |    87.5 |   98.09 | 50,209,225-226    
  ...reeStartup.ts |   80.53 |     74.6 |     100 |   80.53 | ...94,403,409-412 
 src/test-utils    |    94.6 |    76.66 |      80 |    94.6 |                   
  ci-env.ts        |      88 |     62.5 |     100 |      88 | 22-23,28          
  ...omMatchers.ts |   69.69 |       50 |      50 |   69.69 | 32-35,37-39,45-47 
  ...mised-lock.ts |     100 |      100 |   66.66 |     100 |                   
  ...lot-client.ts |     100 |    66.66 |     100 |     100 | 31,39             
  ...andContext.ts |     100 |      100 |     100 |     100 |                   
  render.tsx       |     100 |      100 |     100 |     100 |                   
 src/ui            |   70.85 |    77.49 |   72.04 |   70.85 |                   
  App.tsx          |   33.33 |       75 |   33.33 |   33.33 | 32-86             
  AppContainer.tsx |   76.09 |       72 |   69.44 |   76.09 | ...4301,4417-4423 
  ...tionNudge.tsx |    9.58 |      100 |       0 |    9.58 | 24-94             
  ...ackDialog.tsx |    30.3 |      100 |       0 |    30.3 | 26-76             
  ...tionNudge.tsx |    7.69 |      100 |       0 |    7.69 | 25-103            
  colors.ts        |   63.63 |      100 |   41.17 |   63.63 | ...52,54-55,60-61 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...AutoUpdate.ts |   93.54 |    94.64 |      90 |   93.54 | 126,131,202-213   
  keyMatchers.ts   |   95.91 |    97.14 |     100 |   95.91 | 25-26             
  ...tic-colors.ts |     100 |      100 |     100 |     100 |                   
  ...one-update.ts |   39.81 |    77.44 |   62.16 |   39.81 | ...1193,1196-1215 
  ...ractiveUI.tsx |   71.53 |    75.47 |    62.5 |   71.53 | ...11,338,405-410 
  ...inePresets.ts |   96.27 |    83.87 |     100 |   96.27 | ...97,402,410-412 
  systemInfo.ts    |   95.09 |    90.27 |     100 |   95.09 | ...54-255,260-264 
  ...InfoFields.ts |    87.5 |    65.85 |     100 |    87.5 | ...24-125,146-147 
  textConstants.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...e-relaunch.ts |   89.61 |    86.66 |      50 |   89.61 | 56-61,83-84       
 src/ui/auth       |   58.76 |    66.66 |   51.06 |   58.76 |                   
  AuthDialog.tsx   |   59.01 |     42.1 |   16.66 |   59.01 | ...25,332-354,358 
  ...nProgress.tsx |       0 |        0 |       0 |       0 | 1-64              
  ...etupSteps.tsx |   60.21 |    70.73 |   57.69 |   60.21 | ...90,794,803,806 
  useAuth.ts       |   94.83 |       75 |     100 |   94.83 | ...33-234,253-259 
  ...rSetupFlow.ts |   43.18 |    33.33 |      50 |   43.18 | ...78-399,416-459 
 src/ui/commands   |   84.24 |    84.25 |   91.33 |   84.24 |                   
  aboutCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...or-command.ts |     100 |    95.65 |     100 |     100 | 104,182           
  agentsCommand.ts |   83.78 |      100 |      60 |   83.78 | 30-32,42-44       
  ...odeCommand.ts |    93.1 |    95.23 |     100 |    93.1 | 77-82             
  arenaCommand.ts  |   63.89 |    65.71 |   65.21 |   63.89 | ...01-606,691-699 
  authCommand.ts   |     100 |      100 |     100 |     100 |                   
  branchCommand.ts |     100 |      100 |     100 |     100 |                   
  btwCommand.ts    |   94.32 |    77.41 |     100 |   94.32 | 35-36,114-119     
  bugCommand.ts    |     100 |    77.77 |     100 |     100 | 28,62             
  cdCommand.ts     |    92.3 |    82.75 |     100 |    92.3 | ...,94-99,178,187 
  clearCommand.ts  |    80.9 |    70.83 |     100 |    80.9 | ...28-129,137-146 
  commands.ts      |   97.45 |    96.66 |     100 |   97.45 | 153-155           
  ...essCommand.ts |   80.71 |     64.7 |     100 |   80.71 | ...05-206,220-223 
  ...astCommand.ts |   84.75 |    76.47 |     100 |   84.75 | ...96-102,130-135 
  ...ig-command.ts |   93.12 |    88.42 |     100 |   93.12 | ...07-315,321-323 
  ...extCommand.ts |   74.79 |    74.39 |   84.61 |   74.79 | ...89-622,633-634 
  copyCommand.ts   |    98.7 |    96.29 |     100 |    98.7 | 66-67,172,272,323 
  ...or-command.ts |   85.95 |    80.55 |   88.88 |   85.95 | ...68-274,298-309 
  deleteCommand.ts |     100 |      100 |     100 |     100 |                   
  diffCommand.ts   |     100 |    87.87 |     100 |     100 | ...63,231-232,245 
  ...ryCommand.tsx |   90.56 |    87.83 |    90.9 |   90.56 | ...75-280,327-334 
  docsCommand.ts   |     100 |     90.9 |     100 |     100 | 26                
  doctorChecks.ts  |   70.31 |    74.57 |     100 |   70.31 | ...95-301,325-341 
  doctorCommand.ts |   70.16 |    84.61 |      95 |   70.16 | ...29-679,682-816 
  dreamCommand.ts  |   85.45 |    88.88 |     100 |   85.45 | 58-65             
  editorCommand.ts |     100 |      100 |     100 |     100 |                   
  ...rt-command.ts |   80.48 |       75 |     100 |   80.48 | 49-54,69-72,93-98 
  effort-utils.ts  |     100 |      100 |     100 |     100 |                   
  exportCommand.ts |   98.25 |    91.02 |     100 |   98.25 | ...81,198-199,364 
  ...onsCommand.ts |   52.31 |    56.25 |   69.23 |   52.31 | ...09,277-329,390 
  forgetCommand.ts |     100 |       90 |     100 |     100 | 59                
  forkCommand.ts   |     100 |    94.11 |     100 |     100 | 96,147            
  goalCommand.ts   |     100 |    96.49 |     100 |     100 | 139,192           
  helpCommand.ts   |     100 |      100 |     100 |     100 |                   
  ...oryCommand.ts |     100 |      100 |     100 |     100 |                   
  hooksCommand.ts  |   81.25 |    65.71 |   85.71 |   81.25 | ...,86-93,131-132 
  ideCommand.ts    |   60.75 |    64.28 |   41.17 |   60.75 | ...05-306,310-324 
  ...figCommand.ts |   52.83 |    81.25 |      70 |   52.83 | ...74-319,321-330 
  initCommand.ts   |   91.86 |       80 |     100 |   91.86 | 48,83-88          
  ...ghtCommand.ts |   77.87 |    71.42 |     100 |   77.87 | ...44-245,250-272 
  ...ageCommand.ts |   94.44 |    90.14 |     100 |   94.44 | ...13-214,241-251 
  learn-command.ts |     100 |      100 |     100 |     100 |                   
  lspCommand.ts    |     100 |    86.95 |     100 |     100 | 31,102-103        
  mcpCommand.ts    |     100 |      100 |     100 |     100 |                   
  memoryCommand.ts |     100 |      100 |     100 |     100 |                   
  modelCommand.ts  |   86.01 |    85.76 |     100 |   86.01 | ...1093,1127-1132 
  ...onsCommand.ts |     100 |      100 |     100 |     100 |                   
  planCommand.ts   |   78.82 |    76.92 |     100 |   78.82 | 30-35,51-56,68-73 
  quitCommand.ts   |     100 |      100 |     100 |     100 |                   
  recapCommand.ts  |   21.81 |      100 |      50 |   21.81 | 24-73             
  ...ns-command.ts |   98.83 |    81.81 |     100 |   98.83 | 100               
  ...berCommand.ts |     100 |     87.5 |     100 |     100 | 46                
  renameCommand.ts |    89.6 |       90 |     100 |    89.6 | ...72-176,212-219 
  ...oreCommand.ts |   90.96 |    86.04 |     100 |   90.96 | ...41-146,177-178 
  resumeCommand.ts |     100 |      100 |     100 |     100 |                   
  rewindCommand.ts |   81.25 |      100 |      50 |   81.25 | 20-22             
  ...ngsCommand.ts |     100 |      100 |     100 |     100 |                   
  ...hubCommand.ts |   89.47 |       75 |      80 |   89.47 | 54-59             
  skillsCommand.ts |   78.82 |    81.81 |     100 |   78.82 | 37-52,78,97       
  statsCommand.ts  |   90.65 |    76.73 |     100 |   90.65 | ...30-733,825-832 
  ...ineCommand.ts |     100 |      100 |     100 |     100 |                   
  ...aryCommand.ts |   73.04 |     82.3 |      90 |   73.04 | ...20-547,561-565 
  tasksCommand.ts  |   77.33 |    72.13 |     100 |   77.33 | ...46-150,173-178 
  ...tupCommand.ts |     100 |      100 |     100 |     100 |                   
  themeCommand.ts  |     100 |      100 |     100 |     100 |                   
  toolsCommand.ts  |     100 |      100 |     100 |     100 |                   
  trustCommand.ts  |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...te-command.ts |     100 |    94.11 |     100 |     100 | 74,148            
  vimCommand.ts    |     100 |      100 |     100 |     100 |                   
  voice-command.ts |   93.63 |       88 |     100 |   93.63 | 36,98-103         
  ...owsCommand.ts |   94.38 |    85.29 |     100 |   94.38 | ...78-183,282-287 
 src/ui/components |   73.25 |    80.19 |    77.7 |   73.25 |                   
  AboutBox.tsx     |     100 |      100 |     100 |     100 |                   
  AnsiOutput.tsx   |   65.57 |      100 |      50 |   65.57 | 69-90             
  ApiKeyInput.tsx  |       0 |        0 |       0 |       0 | 1-97              
  AppHeader.tsx    |    88.7 |       75 |     100 |    88.7 | 36,38-43,45       
  ...odeDialog.tsx |   87.24 |    72.22 |   33.33 |   87.24 | ...85,233-238,245 
  AsciiArt.ts      |     100 |      100 |     100 |     100 |                   
  ...Indicator.tsx |   95.65 |    66.66 |     100 |   95.65 | 27,52             
  ...TextInput.tsx |   89.06 |    90.78 |     100 |   89.06 | ...87-289,303-305 
  Composer.tsx     |   94.54 |    66.66 |     100 |   94.54 | ...-76,88,143,158 
  ...entPrompt.tsx |     100 |      100 |     100 |     100 |                   
  ...ryDisplay.tsx |   75.89 |    62.06 |     100 |   75.89 | ...,88,93-108,113 
  ...geDisplay.tsx |   68.42 |    57.14 |     100 |   68.42 | 16-17,31-32,42-50 
  CronPill.tsx     |     100 |    93.75 |     100 |     100 | 19                
  ...ification.tsx |      84 |       60 |     100 |      84 | 23-24,40-42       
  ...gProfiler.tsx |       0 |        0 |       0 |       0 | 1-36              
  ...ogManager.tsx |   11.28 |      100 |       0 |   11.28 | 71-598            
  DiffDialog.tsx   |    53.5 |     37.5 |   69.23 |    53.5 | ...32-737,747-760 
  ...ngsDialog.tsx |    8.44 |      100 |       0 |    8.44 | 37-195            
  EffortDialog.tsx |   97.36 |      100 |     100 |   97.36 | 55-56             
  ExitWarning.tsx  |     100 |      100 |     100 |     100 |                   
  ...hProgress.tsx |    87.8 |    33.33 |     100 |    87.8 | 28-31,56          
  ...gsDisplay.tsx |     100 |    96.87 |   83.33 |     100 | 69                
  ...ustDialog.tsx |     100 |      100 |     100 |     100 |                   
  Footer.tsx       |   81.27 |    69.23 |      50 |   81.27 | ...06,245,267-272 
  ...ngSpinner.tsx |   68.42 |    85.71 |      50 |   68.42 | 35-52,73,80-81    
  GoalPill.tsx     |   93.51 |    81.81 |     100 |   93.51 | 37-38,106-109,123 
  Header.tsx       |   98.65 |    94.73 |     100 |   98.65 | 173,175           
  Help.tsx         |   98.33 |       90 |     100 |   98.33 | ...25,382,448-449 
  ...emDisplay.tsx |   79.69 |    67.61 |     100 |   79.69 | ...17,520,523-529 
  ...ngeDialog.tsx |     100 |      100 |     100 |     100 |                   
  InputPrompt.tsx  |   86.26 |     83.3 |      80 |   86.26 | ...2231,2252,2348 
  ...Shortcuts.tsx |     100 |       88 |     100 |     100 | 98,119            
  ...Indicator.tsx |   98.18 |    97.82 |     100 |   98.18 | 161-162           
  ...firmation.tsx |   91.42 |      100 |      50 |   91.42 | 26-31             
  MainContent.tsx  |   95.88 |    96.03 |   46.15 |   95.88 | ...20,523-527,530 
  MemoryDialog.tsx |   86.59 |    80.15 |     100 |   86.59 | ...34-435,485,553 
  ...geDisplay.tsx |       0 |        0 |       0 |       0 | 1-41              
  ModelDialog.tsx  |   85.22 |    74.17 |     100 |   85.22 | ...1042,1098,1100 
  ...tsDisplay.tsx |     100 |    97.22 |     100 |     100 | 270               
  ...fications.tsx |   16.66 |      100 |       0 |   16.66 | 14-56             
  ...onsDialog.tsx |    2.13 |      100 |       0 |    2.13 | 62-133,148-1004   
  ...ryDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...icePrompt.tsx |   92.64 |    85.71 |     100 |   92.64 | 102-106,134-139   
  PrepareLabel.tsx |   91.66 |    77.27 |     100 |   91.66 | 73-75,77-79,110   
  ...atePrompt.tsx |    8.57 |      100 |       0 |    8.57 | 24-55,58-134      
  ...geDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...ngDisplay.tsx |   21.42 |      100 |       0 |   21.42 | 13-39             
  ...hProgress.tsx |   85.25 |    88.46 |     100 |   85.25 | 121-147           
  ...dSelector.tsx |   92.79 |    82.65 |     100 |   92.79 | ...19-323,354-370 
  ...ionPicker.tsx |   83.66 |    72.13 |     100 |   83.66 | ...96,402,444-466 
  ...onPreview.tsx |   93.58 |    83.78 |     100 |   93.58 | ...,70-71,195-197 
  ...ryDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...putPrompt.tsx |   92.06 |    86.36 |   83.33 |   92.06 | ...,70-72,120-123 
  ...tedDialog.tsx |     100 |      100 |     100 |     100 |                   
  ...ngsDialog.tsx |   71.55 |    73.89 |   69.23 |   71.55 | ...1252,1258-1259 
  ...ionDialog.tsx |    92.3 |    96.15 |   33.33 |    92.3 | 60-63,68-75,164   
  ...putPrompt.tsx |    15.9 |      100 |       0 |    15.9 | 20-63             
  ...Indicator.tsx |   57.14 |      100 |       0 |   57.14 | 12-15             
  ...MoreLines.tsx |      28 |      100 |       0 |      28 | 18-40             
  ...iewDialog.tsx |   97.77 |    87.67 |     100 |   97.77 | ...97,305-307,324 
  ...tsDisplay.tsx |   95.86 |       75 |     100 |   95.86 | 67-71             
  ...ionPicker.tsx |       0 |        0 |       0 |       0 | 1-171             
  ...tivityTab.tsx |    3.94 |      100 |       0 |    3.94 | 27-275            
  StatsDialog.tsx  |    8.64 |      100 |       0 |    8.64 | ...76-111,130-322 
  StatsDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...ciencyTab.tsx |    78.9 |    56.52 |     100 |    78.9 | ...26,213,262-288 
  ...atmapView.tsx |    8.98 |      100 |       0 |    8.98 | 20-107            
  ...essionTab.tsx |      80 |    66.66 |     100 |      80 | ...70-277,283-300 
  ...ineDialog.tsx |    93.9 |    86.88 |     100 |    93.9 | ...20,282,302-304 
  ...yTodoList.tsx |   96.36 |    88.23 |     100 |   96.36 | 138-141           
  ...nsDisplay.tsx |   95.62 |    87.09 |     100 |   95.62 | ...24-125,273-275 
  ...inalImage.tsx |     100 |    93.93 |     100 |     100 | 75,129            
  ThemeDialog.tsx  |   89.95 |    46.15 |      75 |   89.95 | ...71-173,243-245 
  Tips.tsx         |   93.54 |       75 |     100 |   93.54 | 39-40             
  TodoDisplay.tsx  |     100 |      100 |     100 |     100 |                   
  ...tsDisplay.tsx |     100 |     87.5 |     100 |     100 | 31-32             
  TrustDialog.tsx  |     100 |    83.33 |     100 |     100 | 72-87             
  ...ification.tsx |   36.36 |      100 |       0 |   36.36 | 15-22             
  ...Indicator.tsx |    92.5 |     87.5 |     100 |    92.5 | 50-53             
  ...ackDialog.tsx |    7.84 |      100 |       0 |    7.84 | 24-134            
  ...xitDialog.tsx |   80.36 |    43.47 |      60 |   80.36 | ...24-238,248-251 
  ...odeVisuals.ts |   97.22 |    85.71 |     100 |   97.22 | 25                
  ...s-helpers.tsx |   66.25 |    81.25 |      50 |   66.25 | 25-32,46-53,62-72 
 ...nts/agent-view |   58.69 |    70.24 |    62.5 |   58.69 |                   
  ...atContent.tsx |    9.09 |      100 |       0 |    9.09 | 54-275,281-283    
  ...tChatView.tsx |     100 |    81.81 |     100 |     100 | 82                
  ...tComposer.tsx |   69.48 |    33.33 |   66.66 |   69.48 | ...51,269,277-279 
  AgentFooter.tsx  |   15.38 |      100 |       0 |   15.38 | 28-65             
  AgentHeader.tsx  |   15.38 |      100 |       0 |   15.38 | 27-64             
  AgentTabBar.tsx  |    87.9 |    63.88 |     100 |    87.9 | ...88,110-118,136 
  ...oryAdapter.ts |     100 |    91.83 |     100 |     100 | 103,109-110,138   
  index.ts         |       0 |        0 |       0 |       0 | 1-12              
 ...mponents/arena |   45.51 |    70.53 |   60.86 |   45.51 |                   
  ArenaCards.tsx   |   73.06 |    71.79 |   85.71 |   73.06 | ...83-185,321-326 
  ...ectDialog.tsx |   83.48 |    69.86 |   88.88 |   83.48 | ...88-392,409-410 
  ...artDialog.tsx |    9.77 |      100 |       0 |    9.77 | 27-166            
  ...tusDialog.tsx |    5.63 |      100 |       0 |    5.63 | 33-75,80-288      
  ...topDialog.tsx |    6.17 |      100 |       0 |    6.17 | 33-213            
 ...ackground-view |   85.86 |     85.1 |   92.98 |   85.86 |                   
  ...sksDialog.tsx |   82.66 |    83.09 |   85.71 |   82.66 | ...1854,1977-1983 
  ...TasksPill.tsx |   78.84 |    94.28 |     100 |   78.84 | 64,109-129        
  ...gentPanel.tsx |   97.08 |    86.31 |     100 |   97.08 | 132,442-446,520   
  agent-forest.ts  |    99.2 |    93.93 |     100 |    99.2 | 258               
  ...Visibility.ts |     100 |      100 |     100 |     100 |                   
  ...e-overlay.tsx |    88.2 |    76.47 |     100 |    88.2 | ...36-138,140-142 
 ...nts/extensions |   84.32 |    76.78 |   83.33 |   84.32 |                   
  ...gerDialog.tsx |   82.15 |    76.08 |     100 |   82.15 | ...91-198,258,260 
  TabBar.tsx       |   97.29 |    88.88 |     100 |   97.29 | 33                
  index.ts         |       0 |        0 |       0 |       0 | 1-12              
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...tensions/steps |   46.26 |       85 |   58.82 |   46.26 |                   
  ...ctionStep.tsx |   95.12 |    92.85 |   85.71 |   95.12 | 84-86,89          
  ...etailStep.tsx |       0 |        0 |       0 |       0 | 1-145             
  ...nListStep.tsx |   75.26 |    88.37 |   66.66 |   75.26 | ...53,174,203-209 
  ...electStep.tsx |       0 |        0 |       0 |       0 | 1-83              
  ...nfirmStep.tsx |   16.32 |      100 |       0 |   16.32 | 28-74             
  index.ts         |       0 |        0 |       0 |       0 | 1-11              
 ...xtensions/tabs |   71.92 |    68.21 |   70.83 |   71.92 |                   
  DiscoverTab.tsx  |   68.22 |    67.66 |   55.55 |   68.22 | ...93,656-660,664 
  InstalledTab.tsx |   75.49 |    67.44 |   83.33 |   75.49 | ...77,782-783,820 
  SourcesTab.tsx   |   71.67 |    70.47 |   77.77 |   71.67 | ...28,547,621-633 
 ...tensions/views |    50.7 |    52.38 |   20.83 |    50.7 |                   
  ...tionsView.tsx |   73.75 |    56.36 |   66.66 |   73.75 | ...30,353,369-374 
  ...tionsView.tsx |   43.45 |    44.82 |    6.66 |   43.45 | ...98-405,408-420 
  ...etailView.tsx |    9.24 |      100 |       0 |    9.24 | 40-67,70-163      
 ...mponents/hooks |   87.11 |    81.37 |   91.89 |   87.11 |                   
  ...rListBody.tsx |   95.29 |    85.18 |     100 |   95.29 | 95-98             
  ...etailStep.tsx |   75.32 |    71.42 |      60 |   75.32 | ...56-169,173-186 
  ...etailStep.tsx |     100 |      100 |     100 |     100 |                   
  ...rListStep.tsx |     100 |      100 |     100 |     100 |                   
  ...entHeader.tsx |     100 |    85.71 |     100 |     100 | 47                
  ...rListStep.tsx |     100 |      100 |     100 |     100 |                   
  ...etailStep.tsx |     100 |      100 |     100 |     100 |                   
  ...abledStep.tsx |     100 |      100 |     100 |     100 |                   
  ...sListStep.tsx |     100 |      100 |     100 |     100 |                   
  ...entDialog.tsx |   72.29 |    70.49 |     100 |   72.29 | ...51,563-568,572 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-13              
  ...erGrouping.ts |     100 |      100 |     100 |     100 |                   
  sourceLabels.ts  |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...components/mcp |   40.91 |    63.44 |   70.58 |   40.91 |                   
  ...ealthPill.tsx |     100 |      100 |     100 |     100 |                   
  ...entDialog.tsx |   32.09 |    26.19 |      40 |   32.09 | ...12,914,927-933 
  ...valDialog.tsx |   15.06 |      100 |       0 |   15.06 | 40-109            
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-35              
  types.ts         |     100 |      100 |     100 |     100 |                   
  utils.ts         |      97 |       95 |     100 |      97 | 24,113-114        
 ...ents/mcp/steps |   53.94 |    73.51 |   57.14 |   53.94 |                   
  ...icateStep.tsx |    5.65 |      100 |       0 |    5.65 | 40-66,69-308      
  ...electStep.tsx |   10.95 |      100 |       0 |   10.95 | 16-88             
  ...etailStep.tsx |     100 |      100 |     100 |     100 |                   
  ...eListStep.tsx |   99.09 |    97.36 |     100 |   99.09 | 71                
  ...etailStep.tsx |   62.83 |       60 |   33.33 |   62.83 | ...87-296,307-332 
  ...rListStep.tsx |   88.53 |    81.25 |     100 |   88.53 | ...64,170,175-180 
  ...etailStep.tsx |    10.3 |      100 |       0 |    10.3 | ...1,67-79,82-140 
  ToolListStep.tsx |   69.29 |       50 |     100 |   69.29 | ...23,126,135-144 
 ...nents/messages |   90.57 |    87.45 |   85.84 |   90.57 |                   
  ...orMessage.tsx |     100 |      100 |     100 |     100 |                   
  ...ionDialog.tsx |   89.23 |     84.9 |   81.81 |   89.23 | ...75,593,611-613 
  BtwMessage.tsx   |     100 |      100 |     100 |     100 |                   
  ...upDisplay.tsx |     100 |    94.73 |     100 |     100 | ...43,289,402,432 
  ...onMessage.tsx |   93.24 |       85 |     100 |   93.24 | 73-75,77,79       
  ...nMessages.tsx |   94.11 |    95.91 |   76.92 |   94.11 | ...47-349,352-355 
  DiffRenderer.tsx |   93.17 |    86.02 |     100 |   93.17 | ...07,235-236,302 
  ...tsDisplay.tsx |   97.08 |    77.77 |     100 |   97.08 | 95,97,106         
  ...usMessage.tsx |   81.73 |     65.9 |      75 |   81.73 | ...10-214,222,245 
  ...tsDisplay.tsx |   95.52 |    88.31 |     100 |   95.52 | ...40,142,175-180 
  ...ssMessage.tsx |    12.5 |      100 |       0 |    12.5 | 18-59             
  ...edMessage.tsx |   21.05 |      100 |       0 |   21.05 | 23-39             
  ...sMessages.tsx |   59.04 |       50 |    37.5 |   59.04 | ...21-126,147-159 
  ...ryMessage.tsx |   13.63 |      100 |       0 |   13.63 | 23-64             
  ...onMessage.tsx |   91.87 |    82.51 |     100 |   91.87 | ...49-651,658-660 
  ...upMessage.tsx |   98.38 |    95.38 |     100 |   98.38 | 188-191,422       
  ToolMessage.tsx  |   93.96 |    88.66 |   93.75 |   93.96 | ...1070,1115-1117 
 ...ponents/shared |   86.52 |    82.35 |   86.72 |   86.52 |                   
  ...ctionList.tsx |     100 |      100 |      75 |     100 |                   
  ...tonSelect.tsx |     100 |      100 |     100 |     100 |                   
  EnumSelector.tsx |     100 |    96.42 |     100 |     100 | 58                
  ...rBoundary.tsx |     100 |      100 |     100 |     100 |                   
  MaxSizedBox.tsx  |   84.71 |    86.95 |      90 |   84.71 | ...67-568,685-686 
  MultiSelect.tsx  |   93.58 |       75 |     100 |   93.58 | ...43,199-201,211 
  ...tonSelect.tsx |     100 |      100 |     100 |     100 |                   
  ...ontroller.tsx |     100 |    83.33 |     100 |     100 | 73,93-95          
  ...eSelector.tsx |     100 |       60 |     100 |     100 | 40-45             
  ...lableList.tsx |   90.37 |    82.85 |   18.18 |   90.37 | ...60-63,65,73-76 
  StaticRender.tsx |     100 |      100 |     100 |     100 |                   
  TextInput.tsx    |    80.8 |    67.24 |      80 |    80.8 | ...36-240,252-258 
  ...ontroller.tsx |     100 |    81.81 |     100 |     100 | 59-62             
  ...apsedTime.tsx |     100 |      100 |     100 |     100 |                   
  ...Indicator.tsx |     100 |      100 |     100 |     100 |                   
  ...lizedList.tsx |   91.49 |    86.66 |   83.33 |   91.49 | ...18-846,859,959 
  text-buffer.ts   |   85.98 |    81.81 |   97.91 |   85.98 | ...2664,2762-2763 
  ...er-actions.ts |   73.93 |    67.22 |     100 |   73.93 | ...32-733,934-936 
 ...ponents/skills |    3.96 |      100 |       0 |    3.96 |                   
  ...gerDialog.tsx |    3.96 |      100 |       0 |    3.96 | 79-137,140-681    
 ...ents/subagents |   30.87 |        0 |       0 |   30.87 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-11              
  reducers.tsx     |    12.1 |      100 |       0 |    12.1 | 33-190            
  types.ts         |     100 |      100 |     100 |     100 |                   
  utils.ts         |   10.95 |      100 |       0 |   10.95 | ...1,56-57,60-102 
 ...bagents/create |    9.13 |      100 |       0 |    9.13 |                   
  ...ionWizard.tsx |    7.28 |      100 |       0 |    7.28 | 34-299            
  ...rSelector.tsx |   14.75 |      100 |       0 |   14.75 | 26-85             
  ...onSummary.tsx |    4.26 |      100 |       0 |    4.26 | 27-331            
  ...tionInput.tsx |    8.63 |      100 |       0 |    8.63 | 23-177            
  ...dSelector.tsx |   33.33 |      100 |       0 |   33.33 | 20-21,26-27,36-63 
  ...nSelector.tsx |    37.5 |      100 |       0 |    37.5 | 20-21,26-27,36-58 
  ...EntryStep.tsx |   12.76 |      100 |       0 |   12.76 | 34-78             
  ToolSelector.tsx |    4.16 |      100 |       0 |    4.16 | 31-253            
 ...bagents/manage |    21.6 |    59.52 |   27.27 |    21.6 |                   
  ...ctionStep.tsx |   10.25 |      100 |       0 |   10.25 | 21-103            
  ...eleteStep.tsx |   20.93 |      100 |       0 |   20.93 | 23-62             
  ...tEditStep.tsx |   25.53 |      100 |       0 |   25.53 | ...2,37-38,51-124 
  ...ctionStep.tsx |   35.61 |    59.52 |     100 |   35.61 | ...21-433,438-440 
  ...iewerStep.tsx |   13.72 |      100 |       0 |   13.72 | 18-73             
  ...gerDialog.tsx |    6.74 |      100 |       0 |    6.74 | 35-341            
 ...mponents/views |    70.1 |    72.89 |   61.11 |    70.1 |                   
  ContextUsage.tsx |   71.49 |    64.86 |      80 |   71.49 | ...30-436,473-567 
  DoctorReport.tsx |     9.8 |      100 |       0 |     9.8 | 25-54,57-131      
  ...sionsList.tsx |   88.05 |       75 |     100 |   88.05 | 70-77             
  McpStatus.tsx    |   92.01 |     73.8 |     100 |   92.01 | ...36,175-177,262 
  SkillsList.tsx   |   20.51 |      100 |       0 |   20.51 | 17-20,27-57       
  ToolsList.tsx    |     100 |      100 |     100 |     100 |                   
 src/ui/contexts   |   86.01 |    81.54 |   86.48 |   86.01 |                   
  ...ewContext.tsx |   87.56 |       80 |      75 |   87.56 | ...37-240,246-256 
  AppContext.tsx   |      80 |       50 |     100 |      80 | 19-20             
  ...ewContext.tsx |   93.83 |    68.51 |   42.85 |   93.83 | ...44,281-285,317 
  ...igContext.tsx |   81.81 |       50 |     100 |   81.81 | 15-16             
  ...ssContext.tsx |   85.65 |    84.85 |     100 |   85.65 | ...1612-1614,1620 
  ...owContext.tsx |   91.07 |    81.81 |     100 |   91.07 | 47-48,60-62       
  ...deContext.tsx |     100 |      100 |      50 |     100 |                   
  ...onContext.tsx |   80.77 |    79.56 |    92.3 |   80.77 | ...31-434,443-446 
  ...gsContext.tsx |     100 |      100 |     100 |     100 |                   
  ...usContext.tsx |     100 |      100 |     100 |     100 |                   
  ...ngContext.tsx |   71.42 |       50 |     100 |   71.42 | 17-20             
  ...utContext.tsx |   85.71 |      100 |   66.66 |   85.71 | 13-14             
  ...edContext.tsx |     100 |      100 |      50 |     100 |                   
  ...nsContext.tsx |   88.88 |       50 |     100 |   88.88 | 156-157           
  ...teContext.tsx |   86.66 |       50 |     100 |   86.66 | 237-238           
  ...deContext.tsx |      80 |     87.5 |      75 |      80 | ...11-112,118-120 
  ...rtContext.tsx |     100 |      100 |     100 |     100 |                   
 src/ui/daemon     |   89.51 |    76.92 |   95.65 |   89.51 |                   
  ...ui-adapter.ts |   89.51 |    76.92 |   95.65 |   89.51 | ...59,877-878,964 
 src/ui/editors    |   93.33 |    85.71 |   66.66 |   93.33 |                   
  ...ngsManager.ts |   93.33 |    85.71 |   66.66 |   93.33 | 49,63-64          
 src/ui/hooks      |   86.05 |    84.17 |   87.85 |   86.05 |                   
  ...dProcessor.ts |   85.53 |    85.13 |     100 |   85.53 | ...-970,1017-1018 
  ...ention-ref.ts |   97.72 |       84 |     100 |   97.72 | 65                
  keyToAnsi.ts     |    3.92 |      100 |       0 |    3.92 | 19-77             
  ...esourceRef.ts |     100 |      100 |     100 |     100 |                   
  ...completion.ts |     100 |    95.45 |     100 |     100 | 95                
  ...ention-ref.ts |     100 |      100 |     100 |     100 |                   
  ...dProcessor.ts |   94.62 |    73.58 |     100 |   94.62 | ...87-288,293-294 
  ...dProcessor.ts |   86.79 |    71.86 |   83.33 |   86.79 | ...1529,1558-1562 
  ...rt-command.ts |     100 |      100 |     100 |     100 |                   
  ...sced-flush.ts |     100 |      100 |     100 |     100 |                   
  ...ng-enabled.ts |     100 |      100 |     100 |     100 |                   
  ...oice-input.ts |   92.41 |    82.08 |   66.66 |   92.41 | ...12,514-515,670 
  ...ke-repaint.ts |     100 |      100 |     100 |     100 |                   
  ...amingState.ts |   12.22 |      100 |       0 |   12.22 | 54-157            
  ...agerDialog.ts |   88.23 |      100 |     100 |   88.23 | 20,24             
  ...dScrollbar.ts |     100 |      100 |     100 |     100 |                   
  ...ationFrame.ts |      52 |    63.63 |     100 |      52 | ...59,67-70,76-87 
  ...odeCommand.ts |   58.82 |      100 |     100 |   58.82 | 28,33-48          
  ...enaCommand.ts |      85 |      100 |     100 |      85 | 23-24,29          
  ...aInProcess.ts |   27.92 |       80 |      25 |   27.92 | ...69-170,173-175 
  ...Completion.ts |   86.44 |    88.48 |     100 |   86.44 | ...14-515,525-541 
  ...ifications.ts |   87.82 |    96.77 |     100 |   87.82 | 138-152           
  ...tIndicator.ts |   88.28 |    81.57 |     100 |   88.28 | ...66,175,179-187 
  ...waySummary.ts |   96.26 |       75 |     100 |   96.26 | 126-128,170       
  ...ndTaskView.ts |   94.89 |    77.55 |     100 |   94.89 | 164-168,257,263   
  ...chedScroll.ts |     100 |      100 |     100 |     100 |                   
  ...ketedPaste.ts |    23.8 |      100 |       0 |    23.8 | 19-37             
  ...nchCommand.ts |   96.03 |    88.75 |     100 |   96.03 | ...04-205,362-365 
  ...ompletion.tsx |   97.09 |    87.23 |     100 |   97.09 | ...23-324,334-335 
  ...dMigration.ts |    92.1 |    88.88 |     100 |    92.1 | 42-44             
  useCompletion.ts |   96.29 |    90.56 |     100 |   96.29 | ...17-218,222-223 
  ...nitMessage.ts |     100 |      100 |     100 |     100 |                   
  ...extualTips.ts |   78.26 |       50 |     100 |   78.26 | ...2,75-79,96-104 
  ...eteCommand.ts |   89.52 |    90.69 |     100 |   89.52 | ...98-106,114-115 
  ...ialogClose.ts |   36.11 |       10 |     100 |   36.11 | ...89-195,202-207 
  useDiffData.ts   |   11.62 |      100 |       0 |   11.62 | 44-87             
  ...oublePress.ts |   53.12 |       75 |     100 |   53.12 | 33-35,41-54       
  ...orSettings.ts |     100 |      100 |     100 |     100 |                   
  ...Completion.ts |   99.12 |    97.67 |     100 |   99.12 | 182-183           
  ...ionUpdates.ts |   93.72 |    92.98 |     100 |   93.72 | ...87-291,314-320 
  ...agerDialog.ts |   88.88 |      100 |     100 |   88.88 | 21,25             
  ...backDialog.ts |    63.9 |    76.47 |   66.66 |    63.9 | ...66-168,190-191 
  useFocus.ts      |     100 |      100 |     100 |     100 |                   
  ...olderTrust.ts |     100 |    93.33 |     100 |     100 | 62                
  ...ggestions.tsx |   96.47 |    78.94 |     100 |   96.47 | 121,155-156       
  ...miniStream.ts |   87.42 |    84.33 |   78.72 |   87.42 | ...5827-5829,5831 
  ...BranchName.ts |     100 |    94.44 |     100 |     100 | 54                
  ...oryManager.ts |   98.44 |     98.9 |     100 |   98.44 | 157-160           
  ...ooksDialog.ts |    87.5 |      100 |     100 |    87.5 | 19,23             
  ...stListener.ts |     100 |      100 |     100 |     100 |                   
  ...nAuthError.ts |   76.19 |       50 |     100 |   76.19 | 39-40,43-45       
  ...putHistory.ts |   92.59 |    85.71 |     100 |   92.59 | 63-64,72,94-96    
  ...storyStore.ts |     100 |    94.11 |     100 |     100 | 69                
  useKeypress.ts   |     100 |      100 |     100 |     100 |                   
  ...rdProtocol.ts |   36.36 |      100 |       0 |   36.36 | 24-31             
  ...unchEditor.ts |   22.58 |      100 |      50 |   22.58 | 11-32,44-85       
  ...gIndicator.ts |     100 |    96.66 |     100 |     100 | 109               
  useLogger.ts     |      16 |      100 |       0 |      16 | 15-45             
  useMCPHealth.ts  |   10.52 |      100 |       0 |   10.52 | 36-75             
  ...cpApproval.ts |   93.12 |    86.11 |     100 |   93.12 | ...24-127,139-140 
  useMcpDialog.ts  |    87.5 |      100 |     100 |    87.5 | 19,23             
  ...moryDialog.ts |    87.5 |      100 |     100 |    87.5 | 19,23             
  ...oryMonitor.ts |   83.14 |    78.57 |     100 |   83.14 | 54-63,74-79       
  ...ssageQueue.ts |     100 |     97.4 |     100 |     100 | 175,262           
  ...delCommand.ts |     100 |       96 |     100 |     100 | 61                
  ...ouseEvents.ts |   94.89 |       95 |   83.33 |   94.89 | 78-82             
  ...raseCycler.ts |   84.74 |    76.47 |     100 |   84.74 | ...49,52-53,69-71 
  ...rredEditor.ts |   58.33 |    22.22 |     100 |   58.33 | 23-27,29-33       
  ...derUpdates.ts |   85.29 |    80.28 |    92.3 |   85.29 | ...36,351-361,441 
  useQwenAuth.ts   |     100 |      100 |     100 |     100 |                   
  ...lScheduler.ts |   89.13 |     86.9 |     100 |   89.13 | ...61-463,496-506 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-7               
  ...umeCommand.ts |   96.51 |    90.19 |     100 |   96.51 | 279,306-311       
  ...ompletion.tsx |   90.67 |    83.33 |     100 |   90.67 | ...02,105,138-141 
  ...ectionList.ts |   97.12 |    96.19 |     100 |   97.12 | ...92-193,247-250 
  ...sionPicker.ts |   92.87 |    90.35 |     100 |   92.87 | ...99-501,503-505 
  ...earchInput.ts |     100 |    97.29 |     100 |     100 | 82                
  ...ngsCommand.ts |   18.75 |      100 |       0 |   18.75 | 10-25             
  ...ellHistory.ts |   93.28 |    80.95 |     100 |   93.28 | ...96,153-154,164 
  ...oryCommand.ts |   85.48 |    58.33 |     100 |   85.48 | 22-28,40,71       
  ...agerDialog.ts |   88.23 |      100 |     100 |   88.23 | 20,24             
  ...Completion.ts |   82.79 |    85.33 |   94.73 |   82.79 | ...86-688,696-732 
  ...tateAndRef.ts |     100 |      100 |     100 |     100 |                   
  ...tatsDialog.ts |     100 |      100 |     100 |     100 |                   
  useStatusLine.ts |   97.32 |    93.93 |     100 |   97.32 | ...18-422,518-525 
  ...eateDialog.ts |   88.23 |      100 |     100 |   88.23 | 14,18             
  ...mInProcess.ts |   27.35 |       80 |      25 |   27.35 | ...82-183,186-188 
  ...tification.ts |     100 |     87.5 |     100 |     100 | 50                
  ...alProgress.ts |   67.34 |    58.82 |   66.66 |   67.34 | 52-53,61-68,79-85 
  ...rminalSize.ts |     100 |      100 |     100 |     100 |                   
  ...emeCommand.ts |    79.2 |    35.29 |     100 |    79.2 | ...15-116,120-121 
  useTimer.ts      |   97.59 |    94.73 |     100 |   97.59 | 17-18             
  ...lMigration.ts |       0 |        0 |       0 |       0 |                   
  ...rustModify.ts |     100 |    90.47 |     100 |     100 | 112,134           
  useTurnDiffs.ts  |   95.12 |    78.57 |     100 |   95.12 | 133-134,156-157   
  ...elcomeBack.ts |   87.36 |     90.9 |     100 |   87.36 | ...,94-96,114-115 
  ...reeSession.ts |   93.75 |       70 |     100 |   93.75 | 47-48,72          
  vim.ts           |      74 |    67.56 |   69.23 |      74 | ...1854-1861,1869 
 src/ui/layouts    |   91.25 |    89.47 |     100 |   91.25 |                   
  ...AppLayout.tsx |   90.99 |     87.5 |     100 |   90.99 | 61-63,111-116,152 
  ...AppLayout.tsx |   91.66 |    92.85 |     100 |   91.66 | 75-80             
 src/ui/models     |   80.72 |       80 |   71.42 |   80.72 |                   
  ...ableModels.ts |   80.72 |       80 |   71.42 |   80.72 | ...,61-71,125-127 
 ...noninteractive |     100 |      100 |    6.66 |     100 |                   
  ...eractiveUi.ts |     100 |      100 |    6.66 |     100 |                   
 src/ui/selection  |   93.56 |    86.19 |     100 |   93.56 |                   
  screen-buffer.ts |   94.73 |    66.66 |     100 |   94.73 | 51-52             
  ...ion-coords.ts |     100 |      100 |     100 |     100 |                   
  ...ction-span.ts |   93.81 |     92.1 |     100 |   93.81 | ...1,45-46,99-100 
  ...tion-state.ts |     100 |      100 |     100 |     100 |                   
  ...ction-text.ts |   93.85 |    93.44 |     100 |   93.85 | 30-34,130-131     
  ...selection.tsx |   91.88 |    78.57 |     100 |   91.88 | ...16-417,446-447 
 src/ui/state      |      95 |    81.81 |     100 |      95 |                   
  extensions.ts    |      95 |    81.81 |     100 |      95 | 69-70,89          
 src/ui/themes     |    98.5 |    73.17 |     100 |    98.5 |                   
  ansi-light.ts    |     100 |      100 |     100 |     100 |                   
  ansi.ts          |     100 |      100 |     100 |     100 |                   
  atom-one-dark.ts |     100 |      100 |     100 |     100 |                   
  ayu-light.ts     |     100 |      100 |     100 |     100 |                   
  ayu.ts           |     100 |      100 |     100 |     100 |                   
  color-utils.ts   |   99.23 |    97.05 |     100 |   99.23 | 277-278           
  default-light.ts |     100 |      100 |     100 |     100 |                   
  default.ts       |     100 |      100 |     100 |     100 |                   
  ...inal-theme.ts |   88.59 |    85.96 |     100 |   88.59 | ...57-261,266-270 
  dracula.ts       |     100 |      100 |     100 |     100 |                   
  github-dark.ts   |     100 |      100 |     100 |     100 |                   
  github-light.ts  |     100 |      100 |     100 |     100 |                   
  googlecode.ts    |     100 |      100 |     100 |     100 |                   
  no-color.ts      |     100 |      100 |     100 |     100 |                   
  qwen-dark.ts     |     100 |      100 |     100 |     100 |                   
  qwen-light.ts    |     100 |      100 |     100 |     100 |                   
  ...tic-tokens.ts |     100 |      100 |     100 |     100 |                   
  ...-of-purple.ts |     100 |      100 |     100 |     100 |                   
  theme-manager.ts |   88.68 |    84.52 |     100 |   88.68 | ...83-392,397-398 
  theme.ts         |     100 |    38.02 |     100 |     100 | ...34-449,457-461 
  xcode.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/utils      |   87.95 |    86.04 |   96.09 |   87.95 |                   
  ...Colorizer.tsx |   80.31 |    85.41 |     100 |   80.31 | ...00-201,313-339 
  ...nRenderer.tsx |   80.07 |     75.6 |     100 |   80.07 | ...70,274,332-333 
  ...wnDisplay.tsx |   92.87 |     93.5 |     100 |   92.87 | ...,955,1002-1020 
  ...idDiagram.tsx |   87.79 |    95.34 |     100 |   87.79 | 156-179           
  ...eRenderer.tsx |   93.63 |    81.77 |   95.23 |   93.63 | ...47-750,803-808 
  ...odeDisplay.ts |   94.28 |    85.71 |     100 |   94.28 | 23,40             
  asciiCharts.ts   |    96.7 |     87.5 |     100 |    96.7 | 170-177,278       
  ...dWorkUtils.ts |     100 |      100 |     100 |     100 |                   
  ...boardUtils.ts |    52.9 |    74.15 |    92.3 |    52.9 | ...29,632-641,644 
  commandUtils.ts  |   98.61 |    93.27 |     100 |   98.61 | 189,217-218,424   
  computeStats.ts  |     100 |      100 |     100 |     100 |                   
  customBanner.ts  |   90.68 |    91.22 |     100 |   90.68 | ...13,324-327,334 
  displayUtils.ts  |   73.84 |    73.91 |     100 |   73.84 | ...34,36-40,42-46 
  ...coalescing.ts |     100 |      100 |     100 |     100 |                   
  formatters.ts    |   94.87 |    98.24 |     100 |   94.87 | 116-119           
  goal-runtime.ts  |   91.42 |       95 |     100 |   91.42 | 32-34             
  gradientUtils.ts |     100 |      100 |     100 |     100 |                   
  highlight.ts     |     100 |      100 |     100 |     100 |                   
  ...gap-notice.ts |     100 |      100 |     100 |     100 |                   
  ...oryMapping.ts |     100 |    95.65 |     100 |     100 | 45,151            
  historyUtils.ts  |   96.07 |     97.1 |     100 |   96.07 | 104-107           
  ...mage-parts.ts |   97.75 |       95 |     100 |   97.75 | 82-83             
  inline-math.ts   |   98.48 |    95.23 |     100 |   98.48 | 129-130           
  input-mouse.ts   |     100 |    85.71 |     100 |     100 | 48,93             
  isNarrowWidth.ts |     100 |      100 |     100 |     100 |                   
  ...olDetector.ts |   68.81 |       75 |   66.66 |   68.81 | ...27-132,160-161 
  latexRenderer.ts |   94.95 |     73.8 |     100 |   94.95 | ...76-178,184-187 
  layoutUtils.ts   |     100 |      100 |     100 |     100 |                   
  list-mouse.ts    |     100 |      100 |     100 |     100 |                   
  ...ightLoader.ts |     100 |       95 |     100 |     100 | 81                
  ...nUtilities.ts |   98.72 |    94.36 |     100 |   98.72 | 145-146           
  ...t-position.ts |     100 |     87.5 |     100 |     100 | 85                
  ...geRenderer.ts |   86.51 |    70.16 |   95.12 |   86.51 | ...1286,1326-1332 
  ...alRenderer.ts |   86.69 |     71.9 |     100 |   86.69 | ...1476,1513-1519 
  ...lsBySource.ts |     100 |    95.23 |     100 |     100 | 84                
  mouse.ts         |   92.85 |    74.19 |     100 |   92.85 | ...38,145,149-152 
  osc8.ts          |   91.33 |    79.03 |     100 |   91.33 | ...73,273,277-278 
  ...red-height.ts |   98.38 |    97.14 |     100 |   98.38 | 195-197           
  ...mConstants.ts |     100 |      100 |     100 |     100 |                   
  restoreGoal.ts   |     100 |      100 |     100 |     100 |                   
  ...storyUtils.ts |   84.37 |    81.09 |     100 |   84.37 | ...03-625,759-760 
  ...ickerUtils.ts |     100 |      100 |     100 |     100 |                   
  ...evel-label.ts |   77.77 |    66.66 |     100 |   77.77 | 18,22-24          
  ...are-cursor.ts |   89.47 |    85.71 |     100 |   89.47 | 39-44             
  ...ataService.ts |   93.17 |     79.1 |     100 |   93.17 | ...14,227,254-256 
  suggestions.ts   |     100 |      100 |     100 |     100 |                   
  ...izedOutput.ts |   95.19 |      100 |   88.88 |   95.19 | 121-126           
  ...nal-buffer.ts |     100 |      100 |     100 |     100 |                   
  ...e-renderer.ts |   90.61 |    83.44 |     100 |   90.61 | ...80,482-484,607 
  ...ize-reflow.ts |     100 |     92.3 |     100 |     100 | 57,62,209,217,347 
  ...wOptimizer.ts |     100 |    94.73 |     100 |     100 | 35,78             
  terminalSetup.ts |    4.37 |      100 |       0 |    4.37 | 44-393            
  textUtils.ts     |   98.71 |    95.72 |     100 |   98.71 | 292-293,478-479   
  ...background.ts |     100 |      100 |     100 |     100 |                   
  todoSnapshot.ts  |   95.74 |    92.06 |     100 |   95.74 | ...06-207,240-241 
  ...isplay-map.ts |     100 |      100 |     100 |     100 |                   
  updateCheck.ts   |     100 |    92.75 |     100 |     100 | 227-239,331       
  windowTitle.ts   |   96.55 |    94.73 |     100 |   96.55 | 56-57             
  ...ow-keyword.ts |     100 |      100 |     100 |     100 |                   
 ...i/utils/export |   75.03 |     60.1 |   94.59 |   75.03 |                   
  collect.ts       |   71.27 |    65.81 |      96 |   71.27 | ...90-633,655-656 
  index.ts         |     100 |      100 |     100 |     100 |                   
  normalize.ts     |   80.42 |    51.35 |     100 |   80.42 | ...59-364,376-378 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
  utils.ts         |     100 |      100 |     100 |     100 |                   
 ...ort/formatters |   52.92 |    47.22 |   71.42 |   52.92 |                   
  html.ts          |   84.61 |       50 |     100 |   84.61 | ...53,57-58,62-63 
  json.ts          |     100 |      100 |     100 |     100 |                   
  jsonl.ts         |   82.45 |     37.5 |     100 |   82.45 | ...48,50-51,65-66 
  markdown.ts      |   36.32 |    47.05 |      50 |   36.32 | ...16-219,233-295 
 src/ui/voice      |   81.24 |    79.78 |   81.69 |   81.24 |                   
  ...d-recorder.ts |     6.2 |      100 |       0 |     6.2 | ...33-159,162-163 
  ...o-recorder.ts |   84.61 |    93.33 |   57.14 |   84.61 | ...16-117,131-136 
  ...me-session.ts |   91.09 |     92.1 |     100 |   91.09 | ...99,305,316-319 
  sox-recorder.ts  |    92.7 |    71.87 |     100 |    92.7 | ...34-135,153-154 
  ...ailability.ts |     100 |      100 |     100 |     100 |                   
  ...e-keyterms.ts |     100 |      100 |     100 |     100 |                   
  voice-model.ts   |     100 |      100 |     100 |     100 |                   
  ...e-recorder.ts |   88.29 |    67.74 |   81.81 |   88.29 | ...,98-99,112,115 
  voice-refine.ts  |     100 |    93.33 |     100 |     100 | 92                
  ...ream-retry.ts |   86.79 |       70 |     100 |   86.79 | 16-18,48-49,59-60 
  ...am-session.ts |   88.02 |    66.66 |   84.61 |   88.02 | ...26,343-345,363 
  ...ranscriber.ts |     100 |      100 |     100 |     100 |                   
 src/utils         |   92.23 |    89.62 |   96.39 |   92.23 |                   
  ...p-profiler.ts |   98.39 |    92.59 |     100 |   98.39 | 141,185,235       
  acpModelUtils.ts |   97.36 |    95.14 |     100 |   97.36 | ...09-210,214-215 
  apiPreconnect.ts |   96.74 |    94.59 |     100 |   96.74 | 167-170           
  ...ol-call-id.ts |   84.61 |       60 |     100 |   84.61 | 26-27,37-38       
  checks.ts        |   33.33 |      100 |       0 |   33.33 | 23-28             
  ...-api-error.ts |     100 |    96.42 |     100 |     100 | 14                
  cleanup.ts       |   84.05 |    94.11 |      80 |   84.05 | 80,111-121        
  ...y-identity.ts |   87.06 |    81.91 |     100 |   87.06 | ...70-371,378-379 
  ...Calculator.ts |     100 |      100 |     100 |     100 |                   
  cpuProfiler.ts   |   70.38 |    71.83 |   88.88 |   70.38 | ...27,430-431,438 
  deepMerge.ts     |     100 |       90 |     100 |     100 | 50-52,58          
  ...re-runtime.ts |     100 |      100 |     100 |     100 |                   
  ...putCapture.ts |   90.65 |    86.31 |     100 |   90.65 | ...73,371,373-374 
  ...arResolver.ts |   97.14 |    96.55 |     100 |   97.14 | 125-126           
  errors.ts        |   97.56 |    94.64 |     100 |   97.56 | 69-70,304-305     
  events.ts        |     100 |      100 |     100 |     100 |                   
  ...on-mention.ts |   88.48 |     82.6 |     100 |   88.48 | ...56-160,164-168 
  gitUtils.ts      |   92.85 |    86.66 |     100 |   92.85 | ...13-116,164-167 
  ...tyWarnings.ts |     100 |      100 |     100 |     100 |                   
  ...lationInfo.ts |   97.81 |    94.69 |     100 |   97.81 | ...03,420-421,466 
  ...projection.ts |   95.27 |    95.58 |     100 |   95.27 | 140-145           
  jsonc-editor.ts  |   93.18 |    92.66 |     100 |   93.18 | ...80-381,384-385 
  load-undici.ts   |     100 |      100 |     100 |     100 |                   
  ...npm-update.ts |   86.64 |    77.02 |     100 |   86.64 | ...03-304,335-345 
  math.ts          |       0 |        0 |       0 |       0 | 1-15              
  ...er-mention.ts |     100 |    66.66 |     100 |     100 | 14,30,44-46       
  ...iagnostics.ts |   94.57 |    83.01 |   88.88 |   94.57 | ...05,311,315-317 
  ...serMessage.ts |     100 |      100 |     100 |     100 |                   
  ...onfigUtils.ts |   94.25 |    91.17 |     100 |   94.25 | ...30,436,439-443 
  ...-part-list.ts |     100 |      100 |     100 |     100 |                   
  osc.ts           |   97.18 |      100 |    87.5 |   97.18 | 182-183           
  package.ts       |   88.88 |    85.71 |     100 |   88.88 | 31-32             
  paths.ts         |     100 |      100 |     100 |     100 |                   
  processUtils.ts  |    92.3 |       80 |     100 |    92.3 | 45-46             
  readStdin.ts     |   93.67 |    94.11 |   85.71 |   93.67 | 79-83             
  relaunch.ts      |   95.87 |    89.28 |     100 |   95.87 | 103-105,131       
  resolvePath.ts   |     100 |      100 |     100 |     100 |                   
  runBudget.ts     |   99.35 |    96.77 |     100 |   99.35 | 119               
  sandbox-path.ts  |     100 |      100 |     100 |     100 |                   
  ...xImageName.ts |     100 |    77.77 |     100 |     100 | 10,18             
  sandboxMounts.ts |     100 |      100 |     100 |     100 |                   
  ...-path-argv.ts |     100 |      100 |     100 |     100 |                   
  sessionPaths.ts  |   90.84 |    90.56 |     100 |   90.84 | ...81-182,185-186 
  shell-args.ts    |     100 |      100 |     100 |     100 |                   
  spawnWrapper.ts  |     100 |      100 |     100 |     100 |                   
  ...ate-verify.ts |     100 |      100 |     100 |     100 |                   
  ...upProfiler.ts |   98.47 |    94.66 |     100 |   98.47 | 132-133,308       
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  stdioHelpers.ts  |     100 |       90 |     100 |     100 | 23                
  ...alSequence.ts |     100 |    97.61 |     100 |     100 | 60                
  ...iffPreview.ts |   76.47 |       25 |     100 |   76.47 | 13,17,23-24       
  ...on-handler.ts |    73.8 |       75 |     100 |    73.8 | 17-18,25-26,67-73 
  ...entEmitter.ts |     100 |      100 |     100 |     100 |                   
  ...ansionHook.ts |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |   87.75 |       75 |     100 |   87.75 | 47-48,53-54,57-58 
  version.ts       |     100 |    66.66 |     100 |     100 | 11                
  ...ingHandler.ts |     100 |      100 |     100 |     100 |                   
  ...WithBackup.ts |   65.04 |    77.77 |     100 |   65.04 | 97,112,133-172    
 ...s/housekeeping |   94.35 |    94.11 |     100 |   94.35 |                   
  cleanup.ts       |   92.59 |    93.75 |     100 |   92.59 | ...02-205,209-211 
  ...eractionAt.ts |     100 |      100 |     100 |     100 |                   
  throttledOnce.ts |   95.95 |    93.93 |     100 |   95.95 | 77-78,153-154     
-------------------|---------|----------|---------|---------|-------------------
Core Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   88.59 |    87.04 |   90.31 |   88.59 |                   
 src               |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/__mocks__/fs  |       0 |        0 |       0 |       0 |                   
  promises.ts      |       0 |        0 |       0 |       0 | 1-48              
 src/agents        |   90.24 |    84.51 |   94.55 |   90.24 |                   
  ...transcript.ts |   88.49 |    84.09 |     100 |   88.49 | ...32,640,646-650 
  ...ent-resume.ts |   85.64 |       78 |    85.1 |   85.64 | ...1793-1797,1800 
  ...ound-tasks.ts |   95.19 |    90.75 |   96.42 |   95.19 | ...1889,1897-1898 
  forkedAgent.ts   |   93.18 |    83.47 |   94.44 |   93.18 | ...90,698,703-710 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...ent-result.ts |    96.8 |    92.68 |     100 |    96.8 | 106,129-131       
  ...n-registry.ts |   95.27 |    88.23 |   98.33 |   95.27 | ...1478,1492-1494 
  ...w-snapshot.ts |   75.73 |    72.22 |    87.5 |   75.73 | ...21,445,452-454 
  worktree-pin.ts  |     100 |    88.23 |     100 |     100 | 78,99             
 src/agents/arena  |   76.96 |    68.22 |   78.94 |   76.96 |                   
  ...gentClient.ts |   79.47 |    88.88 |   81.81 |   79.47 | ...68-183,189-204 
  ArenaManager.ts  |   75.91 |     65.2 |   78.57 |   75.91 | ...1888,1894-1895 
  arena-events.ts  |   64.44 |      100 |      50 |   64.44 | ...71-175,178-183 
  diff-summary.ts  |    87.5 |    72.34 |     100 |    87.5 | ...32-133,137-138 
  index.ts         |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...gents/backends |   78.07 |    85.19 |   76.12 |   78.07 |                   
  ITermBackend.ts  |   97.97 |    93.93 |     100 |   97.97 | ...78-180,255,307 
  ...essBackend.ts |   90.87 |    85.24 |   93.18 |   90.87 | ...83,685,687-688 
  TmuxBackend.ts   |    90.7 |    76.55 |   97.36 |    90.7 | ...87,697,743-747 
  detect.ts        |   31.25 |      100 |       0 |   31.25 | 34-88             
  index.ts         |     100 |      100 |     100 |     100 |                   
  iterm-it2.ts     |     100 |     92.1 |     100 |     100 | 37-38,106         
  tmux-commands.ts |    6.64 |      100 |    3.03 |    6.64 | ...93-363,386-503 
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...agents/runtime |   93.32 |    87.44 |   91.34 |   93.32 |                   
  agent-context.ts |     100 |      100 |     100 |     100 |                   
  agent-core.ts    |   90.27 |    80.44 |   80.95 |   90.27 | ...2525,2571-2573 
  agent-events.ts  |     100 |      100 |     100 |     100 |                   
  ...t-headless.ts |   93.49 |    89.41 |   83.33 |   93.49 | ...96-497,500-501 
  ...nteractive.ts |   81.01 |    82.35 |   76.66 |   81.01 | ...33,535-538,541 
  ...statistics.ts |   98.29 |    82.55 |     100 |   98.29 | 141,165,206,239   
  agent-types.ts   |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...ool-policy.ts |   98.38 |      100 |    92.3 |   98.38 | 85-86             
  ...low-budget.ts |     100 |      100 |     100 |     100 |                   
  ...-scheduler.ts |   97.43 |    96.36 |     100 |   97.43 | 128-130           
  ...ow-journal.ts |   92.78 |    78.12 |     100 |   92.78 | ...49-150,192-194 
  ...ta-literal.ts |   95.96 |    92.68 |     100 |   95.96 | ...78-379,395-396 
  ...chestrator.ts |   93.87 |    90.47 |   91.48 |   93.87 | ...2216,2309-2312 
  ...ow-prompts.ts |     100 |      100 |     100 |     100 |                   
  ...low-runner.ts |   95.77 |    84.16 |      95 |   95.77 | ...88,356,376-379 
  ...ow-sandbox.ts |   97.29 |    88.84 |     100 |   97.29 | ...1835,1841-1842 
  ...flow-saved.ts |   96.51 |    94.36 |     100 |   96.51 | 134-135,234-237   
  ...flow-stall.ts |    97.9 |    83.33 |     100 |    97.9 | 170-171,270       
 src/agents/tasks  |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/agents/team   |   84.25 |    85.18 |   91.03 |   84.25 |                   
  TeamManager.ts   |   77.21 |    83.04 |   83.87 |   77.21 | ...1832,1855-1856 
  identity.ts      |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...sionBridge.ts |     100 |      100 |     100 |     100 |                   
  mailbox.ts       |   96.02 |    87.23 |     100 |   96.02 | 352-358           
  ...ptAddendum.ts |     100 |      100 |     100 |     100 |                   
  tasks.ts         |   89.29 |       83 |     100 |   89.29 | ...1000,1044-1045 
  team-events.ts   |   73.68 |      100 |   66.66 |   73.68 | 140-144,151-155   
  teamHelpers.ts   |   91.71 |    94.44 |      95 |   91.71 | ...18-319,355-365 
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...eam/test-utils |   95.06 |    95.16 |   98.21 |   95.06 |                   
  ...on-harness.ts |   96.49 |       85 |     100 |   96.49 | 128-129,141-142   
  fake-agent.ts    |     100 |    96.77 |     100 |     100 | 158,167           
  fake-backend.ts  |   86.46 |    97.61 |   95.83 |   86.46 | 124-146           
 src/config        |   85.58 |    87.79 |   77.53 |   85.58 |                   
  approval-mode.ts |     100 |      100 |     100 |     100 |                   
  ...xtDefaults.ts |     100 |      100 |     100 |     100 |                   
  config.ts        |   84.12 |     87.1 |   75.28 |   84.12 | ...9001,9008-9009 
  ...ionManager.ts |     100 |     90.9 |     100 |     100 | 27                
  models.ts        |     100 |      100 |     100 |     100 |                   
  ...sDiscovery.ts |   97.46 |    93.05 |     100 |   97.46 | ...04,182-183,202 
  storage.ts       |   96.02 |    93.38 |   89.28 |   96.02 | ...18-719,722-723 
 ...nfirmation-bus |   98.27 |    97.22 |     100 |   98.27 |                   
  message-bus.ts   |   98.14 |    97.14 |     100 |   98.14 | 42-43             
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/core          |   92.66 |    88.53 |   93.83 |   92.66 |                   
  ...on-restore.ts |   88.23 |    85.41 |     100 |   88.23 | ...60,63-64,67-68 
  baseLlmClient.ts |    88.4 |    83.68 |   81.81 |    88.4 | ...59,672,678-680 
  client.ts        |   92.24 |     88.1 |   91.48 |   92.24 | ...4522,4620-4621 
  ...tGenerator.ts |   87.45 |    88.09 |   88.88 |   87.45 | ...08-509,554-560 
  ...lScheduler.ts |   89.82 |    84.83 |   94.73 |   89.82 | ...6483,6511-6527 
  ...entContext.ts |   96.63 |    90.13 |   96.66 |   96.63 | ...42,444-445,512 
  geminiChat.ts    |   95.18 |    90.76 |   96.69 |   95.18 | ...5700,5745-5746 
  geminiRequest.ts |     100 |      100 |     100 |     100 |                   
  genai-compat.ts  |     100 |      100 |     100 |     100 |                   
  ...MediaLimit.ts |     100 |       96 |     100 |     100 | 96                
  ...htProtocol.ts |    9.09 |      100 |       0 |    9.09 | ...9,62-66,69-110 
  ...ream-error.ts |     100 |      100 |     100 |     100 |                   
  logger.ts        |   87.41 |    87.02 |     100 |   87.41 | ...64-568,614-628 
  ...lay-buffer.ts |     100 |      100 |     100 |     100 |                   
  ...dispatcher.ts |     100 |      100 |     100 |     100 |                   
  ...tyDefaults.ts |     100 |      100 |     100 |     100 |                   
  ...olExecutor.ts |   93.54 |    83.33 |      50 |   93.54 | 46-47             
  output-styles.ts |     100 |      100 |     100 |     100 |                   
  ...on-helpers.ts |   93.49 |    78.57 |     100 |   93.49 | ...10-211,228-229 
  ...issionFlow.ts |   98.98 |    96.96 |     100 |   98.98 | 109               
  ...try-policy.ts |     100 |      100 |     100 |     100 |                   
  ...ell-policy.ts |   94.89 |    88.54 |     100 |   94.89 | ...51-252,297-298 
  prompts.ts       |   93.89 |    91.66 |      85 |   93.89 | ...1272,1475-1476 
  ...ing-effort.ts |     100 |      100 |     100 |     100 |                   
  ...n-recovery.ts |   95.13 |       80 |     100 |   95.13 | ...06-107,142-144 
  ...t-profiler.ts |    97.9 |    81.15 |   88.23 |    97.9 | 117,124-125,130   
  ...port-retry.ts |     100 |      100 |     100 |     100 |                   
  tokenLimits.ts   |     100 |    91.89 |     100 |     100 | 87,122-139        
  ...-arguments.ts |     100 |      100 |     100 |     100 |                   
  ...reparation.ts |     100 |      100 |     100 |     100 |                   
  ...tion-guard.ts |   90.38 |    94.73 |     100 |   90.38 | 83-87             
  ...allIdUtils.ts |   98.81 |    91.22 |     100 |   98.81 | 43,52             
  ...okTriggers.ts |   99.45 |    92.43 |     100 |   99.45 | 182,193           
  ...terruption.ts |     100 |     92.3 |     100 |     100 | 86,104            
  turn.ts          |   99.19 |    94.48 |     100 |   99.19 | 707-708,777       
  ...l-fallback.ts |     100 |      100 |     100 |     100 |                   
 ...ntentGenerator |   96.59 |    89.11 |   97.43 |   96.59 |                   
  ...tGenerator.ts |   97.67 |    88.91 |   97.43 |   97.67 | ...1497,1526,1537 
  converter.ts     |   96.19 |    89.25 |     100 |   96.19 | ...1334,1555-1557 
  index.ts         |       0 |        0 |       0 |       0 | 1-21              
  usage.ts         |     100 |      100 |     100 |     100 |                   
 ...ntentGenerator |   89.24 |    72.72 |   94.11 |   89.24 |                   
  ...tGenerator.ts |   87.54 |    71.42 |   93.75 |   87.54 | ...93-294,356-362 
  index.ts         |     100 |    85.71 |     100 |     100 | 51                
 ...ntentGenerator |   96.65 |     91.3 |   95.23 |   96.65 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...tGenerator.ts |   96.59 |    90.75 |      95 |   96.59 | ...1299-1300,1328 
  ...tDetection.ts |     100 |      100 |     100 |     100 |                   
 ...ntentGenerator |    92.2 |    90.85 |   96.58 |    92.2 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  converter.ts     |   91.26 |    89.66 |   96.87 |   91.26 | ...1948,2117-2132 
  errorHandler.ts  |     100 |      100 |     100 |     100 |                   
  index.ts         |   68.25 |    82.35 |      50 |   68.25 | 44-53,74-78,90-94 
  ...tGenerator.ts |      70 |    73.33 |     100 |      70 | ...07-112,121-127 
  pipeline.ts      |   95.39 |    91.56 |     100 |   95.39 | ...1458-1459,1566 
  ...ix-caching.ts |   95.23 |    92.85 |     100 |   95.23 | 45-46,69-70       
  ...ureContext.ts |     100 |      100 |     100 |     100 |                   
  ...ingOptions.ts |       0 |        0 |       0 |       0 | 1                 
  ...CallParser.ts |   92.11 |    92.25 |     100 |   92.11 | ...21-522,542-545 
  ...kingParser.ts |     100 |    96.87 |     100 |     100 | 42                
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...rator/provider |   97.23 |    91.92 |   98.64 |   97.23 |                   
  dashscope.ts     |   98.42 |    95.27 |   96.55 |   98.42 | ...51-752,894-895 
  deepseek.ts      |   95.23 |    89.79 |     100 |   95.23 | ...49-150,163-164 
  default.ts       |   98.87 |       96 |     100 |   98.87 | 178,304           
  index.ts         |     100 |      100 |     100 |     100 |                   
  mimo.ts          |   94.11 |    66.66 |     100 |   94.11 | 29,52-53          
  minimax.ts       |     100 |      100 |     100 |     100 |                   
  mistral.ts       |   96.07 |    73.33 |     100 |   96.07 | 32-33             
  modelscope.ts    |     100 |      100 |     100 |     100 |                   
  openrouter.ts    |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 |                   
  utils.ts         |     100 |      100 |     100 |     100 |                   
  zai.ts           |      90 |    76.31 |     100 |      90 | ...,72-73,173-175 
 src/extension     |   88.79 |    86.19 |   93.46 |   88.79 |                   
  ...ive-safety.ts |   97.77 |    93.75 |     100 |   97.77 | 100-101           
  ...-converter.ts |   80.55 |    73.66 |     100 |   80.55 | ...1133,1179-1180 
  corruptFile.ts   |     100 |       50 |     100 |     100 | 40-45             
  ...-converter.ts |     100 |      100 |     100 |     100 |                   
  ...git-client.ts |     100 |      100 |     100 |     100 |                   
  ...redentials.ts |   95.33 |    89.47 |     100 |   95.33 | ...21-122,173-175 
  ...me-refresh.ts |     100 |      100 |     100 |     100 |                   
  ...sion-store.ts |   92.82 |     89.1 |    98.3 |   92.82 | ...1641-1647,1691 
  ...ionManager.ts |   84.52 |    83.52 |      83 |   84.52 | ...3139,3177-3178 
  ...references.ts |     100 |     90.9 |     100 |     100 | ...05,129,197,200 
  ...onSettings.ts |    92.3 |     94.4 |     100 |    92.3 | ...98-501,570-571 
  ...-converter.ts |    75.9 |    85.71 |   85.71 |    75.9 | ...98,202,214-248 
  github.ts        |   92.43 |    87.52 |     100 |   92.43 | ...1293-1294,1304 
  http-client.ts   |   84.61 |       80 |     100 |   84.61 | 20-21             
  i18n.ts          |   78.26 |       96 |      50 |   78.26 | 104-110,116-123   
  index.ts         |     100 |      100 |     100 |     100 |                   
  marketplace.ts   |   88.39 |    83.11 |     100 |   88.39 | ...08,494,507-508 
  ...ork-policy.ts |   89.72 |    90.16 |     100 |   89.72 | ...36,148-154,156 
  npm.ts           |   89.02 |    81.81 |     100 |   89.02 | ...86-688,695-700 
  override.ts      |   94.11 |    93.54 |     100 |   94.11 | 63-64,81-82       
  ...-converter.ts |   94.89 |    90.41 |     100 |   94.89 | ...50-151,222-224 
  redaction.ts     |     100 |      100 |     100 |     100 |                   
  settings.ts      |   66.26 |      100 |      50 |   66.26 | 81-107,141-146    
  ...ceRegistry.ts |   94.01 |    83.33 |     100 |   94.01 | ...38-344,365-366 
  storage.ts       |     100 |      100 |     100 |     100 |                   
  ...ableSchema.ts |     100 |      100 |     100 |     100 |                   
  variables.ts     |   88.95 |    84.21 |     100 |   88.95 | ...32-235,238-241 
  ...extraction.ts |   85.77 |       81 |   89.47 |   85.77 | ...02-205,260-261 
 ...ent-plugins-v1 |   84.94 |    79.51 |     100 |   84.94 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  manifest.ts      |   81.87 |    84.48 |     100 |   81.87 | ...55-156,161-174 
  mcp.ts           |   84.98 |    79.56 |     100 |   84.98 | ...88-389,419-420 
  paths.ts         |     100 |    94.44 |     100 |     100 | 59                
  skills.ts        |   82.31 |    63.88 |     100 |   82.31 | ...38-141,150-151 
 src/followup      |   84.72 |    81.87 |   86.84 |   84.72 |                   
  followupState.ts |   98.44 |    95.74 |     100 |   98.44 | 236-237           
  index.ts         |     100 |      100 |     100 |     100 |                   
  overlayFs.ts     |   96.29 |    88.88 |     100 |   96.29 | 78,108,122        
  speculation.ts   |   76.36 |     70.4 |   58.33 |   76.36 | ...42-743,750-751 
  ...onToolGate.ts |   97.97 |     87.5 |     100 |   97.97 | 105,110           
  ...nGenerator.ts |   86.11 |    87.17 |     100 |   86.11 | ...39-244,356-358 
 src/generated     |       0 |        0 |       0 |       0 |                   
  git-commit.ts    |       0 |        0 |       0 |       0 | 1-10              
 src/goals         |   93.01 |    89.39 |   94.67 |   93.01 |                   
  ...eGoalStore.ts |   87.61 |    88.88 |   86.66 |   87.61 | ...85-188,196-204 
  ...t-verifier.ts |   96.27 |    91.17 |     100 |   96.27 | ...20,143-146,163 
  ...checkpoint.ts |   81.48 |    76.19 |     100 |   81.48 | ...02-105,115-118 
  ...ion-prompt.ts |     100 |      100 |     100 |     100 |                   
  goal-evidence.ts |   88.54 |    87.98 |   97.67 |   88.54 | ...1200,1223-1226 
  ...projection.ts |   66.66 |    72.97 |   33.33 |   66.66 | ...87,190,194-196 
  ...ersistence.ts |   87.36 |    85.71 |    87.5 |   87.36 | ...53-154,185-190 
  goal-protocol.ts |   96.87 |    95.65 |     100 |   96.87 | 215-216           
  goal-reducer.ts  |   95.27 |    92.82 |   97.29 |   95.27 | ...87,566,584-585 
  goal-runtime.ts  |   96.38 |    89.73 |   95.83 |   96.38 | ...1349-1350,1480 
  goal-tools.ts    |   98.38 |    94.17 |   95.83 |   98.38 | ...05-206,307-308 
  ...rn-context.ts |     100 |      100 |     100 |     100 |                   
  goal-verifier.ts |   92.46 |    93.02 |     100 |   92.46 | ...69-172,185-187 
  goal-wire.ts     |       0 |        0 |       0 |       0 | 1-28              
  goalHook.ts      |   96.91 |    92.42 |     100 |   96.91 | 115-120,221-222   
  goalJudge.ts     |   95.84 |    87.09 |     100 |   95.84 | ...55-356,448-449 
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/hooks         |   88.07 |    86.25 |   88.54 |   88.07 |                   
  ...okRegistry.ts |   86.48 |    77.08 |     100 |   86.48 | ...41-344,362-369 
  ...bortSignal.ts |     100 |      100 |     100 |     100 |                   
  context-usage.ts |     100 |      100 |     100 |     100 |                   
  ...terpolator.ts |   96.66 |    93.33 |     100 |   96.66 | 66-67             
  ...HookRunner.ts |   96.68 |    87.23 |     100 |   96.68 | 110-112,231-233   
  ...Aggregator.ts |   96.57 |    91.48 |     100 |   96.57 | ...20-321,402,404 
  ...entHandler.ts |   95.57 |    84.76 |   94.73 |   95.57 | ...1040-1041,1051 
  hookPlanner.ts   |   87.55 |    85.54 |   86.66 |   87.55 | ...22-226,233-244 
  hookRegistry.ts  |   92.53 |    85.43 |     100 |   92.53 | ...39,458,462,466 
  hookRunner.ts    |   62.65 |    72.34 |   66.66 |   62.65 | ...70-771,780-781 
  hookSystem.ts    |   87.64 |     98.5 |   70.83 |   87.64 | ...58-759,765-766 
  ...HookRunner.ts |   79.06 |    66.66 |      80 |   79.06 | ...33-434,452-456 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...edCallback.ts |     100 |      100 |     100 |     100 |                   
  ...HookRunner.ts |   94.19 |    84.37 |   81.81 |   94.19 | ...76-384,458-459 
  ...SkillHooks.ts |   78.75 |       75 |   66.66 |   78.75 | 62-66,137-152     
  ...oksManager.ts |   94.87 |    88.88 |     100 |   94.87 | ...84,325,327-329 
  ssrfGuard.ts     |   86.45 |    87.91 |     100 |   86.45 | ...85,289-295,301 
  stopHookCap.ts   |     100 |      100 |     100 |     100 |                   
  trustedHooks.ts  |      90 |    52.63 |     100 |      90 | ...53,66-67,97-98 
  types.ts         |   94.25 |    96.09 |   88.88 |   94.25 | ...46-547,632-636 
  urlValidator.ts  |     100 |      100 |     100 |     100 |                   
  ...it-context.ts |     100 |      100 |     100 |     100 |                   
 src/ide           |   76.98 |    85.03 |   79.03 |   76.98 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  detect-ide.ts    |     100 |      100 |     100 |     100 |                   
  ide-client.ts    |   69.16 |    84.65 |   68.29 |   69.16 | ...1068,1097-1105 
  ide-installer.ts |   89.06 |    79.31 |     100 |   89.06 | ...36,143-147,160 
  ideContext.ts    |     100 |      100 |     100 |     100 |                   
  process-utils.ts |   84.84 |    71.79 |     100 |   84.84 | ...37,151,193-194 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/lsp           |   58.96 |    70.67 |   66.49 |   58.96 |                   
  ...nfigLoader.ts |   80.55 |    72.22 |   95.65 |   80.55 | ...02-504,508-514 
  ...ionFactory.ts |   42.81 |    73.07 |      50 |   42.81 | ...76-427,433-450 
  ...Normalizer.ts |   23.09 |    13.72 |   30.43 |   23.09 | ...04-905,909-924 
  ...verManager.ts |   75.73 |     80.1 |   79.66 |   75.73 | ...1346,1352-1382 
  ...eLspClient.ts |   32.78 |    81.81 |   21.05 |   32.78 | ...89-293,299-300 
  ...LspService.ts |      60 |    73.36 |   78.26 |      60 | ...1575,1635-1645 
  configHash.ts    |     100 |      100 |     100 |     100 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/mcp           |    82.3 |    77.81 |   78.33 |    82.3 |                   
  configHash.ts    |     100 |      100 |     100 |     100 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...h-provider.ts |   86.95 |      100 |   33.33 |   86.95 | ...,93,97,101-102 
  ...h-provider.ts |   79.31 |    58.06 |     100 |   79.31 | ...26-933,940-942 
  ...en-storage.ts |   98.78 |    97.95 |     100 |   98.78 | 106-107           
  oauth-utils.ts   |   73.61 |    85.48 |    92.3 |   73.61 | ...46-366,392-421 
  ...n-provider.ts |   89.83 |       96 |   45.45 |   89.83 | ...43,147,151-152 
 .../token-storage |   82.12 |    88.48 |   89.28 |   82.12 |                   
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   87.08 |    87.71 |   95.23 |   87.08 | ...00-201,214-215 
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   68.14 |    82.35 |   64.28 |   68.14 | ...81-295,298-314 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/memory        |   88.97 |    85.08 |   91.31 |   88.97 |                   
  ...y-document.ts |   89.52 |    84.61 |     100 |   89.52 | ...24-325,329-330 
  ...nel-memory.ts |   97.36 |    96.63 |   96.42 |   97.36 | ...91-293,367-368 
  dream.ts         |    64.6 |    72.22 |      50 |    64.6 | ...04-109,124-165 
  ...entPlanner.ts |     100 |    83.33 |     100 |     100 | 135,145           
  entries.ts       |   75.59 |    84.84 |   83.33 |   75.59 | ...56-157,172-180 
  extract.ts       |   93.82 |    84.09 |     100 |   93.82 | 78-83,122,154-157 
  ...entPlanner.ts |   91.55 |    76.74 |     100 |   91.55 | ...05,118-121,296 
  ...ionPlanner.ts |       0 |        0 |       0 |       0 | 1                 
  forget.ts        |   90.16 |    78.76 |   94.44 |   90.16 | ...06,629,642-648 
  indexer.ts       |   94.14 |       84 |     100 |   94.14 | ...32-233,334,337 
  ...kill-agent.ts |   97.94 |    89.36 |     100 |   97.94 | 82-83,179-180     
  manager.ts       |   78.51 |    83.16 |   77.77 |   78.51 | ...1487,1500-1502 
  ...ent-config.ts |   86.99 |    82.69 |   86.36 |   86.99 | ...69,389,396-402 
  memoryAge.ts     |   90.47 |    83.33 |     100 |   90.47 | 50-51             
  ...yDiscovery.ts |   93.42 |    90.72 |     100 |   93.42 | ...11,370,592-595 
  paths.ts         |     100 |      100 |     100 |     100 |                   
  ...ing-skills.ts |     100 |       72 |     100 |     100 | 31-35,73-78,97    
  prompt.ts        |   97.26 |    86.79 |     100 |   97.26 | ...10-218,222,225 
  recall.ts        |   86.86 |    86.23 |   92.85 |   86.86 | ...33-538,571-582 
  refresh.ts       |   93.58 |    89.58 |     100 |   93.58 | ...75-176,183-184 
  ...ceSelector.ts |    93.2 |    85.71 |     100 |    93.2 | ...45-146,148-149 
  remember.ts      |   98.88 |    90.19 |     100 |   98.88 | 50,70             
  scan.ts          |   93.75 |       80 |     100 |   93.75 | ...08-109,154,157 
  scopes.ts        |     100 |      100 |     100 |     100 |                   
  ...et-scanner.ts |     100 |      100 |     100 |     100 |                   
  ...entPlanner.ts |   76.89 |    74.07 |   72.22 |   76.89 | ...47-451,454,460 
  status.ts        |   10.52 |      100 |       0 |   10.52 | 41-98             
  store.ts         |   92.92 |    81.81 |     100 |   92.92 | ...16-117,147-148 
  ...git-status.ts |     100 |    85.71 |     100 |     100 | 27                
  ...cret-guard.ts |     100 |      100 |     100 |     100 |                   
  ...emory-sync.ts |   94.24 |    82.85 |     100 |   94.24 | ...34-236,246-247 
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...ontextFile.ts |   81.21 |     79.1 |   81.81 |   81.21 | ...66-280,294-299 
 src/mocks         |       0 |        0 |       0 |       0 |                   
  msw.ts           |       0 |        0 |       0 |       0 | 1-9               
 src/models        |   92.82 |    89.39 |   91.35 |   92.82 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...tor-config.ts |   97.77 |    91.83 |     100 |   97.77 | 155,161,171       
  ...capability.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...nfigErrors.ts |   79.43 |    64.51 |   85.71 |   79.43 | ...,89-96,131-142 
  ...igResolver.ts |   98.71 |    93.33 |     100 |   98.71 | 166,328,334       
  modelRegistry.ts |     100 |    98.11 |     100 |     100 | 177,262           
  modelsConfig.ts  |   89.36 |    86.93 |   88.09 |   89.36 | ...1407,1436-1437 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/output        |     100 |      100 |     100 |     100 |                   
  ...-formatter.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/permissions   |   83.79 |    91.18 |   71.07 |   83.79 |                   
  autoMode.ts      |   97.66 |    93.13 |     100 |   97.66 | ...82-589,635,712 
  ...transcript.ts |      98 |       84 |     100 |      98 | 200-201           
  classifier.ts    |      94 |    94.54 |     100 |      94 | 158-165,389-393   
  ...erousRules.ts |     100 |    89.36 |     100 |     100 | 110,133,147,175   
  ...alTracking.ts |     100 |      100 |     100 |     100 |                   
  ...e-commands.ts |   86.77 |     73.8 |     100 |   86.77 | 131-141,210-214   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...on-manager.ts |   86.63 |    89.01 |      80 |   86.63 | ...1111,1217-1221 
  rule-parser.ts   |   94.49 |    92.74 |     100 |   94.49 | ...1447,1481-1483 
  ...-semantics.ts |   70.44 |    91.07 |   46.66 |   70.44 | ...2237,2311-2314 
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...sifier-prompts |   99.04 |    95.23 |     100 |   99.04 |                   
  system-prompt.ts |   99.04 |    95.23 |     100 |   99.04 | 220               
 src/prompts       |   83.63 |      100 |    87.5 |   83.63 |                   
  mcp-prompts.ts   |   18.18 |      100 |       0 |   18.18 | 11-19             
  ...t-registry.ts |     100 |      100 |     100 |     100 |                   
 src/providers     |   83.78 |    78.34 |   81.25 |   83.78 |                   
  all-providers.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  install.ts       |   93.11 |     84.5 |     100 |   93.11 | ...56-257,330-331 
  ...der-config.ts |   75.91 |    73.48 |   78.26 |   75.91 | ...74-475,503-504 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...viders/presets |   98.04 |    91.66 |   63.63 |   98.04 |                   
  ...oding-plan.ts |   87.34 |      100 |       0 |   87.34 | 81-83,86-88,90-93 
  ...a-standard.ts |     100 |      100 |     100 |     100 |                   
  ...token-plan.ts |     100 |      100 |     100 |     100 |                   
  ...m-provider.ts |   97.05 |    81.25 |      75 |   97.05 | 118-119           
  deepseek.ts      |     100 |      100 |     100 |     100 |                   
  grok.ts          |     100 |      100 |     100 |     100 |                   
  idealab.ts       |     100 |      100 |     100 |     100 |                   
  minimax.ts       |     100 |      100 |     100 |     100 |                   
  modelscope.ts    |     100 |      100 |     100 |     100 |                   
  moonshot.ts      |     100 |      100 |     100 |     100 |                   
  openrouter.ts    |     100 |      100 |     100 |     100 |                   
  requesty.ts      |     100 |      100 |     100 |     100 |                   
  zai.ts           |     100 |      100 |     100 |     100 |                   
 src/qwen          |   85.36 |    78.59 |   95.94 |   85.36 |                   
  ...tGenerator.ts |    98.6 |    98.14 |     100 |    98.6 | 103-104           
  qwenOAuth2.ts    |   82.79 |    73.45 |    90.9 |   82.79 | ...1205-1221,1251 
  ...kenManager.ts |   85.36 |     76.8 |     100 |   85.36 | ...52-757,778-783 
 src/resources     |     100 |      100 |     100 |     100 |                   
  ...e-registry.ts |     100 |      100 |     100 |     100 |                   
 src/services      |   90.71 |    86.32 |   96.82 |   90.71 |                   
  ...ionTrailer.ts |     100 |      100 |     100 |     100 |                   
  ...llRegistry.ts |   98.48 |    87.28 |     100 |   98.48 | 81-82,105,474-475 
  branch-points.ts |     100 |    95.23 |     100 |     100 | ...20,211,224,327 
  ...ionService.ts |   97.72 |    96.53 |     100 |   97.72 | ...1081,1224-1232 
  ...ingService.ts |   92.43 |    87.77 |   94.73 |   92.43 | ...2843,2858-2859 
  ...ttribution.ts |   91.73 |    87.71 |      90 |   91.73 | ...80-685,826-827 
  ...utSlimming.ts |    97.2 |    94.23 |     100 |    97.2 | ...39-340,378-381 
  cronScheduler.ts |   94.17 |    90.45 |      98 |   94.17 | ...1333,1736-1737 
  cronTasksFile.ts |   96.34 |    91.96 |     100 |   96.34 | ...11,336-337,483 
  cronTasksLock.ts |   94.44 |    89.47 |     100 |   94.44 | ...02-103,132-133 
  ...eryService.ts |   96.22 |    93.54 |      90 |   96.22 | 121,155-156,161   
  ...oryService.ts |   88.17 |    79.02 |    92.3 |   88.17 | ...1303,1344-1347 
  fileReadCache.ts |    97.5 |    96.07 |     100 |    97.5 | 349-350,363-364   
  ...temService.ts |    92.8 |    84.68 |   94.11 |    92.8 | ...53,479-486,531 
  ...ratedFiles.ts |      96 |    88.23 |     100 |      96 | 119-120,146-147   
  gitInit.ts       |     100 |      100 |     100 |     100 |                   
  ...reeService.ts |   74.75 |    70.76 |   96.07 |   74.75 | ...2296,2325-2326 
  ...on-service.ts |   86.58 |    74.39 |     100 |   86.58 | ...56-460,498-499 
  ...references.ts |   98.57 |    91.42 |     100 |   98.57 | 156-157,217-218   
  ...ionService.ts |   98.26 |    97.23 |     100 |   98.26 | ...65-866,889-890 
  ...ticsDumper.ts |   98.37 |    95.23 |     100 |   98.37 | 185-186           
  ...ureMonitor.ts |   95.82 |    90.52 |   97.05 |   95.82 | ...60,861,875-877 
  ...orRegistry.ts |   97.22 |    90.99 |     100 |   97.22 | ...55-456,609-610 
  ...ttachments.ts |   97.74 |     90.9 |     100 |   97.74 | 298-308,646       
  ...pi-history.ts |   98.94 |    89.13 |     100 |   98.94 | 43                
  ...ersistence.ts |   91.67 |    80.64 |     100 |   91.67 | ...1062-1063,1091 
  ...tory-state.ts |     100 |       95 |     100 |     100 | 31                
  ...on-service.ts |   94.61 |    92.44 |   97.22 |   94.61 | ...11-613,669-677 
  ...pr-service.ts |   96.26 |    89.13 |     100 |   96.26 | 90-93             
  ...ce-service.ts |    98.5 |    94.11 |    90.9 |    98.5 | 64-65             
  ...n-registry.ts |   98.73 |    96.29 |     100 |   98.73 | 584,638-639,692   
  ...ken-counts.ts |     100 |       96 |     100 |     100 | 58                
  ...ipt-reader.ts |    93.7 |    91.09 |    97.8 |    93.7 | ...2791-2792,2869 
  ...turn-state.ts |   94.11 |     90.9 |   91.66 |   94.11 | 108-112,129-130   
  ...est-helper.ts |       0 |        0 |       0 |       0 | 1-65              
  ...iter-lease.ts |   83.14 |    74.47 |   97.61 |   83.14 | ...2433,2445-2448 
  sessionRecap.ts  |   67.56 |    43.47 |     100 |   67.56 | ...60,178,180-183 
  ...ionService.ts |   90.72 |    86.62 |   94.28 |   90.72 | ...3530-3531,3572 
  sessionTitle.ts  |   96.35 |    79.71 |     100 |   96.35 | ...08-311,342-343 
  ...ContextEnv.ts |     100 |    94.73 |     100 |     100 | 76,111            
  ...ionService.ts |   84.43 |    78.45 |   97.18 |   84.43 | ...2496,2502-2507 
  ...pInhibitor.ts |   97.42 |    92.77 |     100 |   97.42 | ...30,169,369-370 
  ...e-encoding.ts |   85.96 |    76.47 |     100 |   85.96 | 58-61,64-65,78-79 
  ...Estimation.ts |     100 |    94.11 |     100 |     100 | 118               
  ...ageService.ts |   97.76 |    91.59 |   93.75 |   97.76 | ...61-262,366,567 
  ...ite-origin.ts |     100 |    93.33 |     100 |     100 | 32                
  ...UseSummary.ts |   94.63 |    88.46 |     100 |   94.63 | ...62-164,214-215 
  ...rd-service.ts |     100 |    88.37 |     100 |     100 | ...29,145-146,241 
  ...oryService.ts |   90.77 |    84.92 |     100 |   90.77 | ...43-546,598-599 
  ...reeCleanup.ts |   14.42 |      100 |   33.33 |   14.42 | 58-186            
  ...ionService.ts |   88.36 |     87.8 |     100 |   88.36 | ...48-449,465-466 
 ...icrocompaction |   98.91 |    95.08 |     100 |   98.91 |                   
  microcompact.ts  |   98.91 |    95.08 |     100 |   98.91 | ...60,769,778-779 
 ...s/visionBridge |    98.8 |    92.12 |     100 |    98.8 |                   
  ...capability.ts |     100 |      100 |     100 |     100 |                   
  ...part-utils.ts |     100 |      100 |     100 |     100 |                   
  ...ion-bridge.ts |   98.72 |    82.35 |     100 |   98.72 | 65,71             
  ...ge-service.ts |   98.61 |     94.7 |     100 |   98.61 | ...06,666,679-680 
 src/skills        |   89.77 |    86.05 |   94.73 |   89.77 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...activation.ts |     100 |    93.33 |     100 |     100 | 93,112            
  skill-curator.ts |   89.71 |    81.54 |     100 |   89.71 | ...01-902,904-907 
  skill-load.ts    |   94.84 |    87.69 |     100 |   94.84 | ...03,223,235-237 
  skill-manager.ts |   86.09 |    85.64 |   86.11 |   86.09 | ...1243,1250-1254 
  skill-paths.ts   |   90.42 |     87.5 |     100 |   90.42 | ...19-120,125-126 
  symlinkScope.ts  |     100 |      100 |     100 |     100 |                   
  types.ts         |   97.91 |    98.07 |     100 |   97.91 | 277-278           
 ...ataviz/scripts |   80.06 |    95.23 |   88.23 |   80.06 |                   
  ...te_palette.js |   80.06 |    95.23 |   88.23 |   80.06 | 261-296,306-328   
 ...s/bundled/loop |   97.48 |    95.77 |     100 |   97.48 |                   
  ...omous-loop.ts |     100 |      100 |     100 |     100 |                   
  ...-task-file.ts |   94.85 |     92.4 |     100 |   94.85 | ...56,367,375-376 
  ...k-resolver.ts |     100 |      100 |     100 |     100 |                   
 src/subagents     |   88.56 |    89.42 |    98.3 |   88.56 |                   
  ...ter-schema.ts |     100 |    98.07 |     100 |     100 | 99                
  ...tin-agents.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...nt-manager.ts |   85.51 |    86.52 |   97.43 |   85.51 | ...1583,1660-1661 
  types.ts         |     100 |      100 |     100 |     100 |                   
  validation.ts    |   92.46 |    95.18 |     100 |   92.46 | 47-52,63-68,71-76 
 src/telemetry     |   82.73 |     84.6 |   86.17 |   82.73 |                   
  ...ty-tracker.ts |     100 |      100 |     100 |     100 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...on-metrics.ts |   99.08 |    80.95 |     100 |   99.08 | 185,199           
  ...on-tracing.ts |   80.71 |    81.91 |   79.16 |   80.71 | ...92,499-501,517 
  ...attributes.ts |   96.98 |    91.37 |     100 |   96.98 | ...47-348,366-367 
  ...ag-metrics.ts |     100 |    77.77 |     100 |     100 | 21,40             
  ...t-loop-lag.ts |   96.85 |    85.71 |     100 |   96.85 | 170-173           
  ...-exporters.ts |   65.38 |    83.33 |      50 |   65.38 | ...08-109,112-113 
  ...ai-content.ts |    74.5 |    66.41 |   91.66 |    74.5 | ...1480,1493-1502 
  ...i-provider.ts |     100 |    99.02 |     100 |     100 | 106               
  ...ai-request.ts |   87.52 |    92.79 |   83.78 |   87.52 | ...55-561,564-570 
  gen-ai-usage.ts  |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-111             
  ...-processor.ts |   99.12 |    96.03 |      95 |   99.12 | 150,379-380       
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-128             
  loggers.ts       |   60.73 |    78.01 |   66.66 |   60.73 | ...1507,1524-1544 
  metrics.ts       |   80.37 |    82.35 |   80.95 |   80.37 | ...1150,1153-1164 
  otlp-urls.ts     |     100 |      100 |     100 |     100 |                   
  ...attributes.ts |     100 |      100 |     100 |     100 |                   
  ...ime-config.ts |       0 |        0 |       0 |       0 | 1                 
  sanitize.ts      |      80 |    83.33 |     100 |      80 | 35-36,41-42       
  ...rters-grpc.ts |     100 |      100 |     100 |     100 |                   
  ...rters-http.ts |     100 |      100 |     100 |     100 |                   
  sdk-impl.ts      |   93.95 |    86.44 |      75 |   93.95 | ...41,483-484,500 
  sdk.ts           |    82.7 |     90.9 |   66.66 |    82.7 | ...00-204,242-264 
  ...on-context.ts |     100 |      100 |     100 |     100 |                   
  ...ion-events.ts |     100 |      100 |     100 |     100 |                   
  ...on-tracing.ts |   91.17 |    88.72 |    97.5 |   91.17 | ...1920,1949-1952 
  ...etry-utils.ts |     100 |      100 |     100 |     100 |                   
  ...l-decision.ts |     100 |      100 |     100 |     100 |                   
  trace-context.ts |     100 |      100 |     100 |     100 |                   
  ...e-id-utils.ts |     100 |      100 |     100 |     100 |                   
  tracer.ts        |   98.56 |    88.63 |     100 |   98.56 | 52,101            
  types.ts         |   83.26 |    88.66 |   86.36 |   83.26 | ...1467,1471-1478 
  uiTelemetry.ts   |   98.74 |    95.45 |   96.55 |   98.74 | ...26,475,622-623 
 ...ry/qwen-logger |   74.23 |     80.7 |      70 |   74.23 |                   
  event-types.ts   |       0 |        0 |       0 |       0 |                   
  qwen-logger.ts   |   74.23 |    80.53 |   69.49 |   74.23 | ...1122,1160-1161 
 src/test-utils    |   96.38 |    98.64 |   84.09 |   96.38 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  ...st-helpers.ts |   94.11 |       90 |     100 |   94.11 | 69-70             
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...mised-lock.ts |     100 |      100 |     100 |     100 |                   
  mock-tool.ts     |   94.85 |      100 |      80 |   94.85 | ...53,227-228,241 
  ...aceContext.ts |     100 |      100 |     100 |     100 |                   
 src/tools         |   87.44 |    85.88 |   90.04 |   87.44 |                   
  ...erQuestion.ts |   89.71 |    81.13 |    92.3 |   89.71 | ...66-367,374-375 
  ...-registrar.ts |    77.7 |    66.66 |   66.66 |    77.7 | ...72-277,292-294 
  ...ub-session.ts |   89.72 |    91.48 |   83.33 |   89.72 | ...06-307,318-325 
  cron-create.ts   |   90.64 |     93.1 |      75 |   90.64 | ...,73-74,223-231 
  cron-delete.ts   |   97.56 |      100 |   85.71 |   97.56 | 31-32             
  cron-list.ts     |   98.23 |    95.45 |   88.88 |   98.23 | 57-58             
  diffOptions.ts   |     100 |      100 |     100 |     100 |                   
  display-image.ts |   87.42 |    85.71 |    90.9 |   87.42 | ...29-134,194-195 
  edit.ts          |   82.76 |    86.88 |   82.35 |   82.76 | ...45-746,865-915 
  ...r-worktree.ts |   83.14 |    68.42 |   88.88 |   83.14 | ...84-187,278-279 
  enterPlanMode.ts |      85 |       84 |      90 |      85 | ...28-133,161-175 
  exit-worktree.ts |   83.29 |     83.8 |   94.73 |   83.29 | ...14-515,537-538 
  exitPlanMode.ts  |      95 |    85.29 |     100 |      95 | ...21-325,344,378 
  ...permission.ts |     100 |      100 |     100 |     100 |                   
  glob.ts          |   96.33 |     88.5 |     100 |   96.33 | ...24-225,373,376 
  grep.ts          |   90.73 |    86.71 |   86.36 |   90.73 | ...76-677,727-728 
  ...adTracking.ts |     100 |      100 |     100 |     100 |                   
  image-gen.ts     |   91.66 |    78.12 |   91.66 |   91.66 | ...13-214,221-222 
  list-agents.ts   |   94.11 |    83.33 |   85.71 |   94.11 | 31-32,47-48       
  loop-wakeup.ts   |   99.27 |     93.1 |     100 |   99.27 | 45                
  ls.ts            |   96.74 |    90.54 |     100 |   96.74 | 176-181,212,216   
  lsp.ts           |   72.71 |     59.9 |    90.9 |   72.71 | ...1212,1214-1215 
  ...nt-manager.ts |   82.06 |    80.15 |   85.71 |   82.06 | ...3234,3236-3237 
  mcp-client.ts    |   86.08 |     87.5 |   93.93 |   86.08 | ...2483,2487-2490 
  ...ry-timeout.ts |     100 |      100 |     100 |     100 |                   
  mcp-errors.ts    |     100 |      100 |     100 |     100 |                   
  ...pool-entry.ts |   79.21 |    85.71 |   81.57 |   79.21 | ...1341,1349-1350 
  ...ool-events.ts |       8 |        0 |       0 |       8 | 132-158           
  mcp-pool-key.ts  |    97.5 |    93.93 |     100 |    97.5 | 178-179           
  ...ce-content.ts |   96.55 |    91.17 |     100 |   96.55 | 80-82             
  mcp-retry.ts     |   97.67 |    95.65 |     100 |   97.67 | 131-132           
  ...ion-config.ts |     100 |      100 |     100 |     100 |                   
  mcp-status.ts    |     100 |      100 |     100 |     100 |                   
  mcp-tool.ts      |   97.95 |    92.37 |     100 |   97.95 | ...1161,1216-1217 
  ...sport-pool.ts |   83.98 |     80.3 |   88.46 |   83.98 | ...1409,1416-1420 
  ...ace-budget.ts |   87.27 |     82.6 |     100 |   87.27 | ...00-305,340-345 
  memory-config.ts |     100 |      100 |     100 |     100 |                   
  ...iable-tool.ts |     100 |    84.61 |     100 |     100 | 101,108           
  monitor.ts       |   91.82 |    83.09 |   88.46 |   91.82 | ...99,612,810-815 
  notebook-edit.ts |   85.71 |    77.39 |   82.35 |   85.71 | ...96-912,958-959 
  ...escendants.ts |   36.17 |    64.51 |   55.55 |   36.17 | ...46-310,385-390 
  ...nforcement.ts |   83.21 |    90.69 |     100 |   83.21 | 147-158,207-220   
  read-file.ts     |   95.49 |    88.61 |    87.5 |   95.49 | ...49,464,536-537 
  ...p-resource.ts |   96.85 |      100 |   91.66 |   96.85 | 92-96             
  readManyFiles.ts |   96.04 |    82.25 |     100 |   96.04 | ...41,594,604-608 
  ...d-artifact.ts |   85.68 |    81.59 |   94.73 |   85.68 | ...1071,1095-1096 
  ...t-findings.ts |   99.08 |    93.75 |    92.3 |   99.08 | 217-219           
  ...t-shutdown.ts |    87.2 |    86.66 |   77.77 |    87.2 | ...,75-79,162-165 
  ripGrep.ts       |    94.6 |    87.34 |   95.45 |    94.6 | ...33-734,740-741 
  ...-transport.ts |   71.42 |    55.55 |   71.42 |   71.42 | ...36-137,143-144 
  send-message.ts  |      80 |    89.74 |   66.66 |      80 | ...59-265,333-340 
  ...n-mcp-view.ts |   94.07 |    91.89 |    90.9 |   94.07 | 131-139           
  shell.ts         |   78.96 |    84.29 |      93 |   78.96 | ...5036,5111-5112 
  skill-utils.ts   |     100 |      100 |     100 |     100 |                   
  skill.ts         |   92.77 |    93.22 |   86.36 |   92.77 | ...80,584,630-652 
  ...-constants.ts |     100 |      100 |     100 |     100 |                   
  ...eticOutput.ts |   95.12 |      100 |      80 |   95.12 | 87-88             
  task-create.ts   |    94.4 |    93.75 |   83.33 |    94.4 | 45-49,63-64,95    
  task-list.ts     |   80.43 |    86.95 |   85.71 |   80.43 | ...67,121,125-132 
  task-stop.ts     |   93.14 |    96.29 |    87.5 |   93.14 | 39-40,54-64       
  task-update.ts   |   82.87 |     86.5 |   92.85 |   82.87 | ...54-564,588-599 
  team-create.ts   |   97.24 |    86.36 |   85.71 |   97.24 | 48-49,129-130     
  team-delete.ts   |   86.74 |    84.61 |   85.71 |   86.74 | 37-38,42-48,72-73 
  ...n-approval.ts |   92.14 |    96.96 |   81.81 |   92.14 | 38-39,42-43,93-99 
  todoWrite.ts     |   95.13 |    87.85 |   93.33 |   95.13 | ...23-527,540-545 
  ...repeat-key.ts |     100 |      100 |     100 |     100 |                   
  tool-error.ts    |     100 |      100 |     100 |     100 |                   
  tool-names.ts    |     100 |      100 |     100 |     100 |                   
  tool-registry.ts |   80.35 |    81.52 |   85.71 |   80.35 | ...1017,1025-1026 
  ...-finalizer.ts |    98.1 |     92.3 |   93.33 |    98.1 | ...34-235,237-241 
  ...iagnostics.ts |   99.06 |    97.69 |   91.66 |   99.06 | 133-134,205       
  ...-retention.ts |     100 |    95.83 |     100 |     100 | 116               
  tool-search.ts   |   96.19 |    89.79 |   93.75 |   96.19 | ...09,259-264,426 
  tool-utils.ts    |   97.46 |    96.55 |     100 |   97.46 | 26-27             
  tools.ts         |   92.93 |    92.18 |      92 |   92.93 | ...64-565,581-587 
  truncation.ts    |   90.61 |    90.35 |     100 |   90.61 | ...53-461,498-504 
  ...reapproved.ts |   99.27 |    94.11 |     100 |   99.27 | 170               
  web-fetch.ts     |   96.05 |    90.54 |   96.77 |   96.05 | ...85-786,800-801 
  web-search.ts    |   90.58 |    83.57 |      80 |   90.58 | ...1025,1083-1086 
  write-file.ts    |   87.06 |    85.71 |   89.47 |   87.06 | ...29-832,869-904 
  zoom-image.ts    |   95.76 |    93.93 |    90.9 |   95.76 | 54-59,203-204     
 src/tools/agent   |   87.49 |    88.65 |   89.56 |   87.49 |                   
  agent.ts         |   86.18 |    87.83 |   87.36 |   86.18 | ...4383,4417-4427 
  fork-profile.ts  |   93.65 |       90 |     100 |   93.65 | ...33-134,171-174 
  fork-subagent.ts |   98.73 |       95 |     100 |   98.73 | 101-102,173       
 ...tools/artifact |   95.78 |    92.51 |   88.63 |   95.78 |                   
  artifact-tool.ts |   91.46 |    88.46 |   71.42 |   91.46 | ...13-314,322-325 
  ...-publisher.ts |     100 |    85.71 |     100 |     100 | 32                
  ...-publisher.ts |   96.74 |    97.72 |    87.5 |   96.74 | 29-30,156-157     
  html.ts          |     100 |    96.77 |     100 |     100 | 122               
  ...-publisher.ts |     100 |       80 |     100 |     100 | 30                
  oss-publisher.ts |    98.1 |    91.48 |     100 |    98.1 | 43-45             
  publisher.ts     |     100 |      100 |     100 |     100 |                   
 ...tools/workflow |   88.61 |    86.99 |   81.48 |   88.61 |                   
  workflow.ts      |   88.61 |    86.99 |   81.48 |   88.61 | ...51,796,798-799 
 src/utils         |   92.78 |    89.74 |   96.91 |   92.78 |                   
  LruCache.ts      |     100 |      100 |     100 |     100 |                   
  ...Controller.ts |     100 |      100 |     100 |     100 |                   
  ...ssageQueue.ts |     100 |      100 |     100 |     100 |                   
  ...cFileWrite.ts |      95 |    92.76 |     100 |      95 | ...49-550,657-661 
  auth-type.ts     |     100 |      100 |     100 |     100 |                   
  bareMode.ts      |   81.81 |      100 |      50 |   81.81 | 18-19             
  ...ry-content.ts |   98.45 |    95.79 |     100 |   98.45 | 132-133,159-160   
  browser.ts       |   86.84 |    78.94 |     100 |   86.84 | 34,36-37,65-66    
  btwUtils.ts      |   13.95 |      100 |       0 |   13.95 | 17-31,34-55       
  bundlePaths.ts   |     100 |      100 |     100 |     100 |                   
  ...on-context.ts |     100 |      100 |     100 |     100 |                   
  ...igResolver.ts |     100 |      100 |     100 |     100 |                   
  ...engthError.ts |   91.06 |    89.47 |     100 |   91.06 | ...46-147,154-155 
  ...n-branches.ts |   95.89 |    94.11 |      95 |   95.89 | ...99-500,512-525 
  ...tion-chain.ts |     100 |      100 |     100 |     100 |                   
  cronDisplay.ts   |     100 |    97.61 |     100 |     100 | 46                
  cronParser.ts    |   95.34 |    93.33 |     100 |   95.34 | 41-42,47-48,70-71 
  debugLogger.ts   |     100 |    97.18 |     100 |     100 | 79,86             
  ...qwen-model.ts |     100 |      100 |     100 |     100 |                   
  editHelper.ts    |   93.63 |     83.9 |     100 |   93.63 | ...27-428,462-463 
  editor.ts        |   97.65 |    95.45 |     100 |   97.65 | ...35-336,338-339 
  encoding.ts      |     100 |      100 |     100 |     100 |                   
  env.ts           |     100 |      100 |     100 |     100 |                   
  ...arResolver.ts |   94.28 |    88.88 |     100 |   94.28 | 28-29,125-126     
  errorParsing.ts  |     100 |      100 |     100 |     100 |                   
  ...rReporting.ts |   95.65 |    93.33 |     100 |   95.65 | 37-38             
  errors.ts        |   88.92 |    93.08 |      68 |   88.92 | ...92,394,410-411 
  fetch.ts         |   90.68 |    82.63 |     100 |   90.68 | ...72,483-484,503 
  ...ng-options.ts |     100 |      100 |     100 |     100 |                   
  file-identity.ts |     100 |      100 |     100 |     100 |                   
  fileUtils.ts     |   94.79 |    92.16 |   96.29 |   94.79 | ...2076,2084-2085 
  formatters.ts    |     100 |      100 |     100 |     100 |                   
  ...eUtilities.ts |    92.4 |    86.95 |     100 |    92.4 | ...52-158,168-169 
  ...rStructure.ts |   94.39 |    94.28 |     100 |   94.39 | ...29-132,343-348 
  getPty.ts        |   31.57 |       50 |     100 |   31.57 | 26-38             
  git-branches.ts  |    91.6 |    84.21 |    92.3 |    91.6 | ...90,405-410,570 
  ...fig-safety.ts |   97.01 |       80 |     100 |   97.01 | 53-54             
  git-ignore.ts    |     100 |      100 |     100 |     100 |                   
  gitDiff.ts       |   95.19 |    81.36 |     100 |   95.19 | ...1073,1419-1420 
  gitDirect.ts     |   98.84 |    94.28 |     100 |   98.84 | 234,318           
  ...noreParser.ts |   94.48 |    93.22 |     100 |   94.48 | ...23-124,158-159 
  gitUtils.ts      |   78.83 |    82.35 |    87.5 |   78.83 | ...22-123,164-215 
  github-prs.ts    |   95.74 |    82.27 |     100 |   95.74 | 216,314-322       
  iconvHelper.ts   |     100 |      100 |     100 |     100 |                   
  ...rePatterns.ts |     100 |      100 |     100 |     100 |                   
  image-view.ts    |   95.08 |    93.47 |     100 |   95.08 | ...62-166,234-238 
  ...lPromptIds.ts |     100 |      100 |     100 |     100 |                   
  ...on-context.ts |     100 |      100 |     100 |     100 |                   
  is-tool.ts       |     100 |      100 |     100 |     100 |                   
  jsonl-utils.ts   |   96.15 |    93.63 |     100 |   96.15 | ...86-387,429-432 
  ...-detection.ts |     100 |      100 |     100 |     100 |                   
  ...iconv-lite.ts |     100 |      100 |     100 |     100 |                   
  ...simple-git.ts |   96.77 |    91.66 |     100 |   96.77 | 38                
  ...m-headless.ts |      96 |    88.88 |     100 |      96 | 34                
  ...-constants.ts |   94.28 |     92.3 |     100 |   94.28 | 66-67             
  ...iagnostics.ts |    96.4 |     94.2 |     100 |    96.4 | ...66,293-294,376 
  ...tProcessor.ts |   94.01 |    89.88 |     100 |   94.01 | ...47-353,445-446 
  ...Inspectors.ts |     100 |      100 |     100 |     100 |                   
  modelId.ts       |   98.96 |    98.18 |     100 |   98.96 | 154               
  ...kerChecker.ts |    90.9 |    91.66 |     100 |    90.9 | 73-79             
  notebook.ts      |   94.57 |    89.91 |   95.83 |   94.57 | ...21,333,385-387 
  openaiLogger.ts  |   91.66 |    89.74 |     100 |   91.66 | ...26-228,251-256 
  osc8.ts          |   54.26 |    64.86 |   83.33 |   54.26 | ...72-195,197-257 
  partUtils.ts     |     100 |    98.64 |     100 |     100 | 211               
  pathReader.ts    |     100 |      100 |     100 |     100 |                   
  paths.ts         |   90.88 |    90.66 |     100 |   90.88 | ...28-629,631-633 
  pdf.ts           |   92.17 |    85.81 |     100 |   92.17 | ...64-565,606-611 
  ...s-liveness.ts |     100 |    93.47 |     100 |     100 | 62,72,108         
  projectPath.ts   |     100 |      100 |     100 |     100 |                   
  projectRoot.ts   |   71.73 |    78.57 |     100 |   71.73 | 54-66             
  ...ectSummary.ts |   89.62 |    72.41 |     100 |   89.62 | ...40-145,196-199 
  ...tIdContext.ts |     100 |      100 |     100 |     100 |                   
  proxyUtils.ts    |     100 |      100 |     100 |     100 |                   
  ...rDetection.ts |   71.15 |       86 |     100 |   71.15 | ...-90,96-101,147 
  ...noreParser.ts |   92.63 |    91.66 |     100 |   92.63 | ...77-178,197-198 
  rateLimit.ts     |   93.75 |    89.62 |     100 |   93.75 | ...13,218-219,262 
  ...text-range.ts |   96.98 |    87.36 |     100 |   96.98 | ...87-688,763-764 
  retry.ts         |   96.09 |    92.52 |     100 |   96.09 | ...72,563-564,582 
  retryContext.ts  |     100 |      100 |     100 |     100 |                   
  ...sification.ts |   97.63 |    97.08 |     100 |   97.63 | ...17,251-252,278 
  retryPolicy.ts   |   97.72 |    90.56 |     100 |   97.72 | 130-131           
  ripgrepUtils.ts  |   90.04 |    93.43 |   95.45 |   90.04 | ...55-565,598-599 
  ...iagnostics.ts |   83.08 |     67.5 |   92.59 |   83.08 | ...23,543-544,550 
  ...tchOptions.ts |   84.87 |    86.71 |   96.29 |   84.87 | ...71,696,725-734 
  ...odelPrefix.ts |     100 |      100 |     100 |     100 |                   
  runtimeStatus.ts |   97.77 |    91.48 |     100 |   97.77 | 172-173           
  safe-mode.ts     |     100 |      100 |     100 |     100 |                   
  safeJsonParse.ts |     100 |      100 |     100 |     100 |                   
  ...nStringify.ts |     100 |      100 |     100 |     100 |                   
  ...-child-env.ts |     100 |      100 |     100 |     100 |                   
  ...aConverter.ts |   98.22 |    98.01 |     100 |   98.22 | 100,102-103       
  ...aValidator.ts |   92.09 |    83.65 |   90.47 |   92.09 | ...60,882-883,896 
  ...r-launcher.ts |   96.35 |    93.97 |   85.71 |   96.35 | ...35-336,347-348 
  sedEditParser.ts |   91.78 |    92.18 |     100 |   91.78 | ...66-569,645-646 
  ...nIdContext.ts |     100 |       90 |     100 |     100 | 95                
  ...orageUtils.ts |   96.21 |    86.44 |     100 |   96.21 | ...70,386,466,485 
  ...-pager-env.ts |     100 |      100 |     100 |     100 |                   
  ...fety-rules.ts |     100 |     89.7 |     100 |     100 | ...01,304,309-311 
  shell-utils.ts   |   86.37 |    88.59 |     100 |   86.37 | ...2361,2368-2372 
  ...lAstParser.ts |    98.3 |    91.59 |     100 |    98.3 | ...1340-1342,1352 
  ...nlyChecker.ts |   96.33 |    96.57 |     100 |   96.33 | ...83-284,292-293 
  sideQuery.ts     |   86.82 |    86.66 |     100 |   86.82 | ...79-185,187-193 
  ...pEventSink.ts |     100 |       80 |     100 |     100 | 61                
  ...tGenerator.ts |     100 |      100 |     100 |     100 |                   
  ...ameContext.ts |     100 |      100 |     100 |     100 |                   
  symlink.ts       |   77.77 |    57.14 |     100 |   77.77 | 44,54-59          
  ...emEncoding.ts |   96.36 |    91.17 |     100 |   96.36 | 59-60,124-125     
  terminal-env.ts  |      50 |      100 |       0 |      50 | 18-19             
  terminalSafe.ts  |     100 |      100 |     100 |     100 |                   
  ...Serializer.ts |   98.72 |       90 |     100 |   98.72 | 42-43,134,201-203 
  testUtils.ts     |   53.33 |      100 |   33.33 |   53.33 | ...53,59-64,70-72 
  ...-constants.ts |     100 |      100 |     100 |     100 |                   
  textUtils.ts     |      65 |      100 |      75 |      65 | 56-75             
  thoughtUtils.ts  |     100 |    95.65 |     100 |     100 | 99                
  ...-converter.ts |   95.23 |    85.71 |     100 |   95.23 | 36-37             
  ...error-type.ts |     100 |      100 |     100 |     100 |                   
  ...name-utils.ts |     100 |      100 |     100 |     100 |                   
  ...ultCleanup.ts |   54.62 |    60.86 |      75 |   54.62 | ...03-105,108-134 
  ...Compaction.ts |   96.82 |    92.48 |     100 |   96.82 | ...37-342,344-349 
  ...pt-records.ts |   87.61 |    86.23 |     100 |   87.61 | ...80-484,514-529 
  ...-constants.ts |     100 |      100 |     100 |     100 |                   
  windowsPath.ts   |   89.47 |    79.31 |     100 |   89.47 | ...57-58,62,90-91 
  ...-directory.ts |    83.7 |    80.95 |    87.5 |    83.7 | ...37-238,252-253 
  ...ifact-path.ts |   94.11 |    92.85 |     100 |   94.11 | 32-33             
  ...aceContext.ts |   95.39 |    89.47 |     100 |   95.39 | ...16-317,321-322 
  xml.ts           |    97.8 |    87.69 |     100 |    97.8 | 98-99             
  yaml-parser.ts   |   83.87 |    77.27 |     100 |   83.87 | ...31-234,239-240 
 ...ils/filesearch |   83.94 |    80.75 |   94.78 |   83.94 |                   
  crawlCache.ts    |     100 |      100 |     100 |     100 |                   
  crawler.ts       |    82.9 |    76.81 |   95.08 |    82.9 | ...1563,1597-1598 
  fileSearch.ts    |   93.78 |    87.67 |     100 |   93.78 | ...71-272,274-275 
  fzfWorker.ts     |       0 |        0 |       0 |       0 | 1-109             
  ...rkerHandle.ts |   84.05 |    75.86 |      90 |   84.05 | ...30-334,340-341 
  ignore.ts        |     100 |    97.36 |     100 |     100 | 187               
  result-cache.ts  |     100 |    93.75 |     100 |     100 | 49                
 ...uest-tokenizer |    92.3 |      100 |   88.88 |    92.3 |                   
  ...ageFormats.ts |   81.81 |      100 |   66.66 |   81.81 | 56-61             
  textTokenizer.ts |     100 |      100 |     100 |     100 |                   
-------------------|---------|----------|---------|---------|-------------------

For detailed HTML reports, please see the 'coverage-reports-22.x-ubuntu-latest' artifact from the main CI run.

@wenshao

wenshao commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator Author

@qwen-code /takeover

@qwen-code-dev-bot qwen-code-dev-bot added the autofix/takeover Summon the autofix loop to manage this PR (remove to release; needs triage+) label Aug 18, 2026
@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🤝 Takeover engaged: the autofix loop now manages this PR — it will address new review feedback and resolve base conflicts until the label is removed or the round cap is reached. Remove the autofix/takeover label (or comment @qwen-code /takeover stop) to release.

中文说明

🤝 已接管:autofix 循环现在管理此 PR —— 将持续处理新的评审反馈与 base 冲突,直到移除标签或达到轮次上限。移除 autofix/takeover 标签(或评论 @qwen-code /takeover stop)即可释放。

@qwen-code-ci-bot qwen-code-ci-bot 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.

Partially reviewed — gaps disclosed.

Not reviewed: reverse audit — did not converge within the reverse-audit round cap of 10.

Not linted (tool limitation, not a blocker): the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted.

中文说明

仅完成部分审查,审查缺口已披露。

未审查:反向审计——在 10 轮的反审轮数上限内未收敛。

未检查(工具限制,非阻断):the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted。

— qwen3.8-max via Qwen Code /review (v0.21.13)

Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/main-ci-failure-issue.yml Outdated
Comment thread .github/workflows/main-ci-failure-issue.yml Outdated
Comment thread .github/scripts/ci/classify-platform-sensitivity.mjs Outdated
Comment thread .github/scripts/ci/classify-platform-sensitivity.test.mjs
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml
Comment thread scripts/tests/main-ci-failure-issue-workflow.test.js Outdated
@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🔀 Base updated: red check(s) [Test (ubuntu-latest, Node 22.x)] pass on current main — merged current main via update-branch; CI will re-run.

中文说明

🔀 已更新 base:红色检查 [Test (ubuntu-latest, Node 22.x)] 在当前 main 上通过 —— 已通过 update-branch 合入当前 main,CI 将重新运行。

@qwen-code-ci-bot qwen-code-ci-bot 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.

Partially reviewed — gaps disclosed.

2 Suggestion-level finding(s) this review confirmed are already reported on this PR and are not repeated:

  • R1-4 schedule clause applies to all three watched workflows — already reported (comment 3801128043)
  • R1-5 queue-starvation silence on the nightly Windows lane — already reported (comment 3801128051)

Not reviewed: the executable-script lint — .github/scripts/ci/classify-pr-profile.sh: shellcheck is not installed.

Not linted (tool limitation, not a blocker): the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted.

Deferred under the convergence posture (round 2, not a blocker) — recorded, not requested in this round:

  • .github/scripts/ci/classify-platform-sensitivity.test.mjs:33 — [probe] D2-1 the ps1 and actions classifier branches are pinned by no test (shadowed fixtures) — confirmed by probe
  • .github/scripts/ci/classify-platform-sensitivity.mjs:50 — [probe] D2-2 .gitattributes classifies insensitive though the Windows lane's EOL handling depends on it — confirmed by probe
  • .github/workflows/ci.yml:1022 — [probe] D2-3 schedule/dispatch runs of test_windows are exempted from the stale-checkout guard — confirmed by probe
中文说明

仅完成部分审查,审查缺口已披露。

本轮确认的 2 条建议级发现已在 PR 上报告过,不再重复发布(列表见上方英文部分)。

未审查:the executable-script lint — .github/scripts/ci/classify-pr-profile.sh: shellcheck is not installed。

未检查(工具限制,非阻断):the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted。

收敛姿态下延后(第 2 轮,非阻断)——已记录,本轮不要求修改:共 3 条(原文未翻译,列表见上方英文部分)。

— qwen3.8-max via Qwen Code /review (v0.21.13)

Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml
Comment thread scripts/tests/ci-platform-lanes.test.js Outdated
Comment thread scripts/tests/ci-platform-lanes.test.js
Comment thread .github/scripts/ci/classify-platform-sensitivity.mjs Outdated
Comment thread .github/scripts/ci/classify-platform-sensitivity.test.mjs
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml
Comment thread scripts/tests/main-ci-failure-issue-workflow.test.js Outdated
@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🔀 Base updated: red check(s) [Test (ubuntu-latest, Node 22.x)] pass on current main — merged current main via update-branch; CI will re-run.

中文说明

🔀 已更新 base:红色检查 [Test (ubuntu-latest, Node 22.x)] 在当前 main 上通过 —— 已通过 update-branch 合入当前 main,CI 将重新运行。

@qwen-code-ci-bot qwen-code-ci-bot 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.

Partially reviewed — gaps disclosed.

Not reviewed: the executable-script lint — .github/scripts/ci/classify-pr-profile.sh: shellcheck is not installed.

Not linted (tool limitation, not a blocker): the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted.

中文说明

仅完成部分审查,审查缺口已披露。

未审查:the executable-script lint — .github/scripts/ci/classify-pr-profile.sh: shellcheck is not installed。

未检查(工具限制,非阻断):the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted。

— qwen3.8-max via Qwen Code /review (v0.21.13)

Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml
@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🔀 Base updated: red check(s) [Test (ubuntu-latest, Node 22.x)] pass on current main — merged current main via update-branch; CI will re-run.

中文说明

🔀 已更新 base:红色检查 [Test (ubuntu-latest, Node 22.x)] 在当前 main 上通过 —— 已通过 update-branch 合入当前 main,CI 将重新运行。

@qwen-code-ci-bot qwen-code-ci-bot 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.

Partially reviewed — gaps disclosed.

1 Suggestion-level finding(s) this review confirmed are already reported on this PR and are not repeated:

  • reverse-audit round 4 finding: the unscoped event == 'schedule' clause also files autofix issues for red E2E Tests nightlies (corroborated by a real red nightly on 2026-08-09) — already reported (comment 3801128043)

Not reviewed: the executable-script lint — .github/scripts/ci/classify-pr-profile.sh: shellcheck is not installed.

Not linted (tool limitation, not a blocker): the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted.

Deferred under the convergence posture (round 4, not a blocker) — recorded, not requested in this round:

  • scripts/tests/ci-platform-lanes.test.js:38 — [probe] the schedule-trigger test pins cron shape only, not the daily cadence the design depends on
中文说明

仅完成部分审查,审查缺口已披露。

本轮确认的 1 条建议级发现已在 PR 上报告过,不再重复发布(列表见上方英文部分)。

未审查:the executable-script lint — .github/scripts/ci/classify-pr-profile.sh: shellcheck is not installed。

未检查(工具限制,非阻断):the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted。

收敛姿态下延后(第 4 轮,非阻断)——已记录,本轮不要求修改:共 1 条(原文未翻译,列表见上方英文部分)。

— qwen3.8-max via Qwen Code /review (v0.21.13)

Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml
@qwen-code-dev-bot

qwen-code-dev-bot commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

AutoFix round 11 finishedview run. See this round's report below.

中文说明

AutoFix 第 11 轮已完成 —— 查看运行。本轮报告见下方。

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🤖 Addressed the latest review feedback (round 1/100). What changed, and what I pushed back on: · 已处理最新评审反馈(第 1/100 轮)。改动内容与我反驳保留之处如下:

Review round summary — PR #9370

This round implemented the three Critical findings plus five Suggestion-level
findings, respecting the per-round batch bound (Criticals first, at most ~8
findings). The remaining seven suggestions are explicitly deferred to the next
round with replies on their threads (comment-replies.json). No base conflict
(--conflict false, no merge performed). Commit:
c1a7a681a1 fix(ci): close review round on the revived platform lanes (#9370).

Resolved

  • R1-1 — fork PRs routed onto the persistent ecs-win pool (rc:3801128024, rc:3801901508, rc:3802576512, rc:3803636627): implemented. test_windows's runs-on now mirrors classify_pr's trust routing: on pull_request events only same-repo heads and OWNER/MEMBER/COLLABORATOR authors run on the self-hosted ecs-win pool; every other fork PR lands on hosted windows-2022, where its code cannot reach the pool's persistent cache and workspace. Non-PR triggers (schedule, dispatch, merge_group) keep the pool. The stale "merge_group-only / post-approval" comment above the job is rewritten to match, and the exact-line runs-on pin in no-ak-integration-ci.test.js is updated with it.
  • R1-2 — reshaped verify-checkout-head broke pre-existing pins (rc:3801128038, rc:3801901522, rc:3802576536, rc:3803636637): implemented. Reproduced first at round start: no-ak-integration-ci.test.js failed 2/10 at the PR head on the stale Windows pins. Updated the three test_windows pins (expected_sha at ~306 and ~351, the step if: at ~323) to the new event-aware shape, mirroring the file's existing Ubuntu-gate pins. The suite now passes 10/10.
  • R1-3 — classifier error path was dead code under the runner's -e (rc:3801128041, rc:3801901527, rc:3802576530, rc:3803636641): implemented. Reproduced with the runner's exact invocation (bash --noprofile --norc -eo pipefail): a wrapper exit of 2 aborts the step at the assignment before rc=$? runs; with the sibling step's set +e / set -e guard the exit is captured and the warn-and-run path executes. Applied that guard to the classify_platform step and added a contiguous pin of the guarded block next to the existing error-contract pins.
  • R1-4 — schedule clause applied to all three watched workflows (rc:3801128043): implemented. The watcher's analyze gate now scopes the schedule branch to workflow_run.name == 'Qwen Code CI', so a red nightly of 'E2E Tests' (or 'SDK Python') no longer files an autofix issue. The watcher test now pins the whole event clause (presence, connective, and scope) instead of the two bare substrings.
  • R1-6 — lane-trigger assertions pinned presence, not the disjunction (rc:3801128056, rc:3801901538): implemented. The three non-terminal clauses are now pinned as event_name == '<event>' || via regex, so an && connective mutation cannot survive while the gate becomes unsatisfiable for a trigger.
  • R1-9 — watcher binding to ci.yml pinned only by literal (rc:3801128075, rc:3801901559): implemented. Added expect(wr.workflows).toContain(ci.name) beside the literal pin, so renaming ci.yml's name: fails the suite instead of silently stopping the nightly's workflow_run events.
  • R1-12 — zsh extension untested in the dialect loop (rc:3801128084, rc:3801901575): implemented. Added 'tools/setup.zsh' to the loop; removing zsh| from SHELL_SCRIPT now fails the suite.
  • R1-14 — test_macos had no timeout-minutes (rc:3801128094, rc:3801901587): implemented. Added timeout-minutes: 60 (matching test_windows) and a per-lane pin bounding both lanes, since the nightly alert only fires when the run completes.

Deferred to the next round (batch bound, Criticals first)

  • R1-5 (rc:3801128051) — queue-starvation cancelled clause
  • R1-7 (rc:3801128065, rc:3801901546) — widen the step scan to env:/run:
  • R1-8 (rc:3801128073, rc:3801901554) — nightly-exclusion guard asserts the negative
  • R1-10 (rc:3801128077, rc:3801901563) — web-shell directory matching
  • R1-11 (rc:3801128082, rc:3801901568) — shared JSONL parser with classify-profile.mjs
  • R1-13 (rc:3801128089, rc:3801901585) — fix(ci): self-heal failed checkouts on the reused review runners #9220 incident-record wording
  • R1-15 (rc:3801128099, rc:3801901592) — provenance comment cites the wrong issue

Each has a reply on its thread in comment-replies.json; threads left open.

Verification

Commands actually run this round (working tree, then re-checked on the committed tree):

  • npm run build — passed
  • npm run typecheck — passed
  • npm run lint — passed
  • npx vitest run --config ./scripts/tests/vitest.config.ts (full test:scripts suite) — final run: 56/56 files, 1356 passed | 16 skipped. Two intermediate full-suite runs showed one unrelated flake (verify-capture helper > renders 256-colour and truecolor via the default-grey fallback); it was proven environmental, not caused by this round: 16 concurrent renders of the identical input through the PR-untouched scripts/verify-capture.mjs reproduced the missing #d4d4d4 pixel in 95/192 renders, the file passes in isolation, and neither the file nor its render pipeline is touched by this PR.
  • Focused vitest on the touched files (no-ak-integration-ci, ci-platform-lanes, main-ci-failure-issue-workflow) — 34 passed (34)
  • node --test .github/scripts/ci/classify-platform-sensitivity.test.mjs .github/scripts/ci/classify-pr-profile.test.mjs — 20 passed (20)
  • npx prettier --check on the six changed files — passed
  • npm run generate:settings-schema — not run (no settings source touched)
  • Integration tests after npm run bundle — not run (changes are CI workflows/CI scripts exercised by test:scripts, not bundled-CLI behavior)
  • scripts/lint.js --actionlint/--yamllint — not runnable locally (the wrapper downloads linter binaries from the network, which this flow does not run). Mitigations: the .yamllint.yml config carries no line-length rule; both edited workflows parse cleanly with the yaml package (every suite above re-parses them); the new runs-on expression is the same construction as the pre-existing classify_pr routing line actionlint already accepts.

Pre-round reproduction evidence: R1-2's two failing pins were reproduced at the round-start tree (2 failed | 8 passed); R1-3's dead error path was reproduced with the runner's exact shell invocation (step exit 2, no rc=$?, no warning) and shown fixed by the guard arm.

中文说明

审查轮次总结 — PR #9370

本轮实现了三条严重(Critical)发现与五条建议(Suggestion)级发现,遵守每轮批次上限(Critical 优先、最多约 8 条)。其余七条建议已通过 comment-replies.json 在各自线程中明确延后到下一轮。无 base 冲突(--conflict false,未做任何合并)。提交:c1a7a681a1 fix(ci): close review round on the revived platform lanes (#9370)

已解决

  • R1-1 — fork PR 被送上持久化 ecs-win(rc:3801128024、rc:3801901508、rc:3802576512、rc:3803636627):已实现。test_windowsruns-on 现在镜像 classify_pr 的信任路由:pull_request 事件下仅同仓库 head 与 OWNER/MEMBER/COLLABORATOR 作者跑在自托管 ecs-win 池上;其余 fork PR 落到托管 windows-2022,其代码无法触及该池的持久缓存与工作区。非 PR 触发器(schedule、dispatch、merge_group)仍使用该池。job 上方过时的 "merge_group-only / post-approval" 注释已同步改写,no-ak-integration-ci.test.js 中的整行 runs-on 断言也随之更新。
  • R1-2 — 重塑的 verify-checkout-head 破坏了既有断言(rc:3801128038、rc:3801901522、rc:3802576536、rc:3803636637):已实现。轮次开始时先复现:PR head 上 no-ak-integration-ci.test.js 在这三处过期 Windows 断言上 2/10 失败。已把三处 test_windows 断言(~306 与 ~351 的 expected_sha、~323 的步骤 if:)更新为新的事件感知形状,与文件中已有的 Ubuntu 守卫断言一致。该套件现在 10/10 通过。
  • R1-3 — 分类器错误路径在 runner 的 -e 下是死代码(rc:3801128041、rc:3801901527、rc:3802576530、rc:3803636641):已实现。用 runner 的真实调用方式复现(bash --noprofile --norc -eo pipefail):wrapper 退出码 2 会在赋值处中止步骤,rc=$? 根本不会执行;加上兄弟步骤的 set +e / set -e 守卫后退出码被捕获、告警并继续的路径得以执行。已把该守卫应用到 classify_platform 步骤,并在既有错误契约断言旁新增一段连续块断言钉住该守卫。
  • R1-4 — schedule 分句对全部三个被监听 workflow 生效(rc:3801128043):已实现。监听器 analyze 门现在把 schedule 分支限定为 workflow_run.name == 'Qwen Code CI','E2E Tests'(或 'SDK Python')的红色 nightly 不再开 autofix issue。监听器测试改为钉住完整事件分句(存在性、连接词、作用域),不再是两个裸子串。
  • R1-6 — lane 触发器断言只钉存在性、未钉析取关系(rc:3801128056、rc:3801901538):已实现。三个非末尾分句现在以正则钉住 event_name == '<event>' ||&& 连接词突变不再能在门对某触发器不可满足时存活。
  • R1-9 — 监听器与 ci.yml 的绑定只钉了字面量(rc:3801128075、rc:3801901559):已实现。在字面量断言旁新增 expect(wr.workflows).toContain(ci.name),重命名 ci.ymlname: 会使套件失败,而不是静默停掉 nightly 的 workflow_run 事件。
  • R1-12 — 方言循环未测 zsh 扩展名(rc:3801128084、rc:3801901575):已实现。循环中加入 'tools/setup.zsh';从 SHELL_SCRIPT 中删除 zsh| 现在会使套件失败。
  • R1-14 — test_macos 缺少 timeout-minutes(rc:3801128094、rc:3801901587):已实现。新增 timeout-minutes: 60(与 test_windows 一致),并为两条 lane 增加超时上限断言——nightly 告警只在运行完成时触发,上限决定告警最晚多久到达。

延后到下一轮(批次上限,Critical 优先)

  • R1-5(rc:3801128051)— 队列饥饿的 cancelled 分句
  • R1-7(rc:3801128065、rc:3801901546)— 把步骤扫描扩宽到 env:/run:
  • R1-8(rc:3801128073、rc:3801901554)— nightly 排除守卫改为直接断言否定面
  • R1-10(rc:3801128077、rc:3801901563)— web-shell 目录匹配
  • R1-11(rc:3801128082、rc:3801901568)— 与 classify-profile.mjs 共享 JSONL 解析器
  • R1-13(rc:3801128089、rc:3801901585)— fix(ci): self-heal failed checkouts on the reused review runners #9220 事故记录的措辞
  • R1-15(rc:3801128099、rc:3801901592)— 溯源注释引用了错误的 issue

每条都已在其线程中通过 comment-replies.json 回复;线程保持打开。

验证

本轮实际运行的命令(先在工作树上运行,提交后又在提交树上复核):

  • npm run build — 通过
  • npm run typecheck — 通过
  • npm run lint — 通过
  • npx vitest run --config ./scripts/tests/vitest.config.ts(完整 test:scripts 套件)— 最终运行:56/56 文件,1356 通过 | 16 跳过。两次中间的全套件运行出现过一次无关 flake(verify-capture helper > renders 256-colour and truecolor via the default-grey fallback);已证明为环境问题而非本轮引入:用与本 PR 无关的 scripts/verify-capture.mjs 对相同输入做 16 路并发渲染,192 次中有 95 次复现出缺失 #d4d4d4 像素;该文件单独运行通过,且该文件及其渲染管线均未被本 PR 触及。
  • 针对改动文件的聚焦 vitest(no-ak-integration-cici-platform-lanesmain-ci-failure-issue-workflow)— 34 通过(34)
  • node --test .github/scripts/ci/classify-platform-sensitivity.test.mjs .github/scripts/ci/classify-pr-profile.test.mjs — 20 通过(20)
  • npx prettier --check(六个改动文件)— 通过
  • npm run generate:settings-schema — 未运行(未改动 settings 源)
  • npm run bundle 后的集成测试 — 未运行(改动为 CI workflow / CI 脚本,由 test:scripts 覆盖,不涉及打包 CLI 行为)
  • scripts/lint.js --actionlint/--yamllint — 本地无法运行(wrapper 需从网络下载 linter 二进制,本流程不执行联网包命令)。替代核对:.yamllint.yml 未启用行长度规则;两个被改 workflow 均可被 yaml 包干净解析(上述每个套件都会重新解析它们);新的 runs-on 表达式与 actionlint 已接受的既有 classify_pr 路由行结构完全一致。

轮前复现证据:R1-2 的两处失败断言已在轮次开始时的树上复现(2 失败 | 8 通过);R1-3 的死错误路径已用 runner 的真实 shell 调用方式复现(步骤退出码 2、无 rc=$?、无告警),并验证加守卫后修复。

Base-conflict check · 基分支冲突检查: no conflict with main. · 与 main 无冲突。

Re-review when you have a moment. After round 100 this bot stops and leaves the PR for a human. · 有空请复审;第 100 轮后本 bot 停止并将 PR 交给人工。


🧠 Handled by Qwen Code · model/模型 qwen3.8-max

@qwen-code-ci-bot qwen-code-ci-bot 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.

Partially reviewed — gaps disclosed. Suggestions are inline.

4 Suggestion-level finding(s) this review confirmed are already reported on this PR and are not repeated:

  • web-shell keyword overmatch in PLATFORM_SUBSYSTEM — already reported (comment 3801901563)
  • parseChangedFiles/main() duplication vs sibling classify-profile.mjs — already reported (comment 3801901568)
  • nightly-exclusion guard presence-check hole, incl. this round's demonstrated && → || connective mutant — already reported (comment 3801901554)
  • watcher name binding pinned one-sidedly — already reported (comment 3801901559)

Not reviewed: the executable-script lint — .github/scripts/ci/classify-pr-profile.sh: shellcheck is not installed.

Not linted (tool limitation, not a blocker): the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted.

Deferred under the convergence posture (round 5, not a blocker) — recorded, not requested in this round:

  • scripts/tests/ci-platform-lanes.test.js:65 — [probe] !cancelled() connective unpinned — an || mutation makes the lane gate a tautology (probe-confirmed mutant survives 26/26)
  • .github/scripts/ci/classify-platform-sensitivity.mjs:58 — [probe] no docs carve-out — 76 of 540 docs files classify sensitive, contra the PR's own cost claim (probe-confirmed sweep)
中文说明

仅完成部分审查,审查缺口已披露。 建议见行内评论。

本轮确认的 4 条建议级发现已在 PR 上报告过,不再重复发布(列表见上方英文部分)。

未审查:the executable-script lint — .github/scripts/ci/classify-pr-profile.sh: shellcheck is not installed。

未检查(工具限制,非阻断):the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted。

收敛姿态下延后(第 5 轮,非阻断)——已记录,本轮不要求修改:共 2 条(原文未翻译,列表见上方英文部分)。

— qwen3.8-max via Qwen Code /review (v0.21.13)

Comment thread .github/workflows/ci.yml Outdated
@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🤖 Addressed the latest review feedback (round 2/100). What changed, and what I pushed back on: · 已处理最新评审反馈(第 2/100 轮)。改动内容与我反驳保留之处如下:

Review round summary — PR #9370

This round addressed the one new inline finding (the ECS trust-policy
double encoding) and investigated the two failing platform lanes. The
inline finding is implemented and mutation-verified; the lane failures
could not be root-caused from this runner — the evidence trail and the
blocker are documented below. No base conflict (--conflict false, no
merge performed).

Resolved

  • rc:3804875894 — second encoding of the ECS-pool trust policy with
    nothing owning the equivalence
    (Suggestion): implemented via the
    finding's first option. .github/scripts/ci-runner-routing.test.mjs now
    evaluates the REAL test_windows runs-on expression text against the
    same event/association matrix the harness already uses for classify_pr:
    an evalRunsOn helper substitutes the routing inputs into the expression,
    unwraps the fromJSON runner labels, and fails loud on any term it does
    not model, so an edited expression is re-read instead of silently
    outgrowing the matrix. Three tests: the pull_request trust decision agrees
    with classify_pr's allowlist for every same-repo/association pair (the
    fork-defence equivalence the finding names); every non-pull-request
    trigger keeps the pool (the intentional denial-form behaviour); the
    kill-switch wins on every event. The canonical-home comment above
    classify_pr's runs-on now names test_windows as a mirror. Verified:
    baseline 9/9 green; four mutants — dropping COLLABORATOR from the
    windows list only, flipping the denial != to ==, a kill-switch
    variable typo, and an ||&& connective swap between the same-repo and
    trusted clauses — are all caught, the last one by the equivalence matrix
    exactly as the finding predicts (the pre-existing textual pins cannot see
    connective regrouping).

Failed checks — investigated, blocked on CI logs

  • Test (macos-latest, Node 22.x): FAILURE and Test (windows-latest,
    Node 22.x): FAILURE
    on head c1a7a681a1 (run 32139329994; macOS job
    95718098558, 55.6 min; Windows job, 20.8 min), while Test
    (ubuntu-latest, Node 22.x): SUCCESS
    (24.1 min) on the identical suite.
    Diagnosis from this runner, where every allowed evidence path was
    exhausted:
    • Both lanes run the standard recipe — npm ci (whose root prepare
      hook runs a full npm run build + npm run bundle) followed by
      npm run test:ci — the same recipe the green Ubuntu lane runs, and the
      same one windows-runner-smoke.yml validates on the ECS pool by
      dispatch. The PR changes only the lanes' triggers/guards, not the
      recipe.
    • The lanes had not run since 2026-07-02 (the merge queue is not
      enabled); ~1,260 commits have touched package test files since. The
      revived lanes are therefore exposing accumulated platform debt in the
      shared suite — this PR touches none of the package code or tests the
      lanes execute, and its own territory is green everywhere it runs
      (test:scripts 55/56 files locally — the one remainder is the known environmental verify-capture flake proven in round 1, in a file this PR does not touch, which passes on the green Ubuntu lane — and HELPER_TESTS 283/283; the green Ubuntu lane runs the identical set including this PR's new script tests).
    • Surrogate probe, since the exact environments cannot run here: a
      clean-environment platform-spoof matrix over packages/core (real-linux
      baseline vs process.platform spoofed to darwin and win32).
      Baseline-subtracted deltas: 4 darwin-only failures, 126 win32-only
      failures; every inspected candidate proved a spoof artifact — esbuild's
      platform-binary check reading the spoofed platform, case-insensitive-fs
      tests on a case-sensitive filesystem, process-identity mismatches
      between the spoofed parent and real child processes, and win32 path
      branches executing against a Linux filesystem. The probe surfaced no
      confirmed platform-logic defect to fix.
    • Blocker: the failing test names live in the job logs/annotations, and
      this runner holds no GitHub credentials (the workflow owns all network
      writes), so they cannot be fetched here. No evidence-backed code-level
      fix exists without them; guessing at the shared suite from a Linux
      runner would be speculation, not a root-cause change.
    • Next steps for the failure: a maintainer reads the two jobs' logs (or
      re-dispatches windows-runner-smoke.yml for the Windows leg), or the
      nightly watcher this PR wires (main-ci-failure-issue.yml now watches
      'Qwen Code CI' on main) auto-files an issue once the lanes run red on
      main, which the autofix loop can pick up as its own footprint.

Not actioned this round

  • The four Suggestion-level findings the round-5 review confirmed as
    already reported (web-shell keyword overmatch, parseChangedFiles/main
    duplication, nightly-exclusion guard hole, watcher name binding) remain
    open round-1 deferrals on their existing threads; they predate this
    round's evaluation window and carry no new instruction.
  • The two findings the reviewer itself deferred under its round-5
    convergence posture (!cancelled() connective pin at
    scripts/tests/ci-platform-lanes.test.js:65; docs carve-out in
    classify-platform-sensitivity.mjs) are explicitly "recorded, not
    requested in this round" — respected, not implemented.
  • The disclosed lint gaps (shellcheck not installed; actionlint
    embedded-shell source mapping unsupported) are runner tool limitations,
    unchanged from round 1; nothing to fix in this PR.

Verification

Commands actually run this round:

  • npm run build — passed (exit 0)
  • npm run typecheck — passed (exit 0)
  • npm run lint — passed (exit 0)
  • npx vitest run --config ./scripts/tests/vitest.config.ts (full
    test:scripts suite) — 56 files: 55 passed, 1 failed — the failure is
    the known environmental flake verify-capture helper > renders 256-colour and truecolor via the default-grey fallback in scripts/verify-capture.mjs
    (a file this PR does not touch), proven environmental in round 1
    (95/192 renders lose the #d4d4d4 pixel under this runner's terminal);
    the earlier audio-capture dist failure in the same suite was a local
    missing-build artifact and passes once npm run build has run
  • node --test <all 18 HELPER_TESTS> — 283 passed (283), including the
    changed ci-runner-routing.test.mjs (9/9)
  • Mutation probes on the new routing tests — 4 mutants, all caught, tree
    restored to green after each
  • Focused platform-spoof surrogate on packages/core (3 full runs: linux
    baseline, darwin, win32) — no confirmed platform defect (see above)
  • npm run generate:settings-schema — not run (no settings source touched)
  • Integration tests after npm run bundle — not run (changes are a CI
    workflow comment and a CI routing test, not bundled-CLI behavior)
中文说明

审查轮次总结 — PR #9370

本轮处理了一条新的行内发现(ECS 信任策略的双重编码),并调查了两条失败的平台泳道。行内发现已实现并完成突变验证;泳道失败无法在本 runner 上定位根因——证据链与阻塞点记录如下。无 base 冲突(--conflict false,未执行任何合并)。

已解决

  • rc:3804875894 —— ECS 池信任策略的第二份编码且无任何机制拥有其等价性(建议级):按该发现给出的第一个方案实现。.github/scripts/ci-runner-routing.test.mjs 现在对真实的 test_windows runs-on 表达式文本按该测试框架既有的事件/关联矩阵求值(classify_pr 也是如此):evalRunsOn 辅助函数把路由输入代入表达式、解开 fromJSON 的 runner 标签,并对任何它未建模的项高声报错,使被修改的表达式在此被重新解读而不是悄悄超出矩阵的覆盖。三个测试:pull_request 信任决定与 classify_pr 白名单在所有 same-repo/关联组合上一致(即该发现点名的 fork 防御等价性);所有非 pull_request 触发器保持使用该池(否定形式的既有设计行为);kill-switch 在所有事件上获胜。classify_pr runs-on 上方的 canonical-home 注释现在也点名 test_windows 是其镜像。验证:基线 9/9 全绿;四个突变体——仅从 windows 列表删除 COLLABORATOR、把否定式 != 翻转为 ==、kill-switch 变量名拼写错误、以及 same-repo 与 trusted 子句之间 ||&& 的连接词互换——全部被捕获,最后一种正是该发现预言的情形(既有文本钉住看不到连接词重排),且由等价矩阵捕获。

失败检查 —— 已调查,阻塞于 CI 日志

  • Test (macos-latest, Node 22.x): FAILURETest (windows-latest, Node 22.x): FAILURE(head c1a7a681a1,run 32139329994;macOS job 95718098558,55.6 分钟;Windows job 20.8 分钟),而 Test (ubuntu-latest, Node 22.x): SUCCESS(24.1 分钟),三者运行完全相同的测试集。本 runner 上的诊断(已穷尽所有允许的证据路径):
    • 两条泳道运行标准配方 —— npm ci(根 prepare 钩子会执行完整的 npm run build + npm run bundle)后接 npm run test:ci —— 与绿色 Ubuntu 泳道完全相同,也是 windows-runner-smoke.yml 在 ECS 池上以 dispatch 方式验证的同一配方。本 PR 只改了泳道的触发器/守卫,未改配方。
    • 两条泳道自 2026-07-02 起从未运行(merge queue 未启用);此后约 1,260 个提交改动过包内测试文件。因此复活的泳道暴露的是共享测试套件中累积的平台欠账 —— 本 PR 未触碰泳道执行的任何包内代码或测试,且本 PR 自身涉及的领域在所有运行处均为绿色(test:scripts 本地 55/56 文件——唯一例外是第 1 轮已证明的环境性 verify-capture flake,位于本 PR 未触碰的文件,且在绿色 Ubuntu 泳道上通过;HELPER_TESTS 283/283。绿色 Ubuntu 泳道运行的正是包含本 PR 新增脚本测试的同一套)。
    • 替代探针(因精确环境无法在本机运行):在 packages/core 上做了干净环境的平台伪装矩阵(真实 linux 基线 vs 把 process.platform 伪装为 darwinwin32)。扣除基线后的差量:darwin 独有失败 4 个、win32 独有失败 126 个;逐一检视的候选全部被证明是伪装假象 —— esbuild 的平台二进制检查读到了伪装平台、区分大小写的文件系统上运行不区分大小写的测试、伪装父进程与真实子进程之间的进程身份不一致、以及 win32 路径分支在 Linux 文件系统上执行。探针未发现任何可确认的平台逻辑缺陷可供修复。
    • 阻塞点:失败的测试名在 job 日志/annotations 中,而本 runner 不持有任何 GitHub 凭据(所有网络写入由工作流负责),因此无法在此获取。没有它们就不存在证据支撑的代码级修复;在 Linux runner 上对共享套件猜测下手是投机而非根因修复。
    • 失败的后续路径:由维护者读取两个 job 的日志(或重新 dispatch windows-runner-smoke.yml 验证 Windows 一侧),或由本 PR 接线的 nightly 监视器(main-ci-failure-issue.yml 现已监听 main 上的 'Qwen Code CI')在泳道于 main 上变红时自动开 issue,autofix 循环可作为独立足迹认领处理。

本轮不处理

  • 第 5 轮审查确认"已报告过"的四条建议级发现(web-shell 关键词过度匹配、parseChangedFiles/main 重复、nightly 排除守卫空洞、watcher 名称绑定)仍是第 1 轮延后项,保留在原有线程中;它们早于本轮评估窗口,且未携带新的指令。
  • 审查者按其第 5 轮收敛姿态自行延后的两条发现(scripts/tests/ci-platform-lanes.test.js:65!cancelled() 连接词钉住;classify-platform-sensitivity.mjs 的 docs 豁免)被明确标注"已记录,本轮不要求修改"——尊重该决定,不实现。
  • 已披露的 lint 缺口(shellcheck 未安装;actionlint 不支持 embedded-shell 源映射)是 runner 工具限制,与第 1 轮相同;本 PR 无可修之处。

验证

本轮实际执行的命令:

  • npm run build — 通过(exit 0)
  • npm run typecheck — 通过(exit 0)
  • npm run lint — 通过(exit 0)
  • npx vitest run --config ./scripts/tests/vitest.config.ts(完整 test:scripts 套件)— 56 个文件:55 通过、1 失败 —— 该失败是已知的环境性 flake verify-capture helper > renders 256-colour and truecolor via the default-grey fallback,位于 scripts/verify-capture.mjs(本 PR 未触碰的文件),第 1 轮已证明为环境问题(该 runner 的终端下 95/192 次渲染丢失 #d4d4d4 像素);同套件中更早的 audio-capture dist 失败是本地缺构建产物的假象,npm run build 运行后即通过
  • node --test <全部 18 个 HELPER_TESTS> — 283 通过(283),含改动的 ci-runner-routing.test.mjs(9/9)
  • 对新路由测试的突变探针 — 4 个突变体全部被捕获,每次突变后均恢复绿色
  • packages/core 的平台伪装替代探针(3 次完整运行:linux 基线、darwin、win32)— 未发现可确认的平台缺陷(见上文)
  • npm run generate:settings-schema — 未运行(未触碰 settings 源)
  • npm run bundle 后的集成测试 — 未运行(改动为 CI 工作流注释与 CI 路由测试,不涉及打包后的 CLI 行为)

Base-conflict check · 基分支冲突检查: no conflict with main. · 与 main 无冲突。

⚠️ The branch received new commits while this round ran; they were merged into this push, but this round's verification predates that merge — re-check anything that landed mid-run. · 本轮运行期间分支收到了新的提交;本次推送已将其合并,但本轮验证在合并之前完成——请复查运行期间落地的改动。

Re-review when you have a moment. After round 100 this bot stops and leaves the PR for a human. · 有空请复审;第 100 轮后本 bot 停止并将 PR 交给人工。


🧠 Handled by Qwen Code · model/模型 qwen3.8-max

@qwen-code-ci-bot qwen-code-ci-bot 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.

Partially reviewed — gaps disclosed.

2 Suggestion-level finding(s) this review confirmed are already reported on this PR and are not repeated:

  • parseChangedFiles/main() duplication vs sibling classify-profile.mjs — already reported (comment 3801901568)
  • nightly-exclusion guard presence-check hole in scripts/tests/ci-platform-lanes.test.js — already reported (comment 3801901554)

Not reviewed: the executable-script lint — .github/scripts/ci/classify-pr-profile.sh: shellcheck is not installed.

Not linted (tool limitation, not a blocker): the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted.

中文说明

仅完成部分审查,审查缺口已披露。

本轮确认的 2 条建议级发现已在 PR 上报告过,不再重复发布(列表见上方英文部分)。

未审查:the executable-script lint — .github/scripts/ci/classify-pr-profile.sh: shellcheck is not installed。

未检查(工具限制,非阻断):the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted。

— qwen3.8-max via Qwen Code /review (v0.21.13)

wenshao added a commit that referenced this pull request Aug 22, 2026
Verification run (fixes + #9370's workflow) cut the Windows failures
from 69 to 5 and left the macOS lane's infra error. Follow-ups:

- daemon-git-worktree-guard resolvePhysicalPath: splitting an absolute
  Windows path yields the drive as a segment (C:), which path.join
  glued back onto the root as C:\C:. Walk only the part past the root.
  Exposed by the first round's tokenizer fix, which let intact drive
  paths reach this code for the first time.
- scratch-tree tests: the git-created gitfile refuses in-place
  overwrite on Windows even after clearing the read-only attribute;
  delete and recreate instead.
- bridge.test stderr audit assertion: the line prints the session id
  through JSON.stringify, escaping Windows backslashes; match the
  escaped spelling (test added this morning by #9543, landed after the
  baseline census).
- managed-scratch 'root replaced' test: dev/ino identity is not
  reliably observable on every Windows volume; state the precondition
  and skip where the swap is indistinguishable.
- scripts vitest suite: the unhandled onTaskUpdate worker RPC timeout
  is deterministic on the macOS runners with every test green; stop
  letting unhandled errors fail this suite while test failures stay
  fatal, and drop the stale claim that the pool override removal
  fixed it.
One conflict, resolved as the union of both sides: ci.yml's HELPER_TESTS
keeps this branch's ci/classify-platform-sensitivity.test.mjs entry and
gains main's WORKFLOW_SIZE_BASE_SHA env block (#9931/#9904) beneath it.

Also bump ci.yml's .size-baseline entry 74315 -> 81137 in the same
commit: main's workflow-size ratchet arrived while this branch was open,
and this PR's growth of ci.yml is real — the schedule trigger, the
classify_platform job, and the revived lane wiring. Without the bump the
ratchet's vitest mirror fails `npm run test:scripts` on every lane and
the shell gate fails the ubuntu gate step.
@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🤖 Addressed the latest review feedback (round 10/100). What changed, and what I pushed back on: · 已处理最新评审反馈(第 10/100 轮)。改动内容与我反驳保留之处如下:

Autofix round report — merged main (one conflict), bumped the size-ratchet baseline, re-triaged both red lanes with new evidence

Round inputs: --conflict true; no new reviews, inline comments, or issue-level
comments (Critical-only mode is active; the Deferred non-Critical feedback
section is the deterministic brake's audit record and was left untouched).
Actionable this round: the requested base-conflict resolution and the two
still-red checks (Test (macos-latest, Node 22.x), Test (windows-latest, Node 22.x) from run 32553854153).

Base merge (done) — commit b66a4fa423

Merged origin/main (through 8be07151f6, ~30 commits). Exactly one
conflict: the HELPER_TESTS env in ci.yml, where this branch had added
ci/classify-platform-sensitivity.test.mjs and main had added the
WORKFLOW_SIZE_BASE_SHA env block (#9931/#9904) beneath the same list.
Resolved as the union of both additions — this branch's entry kept, main's
commented env block appended under it. Both directions are pinned by tests:
the platform-lanes suite asserts the classifier entry via toContain, and
main's workflow-size.test.js pins the exact WORKFLOW_SIZE_BASE_SHA line.
Everything else auto-merged, including the heavily both-sided
qwen-autofix-workflow.test.js; the merged suites are verified green below.

Workflow-size ratchet baseline bump (required by the merge)

Main's arrival brought the workflow-size growth ratchet (#9904/#9931) while
this branch was open. Its vitest mirror failed immediately on the merged tree:
ci.yml was 6822 bytes over its recorded 74315 (allowance 4096), and the
file differs from the PR base, so the stale-baseline leniency did not apply.
Left unfixed this fails npm run test:scripts on every lane and the shell
gate on the ubuntu gate step.

Fixed the way the ratchet's own contract prescribes ("if the growth is real,
update .size-baseline in this PR and say why"): bumped the ci.yml entry
74315 → 81137. The growth is real and is this PR's subject — the revived
platform lanes' schedule trigger, the classify_platform job, and the lane
wiring/comments. Evidence: scripts/tests/workflow-size.test.js failed
before the bump (assertion message quoted the overage) and passes after;
.github/scripts/check-workflow-size.sh reports the whole tree within the
gate and allowance.

Failed checks — re-triaged on current evidence

Test (windows-latest, Node 22.x): FAILURE — pre-existing platform drift (#9481), outside this PR's footprint

Run 32553854153 executed at this PR's head. The failing suites sit entirely
in package code this PR does not touch: daemon/serve suites that never reach
127.0.0.1:4170, Channel worker did not exit after SIGKILL (POSIX signal
semantics Windows does not have), plus path/permission assertions — exactly
the census maintainer triage recorded in #9481 ("59 tests across 10 files,
unobserved since the merge queue stopped running"), filed from an earlier
lane run and still OPEN. The issue's own handling note says landing #9370
does not depend on fixing them. The branch diff touches only .github/** and
scripts/tests/**; on Windows the vitest config additionally excludes every
bash-driven workflow suite. Nothing in the footprint can cause or cure these
failures, so the triage stands unchanged from prior rounds.

Test (macos-latest, Node 22.x): FAILURE — vitest-worker RPC timeout flake, reproduced locally this round

#9481 recorded that the macOS lane's tests pass and the job fails only on an
unhandled [vitest-worker]: Timeout calling "onTaskUpdate" — "worth watching
for flakiness, not a code defect". This round produced fresh, stronger
evidence: the identical signature reproduces on this (slower) Linux runner in
npm run test:scripts — all 1747 tests pass, and the run still exits 1 on
the unhandled error. Bisected to scripts/tests/qwen-autofix-workflow.test.js
(reproduces standalone, on both threads and forks pools). Mechanism
traced in vitest's bundled birpc: the worker RPC timeout is a fixed 60 s
(DEFAULT_TIMEOUT = 6e4), and that suite keeps a worker's event loop
continuously busy with ~153 synchronous bash spawnSync invocations across
~80 s of test time — on a slow or loaded host the RPC window is exceeded and
the run dies after green tests. Fast ubuntu runners stay green; the
macos-latest lane hit it. This is a load/environment flake, not a code
defect; the repository's deflake machinery already engaged on the lane (the
job's annotations show the rerun path). No in-footprint fix exists — curing
it would mean changing the vitest runner configuration, a file this PR does
not own.

Formatter-normalization note (transparency)

The merge commit carries prettier-normalized variants of exactly two files
only main had modified: docs/design/web-shell/web-shell-image-drag-and-drop.md
(two lazy blockquote continuations gained explicit > markers) and
packages/core/src/config/config-session-env.test.ts (call re-wrapping).
Investigated to the bottom: main's bytes are NOT a prettier fixpoint under
the repo config (.prettierrc.json + .editorconfig), while the committed
variants ARE the exact fixpoint — running the repo's prettier on main's bytes
reproduces the committed bytes precisely. The commit's husky/lint-staged hook
rewrites any attempt to restore main's bytes (demonstrated twice; the repair
commit is mechanically impossible), so the committed form is the toolchain's
canonical one. CI's prettier step runs in write mode and cannot fail on this;
the .ts change is whitespace-only (assertions unchanged).

Verification

Commands actually run this round, and results:

  • npm run build — passed (exit 0)
  • npm run typecheck — passed (exit 0)
  • npm run lint — passed (exit 0)
  • npm run test:scripts — 66/66 test files, 1747 passed | 16 skipped, zero
    test failures. Caveat reported honestly: on this slow runner every full run
    exits 1 on the known [vitest-worker]: Timeout calling "onTaskUpdate"
    unhandled error described above (the macOS lane signature) with no test
    failures; deterministic content failures (the size ratchet) were fixed and
    re-verified green.
  • node --test over all 19 HELPER_TESTS files — 402 passed, 0 failed
  • npx vitest run scripts/tests/workflow-size.test.js — 195 passed (failed
    before the baseline bump; this is the mutation witness for the bump)
  • bash .github/scripts/check-workflow-size.sh — passed ("within 4096 bytes
    of its recorded baseline")
  • actionlint 1.7.12 on the merged ci.yml (installed via the repo's
    scripts/lint.js --setup) — passed, no findings
  • node scripts/lint.js --prettier — ran green; note it is prettier --write
    (fix mode), it rewrote pre-existing formatting drift across the tree, and
    all of those rewrites were reverted before committing (only the hook's own
    two-file normalization above remains)
  • Not runnable on this host (environment limitation, recorded): yamllint
    (no pip module available) and shellcheck (its release tarball needs xz,
    absent here). Both lanes ran green on the parent commits in CI and re-run
    on the pushed merge.

No new guards or branches were added this round; the only behavioral change
is the baseline bump, whose witness is the before-failure/after-pass of
workflow-size.test.js recorded above. No base-conflict remains
(git status clean at b66a4fa423).

中文说明

Autofix 轮次报告 —— 已合并 main(一处冲突)、上调体积棘轮基线、并以新证据重新分诊两条红色 lane

本轮输入:--conflict true;无新的 review、行内评论或议题级评论(当前为
Critical-only 模式;Deferred non-Critical feedback 部分是确定性刹车的审计记录,未做改动)。本轮可处理事项:请求的 base 冲突解决,以及两条持续红色的检查(run 32553854153 中的 Test (macos-latest, Node 22.x)Test (windows-latest, Node 22.x))。

Base 合并(已完成)—— 提交 b66a4fa423

合并了 origin/main(至 8be07151f6,约 30 个提交)。恰好一处冲突:ci.ymlHELPER_TESTS 环境变量 —— 本分支添加了 ci/classify-platform-sensitivity.test.mjs,而 main 在同一列表下方添加了 WORKFLOW_SIZE_BASE_SHA 环境变量块(#9931/#9904)。按双方意图的并集解决:保留本分支的条目,并在其下追加 main 的带注释环境变量块。两个方向都有测试钉住:platform-lanes 套件用 toContain 断言分类器条目,main 的 workflow-size.test.js 逐行钉住 WORKFLOW_SIZE_BASE_SHA。其余全部自动合并,包括双方都大量改动的 qwen-autofix-workflow.test.js;合并后的各套件已在下方验证为绿。

工作流体积棘轮基线上调(合并所必需)

本分支开放期间,main 带来了工作流体积增长棘轮(#9904/#9931)。其 vitest 镜像在合并后的树上立刻失败:ci.yml 超出记录的 74315 达 6822 字节(允许额度 4096),且文件与 PR base 不同,因此"基线过期"的宽容分支不适用。若不修复,每条 lane 的 npm run test:scripts 都会失败,ubuntu 门禁步骤的 shell 门禁也会失败。

按棘轮自身契约规定的方式修复("若增长是真实的,在本 PR 中更新 .size-baseline 并说明原因"):将 ci.yml 条目从 74315 → 81137。增长是真实的,且正是本 PR 的主题 —— 恢复的平台 lane 的 schedule 触发器、classify_platform 任务,以及 lane 的接线与注释。证据:scripts/tests/workflow-size.test.js 在上调前失败(断言消息引用了超出量),上调后通过;.github/scripts/check-workflow-size.sh 报告全部文件在门禁与额度之内。

失败检查 —— 基于当前证据重新分诊

Test (windows-latest, Node 22.x):失败 —— 既有平台漂移(#9481),在本 PR 足迹之外

Run 32553854153 在本 PR 的 head 上执行。失败套件全部位于本 PR 未触碰的包代码中:始终无法连通 127.0.0.1:4170 的 daemon/serve 套件、Channel worker did not exit after SIGKILL(Windows 没有的 POSIX 信号语义),以及若干路径/权限断言 —— 正是维护者分诊在 #9481 中记录的清单("10 个文件 59 个测试,自 merge queue 停摆后无人观测"),由更早一次 lane 运行立案,目前仍为 OPEN。该议题自身的处理说明写明:#9370 的合入不依赖这些修复。本分支 diff 只触及 .github/**scripts/tests/**;在 Windows 上,vitest 配置还额外排除了所有 bash 驱动的工作流套件。足迹之内既不可能造成、也不可能治愈这些失败,因此分诊结论与之前各轮一致。

Test (macos-latest, Node 22.x):失败 —— vitest-worker RPC 超时抖动,本轮已在本地复现

#9481 记录过:macOS lane 的测试全部通过,job 仅因一个未捕获的 [vitest-worker]: Timeout calling "onTaskUpdate" 而失败 —— "值得观察是否抖动,而非代码缺陷"。本轮产生了更新、更有力的证据:同样的签名在这台(较慢的)Linux 运行器的 npm run test:scripts 中复现 —— 全部 1747 个测试通过,运行却因未捕获错误以退出码 1 结束。二分定位到 scripts/tests/qwen-autofix-workflow.test.js(单独运行即可复现,threadsforks 两种池均复现)。机制已在 vitest 内置的 birpc 中追到:worker RPC 超时是固定的 60 秒(DEFAULT_TIMEOUT = 6e4),而该套件在约 80 秒的测试时间内以约 153 次同步 spawnSync bash 调用持续占满 worker 事件循环 —— 在慢速或高负载主机上会超出 RPC 窗口,测试全绿之后运行反而失败。快速的 ubuntu 运行器保持绿色;macos-latest lane 命中了它。这是负载/环境抖动,不是代码缺陷;仓库的 deflake 机制已在该 lane 上介入(job 的注解显示了重跑路径)。足迹之内没有修复方案 —— 根治需要修改 vitest 运行器配置,而该文件不属于本 PR。

格式化归一说明(透明起见)

合并提交携带了恰好两个"仅 main 修改过"的文件的 prettier 归一变体:docs/design/web-shell/web-shell-image-drag-and-drop.md(两个懒引用续行获得了显式 > 标记)与 packages/core/src/config/config-session-env.test.ts(调用换行方式变化)。已彻查到底:在仓库配置(.prettierrc.json + .editorconfig)下,main 的字节并不是 prettier 不动点,而提交的变体恰是不动点 —— 用仓库的 prettier 处理 main 的字节,得到的正是提交的字节。提交时的 husky/lint-staged 钩子会把任何"恢复 main 字节"的尝试改写回去(已两次实证;修复提交在机制上不可能成功),因此提交的形式就是工具链的规范形式。CI 的 prettier 步骤是写入模式,不会因此失败;.ts 的改动仅为空白(断言未变)。

验证

本轮实际运行的命令及结果:

  • npm run build —— 通过(退出码 0)
  • npm run typecheck —— 通过(退出码 0)
  • npm run lint —— 通过(退出码 0)
  • npm run test:scripts —— 66/66 个测试文件,1747 通过 | 16 跳过,零测试失败。如实说明的保留项:在这台慢速运行器上,每次完整运行都会因上述已知的 [vitest-worker]: Timeout calling "onTaskUpdate" 未捕获错误(即 macOS lane 签名)以退出码 1 结束,但没有任何测试失败;确定性的内容失败(体积棘轮)已修复并复验为绿。
  • 对全部 19 个 HELPER_TESTS 文件运行 node --test —— 402 通过,0 失败
  • npx vitest run scripts/tests/workflow-size.test.js —— 195 通过(基线上调前失败;这就是该上调的变异见证)
  • bash .github/scripts/check-workflow-size.sh —— 通过("在其记录基线的 4096 字节之内")
  • 对合并后的 ci.yml 运行 actionlint 1.7.12(经仓库的 scripts/lint.js --setup 安装)—— 通过,无发现
  • node scripts/lint.js --prettier —— 运行通过;注意它是 prettier --write(修复模式),它改写了树中既有的格式化漂移,这些改写已全部在提交前回退(仅保留上述钩子自身的两个文件归一)
  • 本机无法运行(环境限制,记录在案):yamllint(无可用 pip 模块)与 shellcheck(其发布包需要 xz,本机缺失)。这两项在 CI 的父提交上均为绿色,并将在推送后重新运行。

本轮未新增任何守卫或分支;唯一的行为改动是基线上调,其见证即上文记录的 workflow-size.test.js 上调前失败/上调后通过。b66a4fa423git status 干净,无遗留冲突。

🧭 Gate advisory — this round modified areas outside the PR footprint (machine-measured, not agent-authored):

  • docs
  • packages/core
    Review the expansion deliberately; the footprint gate is in advisory mode. · 本轮改动了 PR 足迹之外的区域(门自动测量,非 agent 文本),当前足迹门为 advisory 模式,请有意识地审阅该扩张。

Deferred non-Critical feedback

Critical-only mode is active: 5 change-producing rounds are complete. The workflow excluded the non-Critical feedback below from this round's actionable sections; the items remain open for human follow-up. Maintainer feedback is deferred only after its author has used 2 regular feedback batches in this window's Critical-only tail; authors at that budget, if any, are named below. (@qwen-code /retry starts a fresh counting window.)

中文说明

已进入仅处理 Critical 的模式:已完成 5 个产生改动的轮次。本轮可执行区域已排除下方非 Critical 反馈;这些条目保持开放,留待人工跟进。维护者反馈仅在其本人于本窗口 Critical-only 阶段已使用 2 批常规反馈预算后才会延后;达到预算的作者(如有)在下方点名。(评论 @qwen-code /retry 可开启新的计数窗口。)

Base-conflict check · 基分支冲突检查: conflicted with main — resolved in this push. · 与 main 有冲突——已在本次推送中解决。

Re-review when you have a moment. After round 100 this bot stops and leaves the PR for a human. · 有空请复审;第 100 轮后本 bot 停止并将 PR 交给人工。


🧠 Handled by Qwen Code · model/模型 qwen3.8-max

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

📊 Takeover milestone — round 10/100, in the current window. Census: 8 pushed fix(es), 5 no-change review(s), 0 timeout(s), 1 rejected attempt(s), 0 deliberate stop(s) under instruction (deferred to a human), 1 other round(s) (crash / model error / gate error / infra), 3 base update(s).

This many rounds deserves a human look. Options: keep going (fine — nothing changes), split or reduce the PR if rounds keep accumulating, or release takeover (remove the autofix/takeover label or comment @qwen-code /takeover stop). Management continues unchanged unless you act.

中文说明

📊 接管里程碑 —— 第 10/100 轮(当前窗口)。统计:推送修复 8 次、审阅无需改动 5 次、超时 0 次、验证拒绝 1 次、按指示有意停止(移交人工)0 次、其他轮次(崩溃/模型错误/门错误/infra)1 次、base 更新 3 次。

轮次到这个量值得人工看一眼。可选:继续(无需操作);若轮次持续累积,考虑拆分或缩减 PR;或释放接管(移除 autofix/takeover 标签或评论 @qwen-code /takeover stop)。不操作则托管照常继续。

@qwen-code-ci-bot qwen-code-ci-bot 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.

⚠️ Downgraded from Approve to Comment: CI failing: Test (macos-latest, Node 22.x), Test (windows-latest, Node 22.x). Reviewed.

Not linted (tool limitation, not a blocker): the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted.

中文说明

⚠️ 已从批准降级为评论:CI failing: Test (macos-latest, Node 22.x), Test (windows-latest, Node 22.x)。 已审查。

未检查(工具限制,非阻断):the executable-script lint — .github/workflows/ci.yml: actionlint embedded-shell source mapping is not yet supported — not linted; the executable-script lint — .github/workflows/main-ci-failure-issue.yml: actionlint embedded-shell source mapping is not yet supported — not linted。

— qwen3.8-max via Qwen Code /review (v0.22.0)

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🤖 Reviewed the latest feedback — no changes needed. Why, point by point: · 已审阅最新反馈——无需改动。逐点说明原因如下:

No action this round — both failed checks re-triaged on NEW evidence; both stay routed to #9481

Critical-only mode is active. The reviews, inline-comment, and issue-level
sections carry nothing; the Deferred non-Critical feedback section is the
deterministic brake's audit record and was left untouched. The only actionable
items are the two failed checks on run 32809721070 (head b66a4fa423). No code
change was made: neither failure admits a fix inside this PR's footprint
(.github/**, scripts/tests/**), and this round verified that with fresh
evidence rather than carried-over conclusions.

Test (windows-latest, Node 22.x): FAILURE — the failure census CHANGED since the last lane observation; the three remaining failures are platform drift from main commits dated Aug 23–24

Fresh evidence, gathered from the failing job itself (run 32809721070, job
97686670053) via the public GitHub API:

  • Step-level conclusions: every step through Install dependencies succeeded;
    the job failed in Run tests and generate reports (npm run test:ci). The
    check run carries exactly three test-failure annotations — not the 59-test /
    10-file census ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481 was filed with. The original census sat entirely in
    packages/cli daemon/serve suites; those are now green on main. The three
    remaining failures are in different packages:
    1. packages/vscode-ide-companion/src/webview/handlers/SessionMessageHandler.test.ts:946intercepts /export html and uses the VSCode export flow instead of sending a prompt: expected file:///workspace/export.html, received file:///D:/workspace/export.html.
    2. …/SessionMessageHandler.test.ts:1243encodes exported file links before rendering markdown: expected file:///workspace/export%20%28%231%29.html, received file:///D:/workspace/export%20%28%231%29.html.
    3. packages/node-repl/src/node-repl.semantics.test.ts:374resolves bare packages from a symlinked cwd node_modules: EBUSY: resource busy or locked, rmdir in the test's own finally cleanup.
  • Mechanism, proven by reading the code at this head. The export handler
    builds its confirmation link with pathToFileURL(filePath).href
    (SessionMessageHandler.ts:37-46); both tests mock the exported path as the
    driveless POSIX string fsPath: '/workspace/export.html'. On Windows, Node
    resolves a driveless absolute path against the current drive (the runner's
    workspace drive D:), so the produced URL correctly carries D: — the
    production behaviour fix(vscode): preserve Windows file links in session exports #8953 ("preserve Windows file links in session exports")
    intended — while the test literals are pinned POSIX-only. The node-repl test
    spawns a real kernel child process with cwd: work and then fs.rmSynces
    that directory in finally (line 374); Windows refuses to remove a directory
    a live process is using as its cwd (POSIX allows it), hence EBUSY.
  • Provenance: all of it landed on main AFTER the lane's previous
    observation.
    git log on the two files: SessionMessageHandler.test.ts
    was last touched by 632e22b6e2 (2026-08-24, fix(vscode): preserve Windows file links in session exports #8953) and 5b3830b46c
    (2026-08-24, feat(vscode-ide-companion): adopt WebShell transcript as the default timeline #9719); packages/node-repl in its current standalone form was
    delivered by be891657f7 (2026-08-23, refactor(node-repl)!: deliver the persistent Node REPL as a standalone MCP server #9499). The previous Windows lane run
    was 2026-08-22 (head 6f73fbf742) — before all three commits. These are new
    arrivals of the same failure class ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481 tracks: platform-shaped tests going
    red while nobody on this PR changed a line they execute.
  • Footprint: empty by construction. git diff origin/main...HEAD -- packages/vscode-ide-companion packages/node-repl is empty; the PR diff
    touches only .github/**, scripts/tests/** (plus two whitespace-only
    merge carryovers in docs/ and packages/core). Nothing in the footprint
    can cause or cure these failures, and the gate's footprint policy is
    deny-by-default for areas the PR never touched.

Disposition: unchanged from maintainer triage (issue comment 5343315912,
2026-08-19) — "restoring the trigger is what found it, and fixing … platform
drift belongs in its own change", filed as #9481 (still OPEN; its handling
note says landing #9370 does not depend on it). The revived lane is doing its
job again: it caught yesterday's main commits the day after they landed. The
three failures belong to #9481's per-file triage, not this PR.

Test (macos-latest, Node 22.x): FAILURE — the recorded vitest-worker RPC timeout, reproduced at this head

  • Job 97686670070 failed in Run tests and generate reports with exactly one
    failure annotation: a generic Process completed with exit code 1. and
    zero test-file annotations — the same shape as every previous macOS lane
    run on this branch (identical to the 2026-08-22 run at 6f73fbf742, warning
    set included). Vitest emits per-test GitHub annotations for real failures
    (the Windows lane shows three); their absence means no test failed.
  • Fresh local reproduction at this very head. npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/qwen-autofix-workflow.test.js
    on this runner: Test Files 1 passed (1), Tests 219 passed (219), exit
    code 1, sole error Error: [vitest-worker]: Timeout calling "onTaskUpdate" from vitest's bundled birpc chunk, at 74.13 s run duration —
    the exact signature ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481 recorded for the macOS job. Mechanism traced in
    round 10 and unchanged: the suite keeps a worker's event loop saturated with
    ~150 synchronous bash spawnSync invocations across ~75 s of test time;
    birpc's fixed 60 s RPC window is exceeded on slow/loaded hosts, and the run
    dies after green tests. Fast ubuntu runners stay green (the ubuntu lane is
    green on this same commit).
  • Maintainer classification stands: "worth watching once the nightly starts,
    not a code defect" (ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481). Curing it would mean restructuring the suite's
    spawn pattern or editing vitest runner configuration — speculative
    test-infrastructure surgery the maintainer has explicitly assigned to ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481,
    and the repo's qwen-ci-flaky-rerun/deflake pipeline is the established
    home for this failure class once the nightly runs.

Why no change this round

Both red checks are documented, triaged to #9481 (still open), and
intentionally non-blocking for this PR by maintainer decision; neither admits
a fix inside this PR's footprint. The Windows census evolving from 59 tests to
3 between lane runs is the lanes working as designed — main's own daily drift
is now visible per-commit instead of accumulating unseen for six weeks.
Blocking this PR on what the lane finds would restore the exact deadlock that
switched the lanes off.

Verification (commands actually run this round)

中文说明

本轮无改动 —— 两个失败检查均基于新证据重新分诊;仍归入 #9481

当前处于仅处理 Critical 的模式。评审、行内评论与议题级评论区域均无内容;Deferred non-Critical feedback(延后的非 Critical 反馈)一节是确定性刹车机制的审计记录,未做改动。本轮唯一可处理事项是 run 32809721070(head b66a4fa423)中的两个失败检查。本轮未改动任何代码:两个失败都不存在本 PR 足迹(.github/**scripts/tests/**)内的修复方案,且本轮用新证据而非沿用旧结论核实了这一点。

Test (windows-latest, Node 22.x):失败 —— 失败清单自上次泳道观测以来已变化;剩余 3 个失败是 8 月 23–24 日 main 提交带来的平台漂移

以下新证据直接取自失败 job 本身(run 32809721070,job 97686670053),经 GitHub 公开 API 只读获取:

  • 步骤级结论:Install dependencies 及之前全部成功,job 在 Run tests and generate reportsnpm run test:ci)失败。该 check run 恰好带 3 条测试失败注解 —— 不再是 ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481 立案时的"10 个文件、59 个测试"清单。原清单全部位于 packages/cli 的 daemon/serve 套件,那些如今在 main 上已绿。剩余 3 个失败位于其他包:
    1. packages/vscode-ide-companion/src/webview/handlers/SessionMessageHandler.test.ts:946 —— intercepts /export html and uses the VSCode export flow instead of sending a prompt:期望 file:///workspace/export.html,实际 file:///D:/workspace/export.html
    2. …/SessionMessageHandler.test.ts:1243 —— encodes exported file links before rendering markdown:期望 file:///workspace/export%20%28%231%29.html,实际 file:///D:/workspace/export%20%28%231%29.html
    3. packages/node-repl/src/node-repl.semantics.test.ts:374 —— resolves bare packages from a symlinked cwd node_modules:测试自身 finally 清理中 EBUSY: resource busy or locked, rmdir
  • 机制:已在当前 head 上通过阅读代码证实。 导出处理器用 pathToFileURL(filePath).href 拼确认链接(SessionMessageHandler.ts:37-46);两个测试都把导出路径 mock 成无盘符的 POSIX 字符串 fsPath: '/workspace/export.html'。在 Windows 上,Node 会把无盘符绝对路径解析到当前驱动器(runner 工作区所在盘 D:),于是产出的 URL 正确地带上 D: —— 这正是 fix(vscode): preserve Windows file links in session exports #8953("保留会话导出中的 Windows 文件链接")想要的产品行为 —— 而测试的期望字面量却只钉住了 POSIX 形态。node-repl 测试以 cwd: work 启动真实内核子进程,随后在 finally(第 374 行)里 fs.rmSync 该目录;Windows 拒绝删除正被存活进程用作 cwd 的目录(POSIX 允许),于是 EBUSY。
  • 出处:全部在该泳道上次观测之后才进 main。 对两个文件跑 git logSessionMessageHandler.test.ts 最近由 632e22b6e2(2026-08-24,fix(vscode): preserve Windows file links in session exports #8953)与 5b3830b46c(2026-08-24,feat(vscode-ide-companion): adopt WebShell transcript as the default timeline #9719)改动;packages/node-repl 的当前独立形态由 be891657f7(2026-08-23,refactor(node-repl)!: deliver the persistent Node REPL as a standalone MCP server #9499)交付。上一次 Windows 泳道运行是 2026-08-22(head 6f73fbf742)—— 早于这三个提交。它们是 ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481 所跟踪的同一失败类别的新成员:平台形状的测试变红,而本 PR 没有改过它们执行的任何一行。
  • 足迹:按构造为空。 git diff origin/main...HEAD -- packages/vscode-ide-companion packages/node-repl 为空;PR diff 只触及 .github/**scripts/tests/**(外加 docs/packages/core 中两处仅空白的合并携带)。足迹之内既不可能造成、也不可能治愈这些失败,而足迹门对 PR 从未触及的区域是默认拒绝的。

处置:与维护者分诊一致(议题评论 5343315912,2026-08-19)——"恢复触发器正是它发现问题的方式,而修复……平台漂移应放在单独的变更中",已立为 #9481(仍 OPEN;其处理说明写明 #9370 的合入不依赖于此)。复活的泳道再次尽到职责:昨天进 main 的提交,今天就暴露在泳道之下。这 3 个失败属于 #9481 的按文件分诊,不属于本 PR。

Test (macos-latest, Node 22.x):失败 —— 已记录的 vitest-worker RPC 超时,本 head 上复现

  • Job 97686670070 在 Run tests and generate reports 失败,恰好一条失败注解:通用的 Process completed with exit code 1.,且没有任何测试文件注解 —— 与本分支此前每一次 macOS 泳道运行形态完全一致(与 2026-08-22 6f73fbf742 那次相同,含同一组警告)。Vitest 对真实测试失败会逐条发 GitHub 注解(Windows 泳道就有 3 条);注解缺席即没有测试失败。
  • 在当前 head 上的本地新复现。 在本运行器执行 npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/qwen-autofix-workflow.test.jsTest Files 1 passed (1)Tests 219 passed (219)、退出码 1,唯一错误为来自 vitest 内置 birpc 块的 Error: [vitest-worker]: Timeout calling "onTaskUpdate",全程 74.13 秒 —— 与 ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481 为 macOS job 记录的签名完全一致。机制第 10 轮已追出且未变:该套件以约 150 次同步 bash spawnSync 调用在约 75 秒测试时间内持续占满 worker 事件循环;慢速/高负载主机上超出 birpc 固定的 60 秒 RPC 窗口,测试全绿之后运行反而失败。快速的 ubuntu 运行器保持绿色(同一提交下 ubuntu 泳道为绿)。
  • 维护者分类维持不变:"值得在 nightly 跑起来之后观察是否为抖动,而非代码缺陷"(ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481)。根治意味着重构该套件的 spawn 模式或修改 vitest 运行器配置 —— 属于推测性的测试基础设施手术,维护者已明确划归 ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481;仓库的 qwen-ci-flaky-rerun/deflake 流水线才是这类失败形态在 nightly 运行后的既定归属。

本轮为何不做改动

两个红色检查都有据可查、已由分诊归入 #9481(仍开放),且按维护者决定有意不阻塞本 PR;两者都不存在本 PR 足迹内的修复。Windows 清单从 59 个测试演变为 3 个,恰恰说明泳道在按设计工作 —— main 自身的日常漂移如今逐提交可见,而不是再无人察觉地累积六周。以泳道发现的问题阻塞本 PR,会恢复当初让泳道关闭的那个死锁。

验证(本轮实际执行的命令)

Deferred non-Critical feedback

Critical-only mode is active: 5 change-producing rounds are complete. The workflow excluded the non-Critical feedback below from this round's actionable sections; the items remain open for human follow-up. Maintainer feedback is deferred only after its author has used 2 regular feedback batches in this window's Critical-only tail; authors at that budget, if any, are named below. (@qwen-code /retry starts a fresh counting window.)

中文说明

已进入仅处理 Critical 的模式:已完成 5 个产生改动的轮次。本轮可执行区域已排除下方非 Critical 反馈;这些条目保持开放,留待人工跟进。维护者反馈仅在其本人于本窗口 Critical-only 阶段已使用 2 批常规反馈预算后才会延后;达到预算的作者(如有)在下方点名。(评论 @qwen-code /retry 可开启新的计数窗口。)

Base-conflict check · 基分支冲突检查: no conflict with main. · 与 main 无冲突。


🧠 Handled by Qwen Code · model/模型 qwen3.8-max

@wenshao

wenshao commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator Author

Status at this head, and one thing I could not settle.

All review threads are resolved. The last live Critical — the two mapfile-crossing siblings left ungated — is fixed and now pinned by a meta-test that reads the suite and asserts all three titles carry the host probe, so a dropped gate fails a test instead of reddening the lane. The two round-15 items are resolved as their review described.

The macOS lane passes its tests and still fails the job. At this head: Test Files 66 passed (66), Tests 1700 passed | 63 skipped, and one unhandled [vitest-worker]: Timeout calling "onTaskUpdate", which vitest counts as Errors 1 error and exits 1 on. Same signature on 2026-08-19 and 2026-08-25, so it is not a one-off. Nothing in the run is a test failure any more.

I had a candidate cause and it did not survive checking, so I am not shipping it as a fix: scripts/tests/vitest.config.ts pins minThreads: 8, maxThreads: 16 unconditionally, and the macOS runner has 3 vCPUs, which oversubscribes the box and could starve the main process that answers worker RPCs. I tried to reproduce by constraining the same suite to three cores locally (taskset -c 0-2) and the timeout did not occur — 1733 passed, and the only failures were the three that fail on this machine regardless plus one load-sensitive gate test. So the pool sizing is a hypothesis, not a diagnosis.

That leaves a decision rather than a patch:

  1. Land the lane revival with the macOS job red on an infrastructure error, and track the worker timeout separately — the lane's real signal (the tests) is green, and the Windows breakage in ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481 is already tracked that way.
  2. Try the adaptive pool sizing on this PR as an experiment: size the pool to availableParallelism() instead of a fixed floor of 8, and see whether the macOS lane goes green. Cheap and reversible, but it changes a shared config on a hypothesis.
  3. Investigate the timeout properly first — instrument which file is in flight when it fires, and whether it is one long synchronous spawnSync blocking a worker past the RPC window.

My preference is 1 with a follow-up issue, since the lane is now producing exactly the signal this PR set out to restore and the remaining failure is vitest's, not the repo's. Happy to do 2 or 3 on request.

pull Bot pushed a commit to edisplay/qwen-code that referenced this pull request Aug 25, 2026
* fix: repair the Windows and macOS test lane failures

The platform lanes have been dark since 2026-07-02 (gated on a merge
queue that is not enabled); reviving them in QwenLM#9370 exposed these
pre-existing failures. 72 failing tests across 16 files, all traced to
platform assumptions:

Product fixes (2):
- daemon-git-worktree-guard: on Windows a backslash is a path
  separator, not a POSIX escape. The shell-quote tokenizer consumed
  `\x` pairs, mangling `C:\repo\sub` into a relative word — false
  denials for legitimate commands AND undetected relocations for
  backslash-relative ones. Preserve unquoted backslashes before
  tokenisation on win32.
- acpAgent isOwnerOnlyDirectory: hard-returning false on win32
  disabled Live managed relocation entirely (Node exposes no
  ownership bits there). Rest on the structural checks — symlink
  rejection and dev/ino identity across the realpath round trip —
  the same trade-off serve/live/discovery.ts already makes.

Test-fixture fixes (the product code was already Windows-correct):
- server.test Live catalog roots use the host-native path shape
  (path.resolve equality proof fails for POSIX literals on win32)
- review cleanup suite pins POSIX node:path semantics for its
  literal-keyed mocks; fetch-pr resume budget uses a native tmpdir;
  scratch-tree clears the DOS read-only attribute before overwriting
  a git-created gitfile; worktree-list assertions compare
  slash-normalized (git prints forward slashes on Windows)
- mode-bit (0600) assertions skip on win32 (no POSIX permission
  bits; every read side already skips its mode check there)
- O_NOFOLLOW symlink test and the unescapePath no-op test skip on
  win32; sidecar errno injection uses a portable NUL byte; Footer
  exact-hint text is platform-conditional (win32 indicator is
  8 columns shorter, shifting the flex shrink by one)

scripts vitest suite: drop the fixed 8-16 worker floor that
oversubscribes the 3-core macOS runners — the main thread stalled
past the 60s worker RPC timeout (onTaskUpdate), exiting 1 with every
test green.

* fix: second round of platform lane repairs from CI verification

Verification run (fixes + QwenLM#9370's workflow) cut the Windows failures
from 69 to 5 and left the macOS lane's infra error. Follow-ups:

- daemon-git-worktree-guard resolvePhysicalPath: splitting an absolute
  Windows path yields the drive as a segment (C:), which path.join
  glued back onto the root as C:\C:. Walk only the part past the root.
  Exposed by the first round's tokenizer fix, which let intact drive
  paths reach this code for the first time.
- scratch-tree tests: the git-created gitfile refuses in-place
  overwrite on Windows even after clearing the read-only attribute;
  delete and recreate instead.
- bridge.test stderr audit assertion: the line prints the session id
  through JSON.stringify, escaping Windows backslashes; match the
  escaped spelling (test added this morning by QwenLM#9543, landed after the
  baseline census).
- managed-scratch 'root replaced' test: dev/ino identity is not
  reliably observable on every Windows volume; state the precondition
  and skip where the swap is indistinguishable.
- scripts vitest suite: the unhandled onTaskUpdate worker RPC timeout
  is deterministic on the macOS runners with every test green; stop
  letting unhandled errors fail this suite while test failures stay
  fatal, and drop the stale claim that the pool override removal
  fixed it.

* fix(ci): skip coverage report generation on non-Linux CI

CI consumes coverage only from the ubuntu lane: the artifact upload and
the coverage comment both pin coverage-reports-*-ubuntu-latest. On the
Windows runners the v8 report generation for 800+ files stalls the
vitest main thread past the 60s worker RPC budget at the end of an
all-green cli run, exiting the lane 1 (observed in verification run
32569004418). Skip coverage on non-Linux CI; local runs keep it.

* fix(ci): stop all-green cli/core runs exiting red on RPC timeout

The Windows lane's third verification round repeated the failure with
coverage already disabled: 866 cli test files green, then the worker
onTaskUpdate RPC budget (60s, hardcoded in vitest's bundled birpc)
expired under runner resource pressure and the unhandled error exited
the lane 1. Extend the scripts suite's treatment to the two big package
suites: test failures stay fatal, unhandled errors do not.

* fix: address review on the win32 guard pre-pass and lane configs

R1-1 (Critical): the win32 pre-pass escaped the character after every
unquoted backslash, so whitespace after a trailing separator glued the
next word into the -C value — a second -C/--git-dir/-c parked there
vanished from the analysis while cmd.exe still split the argv at the
whitespace, allowing a destructive mutation outside the boundary. The
tokenizer treats `\<space>` as an escaped space even after an even
number of backslashes, so escaping forward can never express "literal
backslash, then word boundary". Escape the backslash alone instead: a
double-quoted backslash before whitespace and cmd boundary characters
(; | & < > ( )) keeps them their separator role, and a plain escaped
backslash elsewhere. Verified token boundaries for the attack shape,
its tab variant, trailing-separator-before-flag, UNC, chained -C, and
quoted paths; added win32-only guard tests for the boundary shapes.

R1-2/3/4: gate dangerouslyIgnoreUnhandledErrors to non-Linux — the
ubuntu lane and Linux local runs keep the unhandled-error signal.

R1-5: pin the deterministic win32 footer truncation ('queu') instead
of skipping the content assertion there.

R1-6: build the Live conversations fixture root with the file's
documented path.resolve(path.sep, ...) convention instead of a
hardcoded C: literal.

* fix: three Windows lane failures from recent main commits

Verification of the revived lanes surfaced three failures introduced
by commits that landed while the lanes were dark:

- isSameFile compared dev/ino unconditionally; on volumes that report
  ino 0 (or a colliding value) for every file it equated distinct
  files. Treat an unverifiable inode like core's hasVerifiableInode
  convention and fall back to canonical spellings — losing hard-link
  identity there, but never equating distinct files. The hard-link
  test skips where the volume exposes no inode.
- drive's bound-address recipe test rmSync'd its temp dir while the
  backgrounded service still held it (EBUSY on Windows); shorten the
  service's self-exit timer and retry the removal.
- the FileReadCache seeding test collided under one dev:ino key when
  the volume reports the same inode for both MEMORY.md indexes; skip
  where inode identity is not real.

* fix: address round-2 review on identity fail-closed checks and the win32 guard pre-pass

* fix(cli): deny cmd.exe rewrite syntax in the daemon git-worktree guard (QwenLM#9728)

* fix: address round-4 review on the cmd-rewrite denial reason and cmd-lane test gating

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix: address round-5 review by closing the divergent Windows shell surface structurally

The win32 cmd/PowerShell lanes were analysed through a POSIX text model
plus per-stage patches; each round closed one entrance of the divergence
family and the next found new ones. Fail closed on syntax whose lane
semantics diverge from the model (lone `&`, `( )`, cmd `#`/`;`/single
quotes, /s outer-quote strip, PowerShell `--%`/`''` doubling), normalize
the whole command text once before any stage reads it, drop the bash
shadow model on lanes where the syntax defines nothing, and stop scoping
PowerShell pipeline stages as subshells.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix: address round-6 review by gating bash-semantics tests off the win32 lane and failing closed on nested Windows shells

R6-1: the whole-text divergent-syntax gate denied ~20 ungated bash-semantics
expectations on the real win32/cmd merge lane (41 failures reproduced under a
lane-spoof harness). Gate those blocks off the win32 non-bash lanes, splitting
mixed blocks so lane-safe pins keep running there, and commit the lane-spoof
harness so the whole guard suite runs as the win32/cmd merge lane on every
lane.

R5-1 (partial): cmd/powershell/pwsh invocations now fail closed on the
undecidable-payload denial on every lane — their payloads are parsed by a
grammar the POSIX text model cannot read (closes the -EncodedCommand and
nested cmd /c entrances probed at this head). The remaining class closure is
escalated to the maintainer as a product/scope decision.

* fix: address round-7 review by gating the Windows-shell fail-closed rule to the win32 platform

R7-1: the round-6 WINDOWS_SHELL_PROGRAMS branch failed closed on every lane,
which denied benign cross-platform PowerShell on POSIX daemons (pwsh
-NoProfile -Command Write-Output hello reproduced denied on the unresolved
reason at this head). Gate the rule to platform win32 — cmd.exe and Windows
PowerShell only exist there, and they stay reachable from win32 Git Bash
sessions, so the gate is platform-wide rather than windowsNative; on POSIX
the same names keep the base stance of ordinary unmodelled programs. Move
the fail-closed pins onto spoofed win32 lanes, add a win32 Git Bash lane pin
so the entrance stays closed there, and add the POSIX benign-pwsh regression
test.

* fix(cli): close the cmd.exe state-persisting entrances in the daemon guard

Probe-verified bypasses (review R5-1): cmd.exe builtins persist state
into every later &&-chained command, and the analysis modelled none of
them — `set GIT_WORK_TREE=<outside>&& git reset --hard` and
`chdir <outside> && git reset --hard` both analysed cwd-local while
the executed command relocated outside the boundary.

cmd's state-persisting builtins are a closed set, so this enumerates
them instead of chasing individual shapes:

- `set VAR=value` / `setx VAR value` carry the semantics of a POSIX
  `export VAR=value` for every later segment; route them through that
  machinery (GIT_* keys become relocations, unresolvable keys fail
  closed). Non-assignment forms (`set /p`, dynamic operands) fail
  closed.
- `chdir` joins the cd family (cmd's synonym), `/D` consumed as the
  drive-switch option.
- `path` and `doskey` rewrite which executable a bare name resolves
  to — unresolvable, failed closed.
- copy/mklink/move/robocopy/xcopy join the relinking programs on
  win32, and the text relocation markers learn `chdir`.

PowerShell-only entrances (function definitions, New-Item function:,
@-splatting) already fail closed through the unmodelled-syntax gate;
the new branches stay gated off Git-Bash sessions, where these words
are ordinary POSIX commands. Pinned by new tests in the win32-lane
harness, which spoofs win32/cmd on every platform.

* Revert "fix(cli): close the cmd.exe state-persisting entrances in the daemon guard"

This reverts commit a8f137a.

* Reapply "fix(cli): close the cmd.exe state-persisting entrances in the daemon guard"

This reverts commit b888a42.

* fix: address round-10 review by closing the Windows-lane guard entrances and the ino-0 case fold

* fix(cli): repair the round-10 build rejection by mapping chdir variants exhaustively

* fix(cli): make the /MIR relink-switch denial assertion lane-independent

The assertion spelled the unresolvable target as POSIX '/MIR', but the win32
lane resolves it through path.win32/realpathNearestExistingAsync into a
backslash spelling ('\\MIR'/'C:\\MIR'), so the new test failed only on the
merge_group-gated test_windows lane. Match either separator spelling.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

---------

Co-authored-by: qwen-code-ci-bot <qwen-code-ci-bot@users.noreply.github.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
@yiliang114
yiliang114 enabled auto-merge August 25, 2026 11:52
@yiliang114
yiliang114 added this pull request to the merge queue Aug 25, 2026
Merged via the queue into main with commit 519e824 Aug 25, 2026
17 of 19 checks passed
@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

🤖 Reviewed the latest feedback — no changes needed. Why, point by point: · 已审阅最新反馈——无需改动。逐点说明原因如下:

🤖 Reviewed the latest feedback — no changes needed. Why, point by point:

No action this round — all three inline items re-verified as fixed; the macOS worker timeout is left as the maintainer's explicit decision

Critical-only mode is active (5 change-producing rounds complete; growth window at 36/321 of the 400/400 budgets). No code was changed, no commit was made, no base merge was performed (--conflict false). The Deferred non-Critical feedback section is empty and was left untouched.

The three inline comments are confirmations — each re-verified at the current head (b66a4fa423)

  • [rc:3852522522] confirmed: all three mapfile-crossing runGate flows carry it.skipIf(!hasBashMapfile)'keeps the green path intact' (~L20522), 'rejects a conflict verdict whose round completed as fixed' (~L20969), 'locks the runner file-command backing files against env plants' (~L21124) in scripts/tests/qwen-autofix-workflow.test.js — and the meta-test 'gates every mapfile-crossing runGate flow on the host probe' (~L20503) reads the file and asserts all three titles carry the gate, so a dropped gate fails a test instead of reddening the lane. Verified present at head.
  • [rc:3852522727] confirmed: audio is in the classifier's SUBSYSTEMS regex (classify-platform-sensitivity.mjs L62), and classify-platform-sensitivity.test.mjs (L126–137) covers all five packages/audio-capture native/build files. Verified present at head.
  • [rc:3852522915] confirmed: test_windows runs-on (ci.yml L1053) admits the persistent pool only when github.event_name != 'pull_request', and the job's if restricts those non-PR triggers to merge_group, schedule, and workflow_dispatch; every pull request runs on hosted windows-2022. Verified present at head.

All three threads are already resolved on the PR; nothing further is owed on them.

Still-red checks — re-triaged, both remain routed to #9481 per maintainer decision

Test (windows-latest, Node 22.x): FAILURE — unchanged census, outside this PR's footprint. The previous round's fresh triage of run 32809721070 stands: exactly three test failures, all in packages this PR never touches (packages/vscode-ide-companion drive-letter URL expectations from #8953/#9719 landed Aug 24; packages/node-repl EBUSY-on-cwd-rmdir from #9499 landed Aug 23). git diff origin/main...HEAD is empty for those packages; nothing in this PR's footprint (.github/**, scripts/tests/**) can cause or cure them. The maintainer's new comment re-confirms the routing: "the Windows breakage in #9481 is already tracked that way."

Test (macos-latest, Node 22.x): FAILURE — zero test failures; the sole error is vitest-internal, and this round reproduced its exact signature on Linux. At this head the lane runs Test Files 66 passed (66), Tests 1700 passed | 63 skipped, plus one unhandled [vitest-worker]: Timeout calling "onTaskUpdate" that vitest counts as Errors 1 error and exits 1 on. Fresh probe this round at this exact head: npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/qwen-autofix-workflow.test.js reproduces it here too — Tests 219 passed (219), Errors 1 error, same birpc timeout, with the tests phase at 87.3s: the suite holds one worker's event loop saturated (≈150 synchronous bash spawnSync flows) past birpc's 60s RPC window, so the run dies after green tests. The maintainer's full-suite taskset -c 0-2 run not reproducing is consistent with that load-shape: spreading the suite across workers never concentrates 87s of spawn load on one worker. So the signature is not macOS-specific — it is load-shape — and it is reproducible off-macOS, which belongs in the follow-up record.

The one open item is a decision, and it stays with the maintainer

Per [ic:5409746225], the remaining question is how to close out the macOS lane's vitest-worker timeout. The options as the maintainer posed them:

  1. Land the lane revival with the macOS job red on the infrastructure error, and track the worker timeout separately (the Windows breakage is already tracked this way in ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481).
  2. Experiment with adaptive pool sizing in this PR (availableParallelism() instead of the fixed minThreads: 8 floor in scripts/tests/vitest.config.ts).
  3. Investigate the timeout properly first (instrument which file is in flight when it fires).

This round's recommendation: option 1 — agreeing with the maintainer's stated preference:

  • The lane's real signal is green: all 1700 tests pass at this head; the only failure is inside vitest's own RPC plumbing, with the same signature on 2026-08-19 and 2026-08-25.
  • Option 2 ships a shared-config change on a hypothesis the maintainer's own probe refuted (pool sizing did not reproduce it) — speculative surgery a senior reviewer would not accept on this evidence, and Critical-only mode asks for the minimal move.
  • Option 3 needs instrumentation on (or gated by) the macOS environment; the reproducible Linux single-file shape recorded above is the cheapest starting point, and it can feed the follow-up without holding this PR.
  • The cure class (restructuring the suite's spawn pattern or editing vitest runner configuration) was already explicitly assigned to ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481 by maintainer triage; the revived lanes are doing their job by surfacing it.

One note on option 1: this bot cannot file the follow-up issue (no GitHub write access in this workflow). If option 1 is chosen, the follow-up issue needs to be filed by a maintainer (or the bot can draft its text in a future round on request). If the maintainer instead wants option 2 or 3 here, say so explicitly in a comment — that request is what this round is waiting for; until then nothing in this PR changes.

Verification

No code changed and nothing was committed, so no build/typecheck/lint gate applies this round. Evidence gathered (read-only, plus one focused vitest probe):

  • git status / git log — working tree clean, head b66a4fa423 unchanged
  • grep/read verification of the three confirmed fixes at head (file and line references above)
  • npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/qwen-autofix-workflow.test.js — reproduced the worker-timeout signature: Tests 219 passed (219), Errors 1 error ([vitest-worker]: Timeout calling "onTaskUpdate"), tests phase 87.3s
中文说明

🤖 已审阅最新反馈——无需改动。逐点说明如下:

本轮无操作——三条 inline 意见均已复核确认修复;macOS worker 超时问题作为维护者的明确决策保留

当前处于仅处理 Critical 的模式(已完成 5 个产生改动的轮次;本增长窗口为 36/321,预算 400/400)。本轮未改动代码、未提交、未合并 base(--conflict false)。Deferred non-Critical feedback 区域为空,未做任何处理。

三条 inline 评论均为确认性意见——每一条都已在当前 head(b66a4fa423)复核

  • [rc:3852522522] 已确认:三条跨越 mapfile 的 runGate 流程均带有 it.skipIf(!hasBashMapfile)——scripts/tests/qwen-autofix-workflow.test.js 中的 'keeps the green path intact'(约 L20522)、'rejects a conflict verdict whose round completed as fixed'(约 L20969)、'locks the runner file-command backing files against env plants'(约 L21124)——且元测试 'gates every mapfile-crossing runGate flow on the host probe'(约 L20503)会读取该文件并断言三个标题均带此门控,因此丢失门控会以测试失败暴露,而不是再次染红 lane。已核实存在于当前 head。
  • [rc:3852522727] 已确认:audio 位于分类器的 SUBSYSTEMS 正则中(classify-platform-sensitivity.mjs L62),且 classify-platform-sensitivity.test.mjs(L126–137)覆盖了 packages/audio-capture 全部五个原生/构建文件。已核实存在于当前 head。
  • [rc:3852522915] 已确认:test_windows 的 runs-on(ci.yml L1053)仅在 github.event_name != 'pull_request' 时才允许进入持久池,且该任务的 if 将这些非 PR 触发限定为 merge_groupscheduleworkflow_dispatch;所有 pull request 都在托管的 windows-2022 上运行。已核实存在于当前 head。

这三个话题在 PR 上均已标记解决;无需再做任何处理。

仍然失败的检查——已重新分类,按维护者决定两者均归入 #9481

Test (windows-latest, Node 22.x): FAILURE——失败清单未变,位于本 PR 足迹之外。 上一轮对 run 32809721070 的新一轮分类仍然成立:恰好三个测试失败,全部位于本 PR 从未触碰的包中(packages/vscode-ide-companion 的盘符 URL 断言,来自 8 月 24 日合入的 #8953/#9719packages/node-repl 的 rmdir-cwd-EBUSY,来自 8 月 23 日合入的 #9499)。git diff origin/main...HEAD 对这些包为空;本 PR 足迹(.github/**scripts/tests/**)内没有任何东西能导致或治愈这些失败。维护者的新评论再次确认了这一归属:"the Windows breakage in #9481 is already tracked that way"(Windows 的损坏已按该方式在 #9481 中跟踪)。

Test (macos-latest, Node 22.x): FAILURE——零测试失败;唯一错误来自 vitest 内部,且本轮已在 Linux 上复现其完整签名。 在该 head 上,lane 运行结果为 Test Files 66 passed (66)Tests 1700 passed | 63 skipped,外加一个未处理的 [vitest-worker]: Timeout calling "onTaskUpdate",vitest 将其计为 Errors 1 error 并以退出码 1 结束。本轮在该 head 上的新鲜探测:npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/qwen-autofix-workflow.test.js 在此处同样复现——Tests 219 passed (219)Errors 1 error,同为 birpc 超时,测试阶段耗时 87.3 秒:该套件让一个 worker 的事件循环持续饱和(约 150 次同步 bash spawnSync 流程),超过 birpc 的 60 秒 RPC 窗口,于是运行在全绿测试之后死亡。维护者用 taskset -c 0-2 跑全套未能复现,与该负载形态一致:全套运行把负载分散到多个 worker,从不会把 87 秒的 spawn 负载集中到一个 worker 上。因此该签名并非 macOS 特有——它取决于负载形态——并且可以在非 macOS 环境复现,这一点应记入后续跟踪。

唯一未决事项是一个决策,保留给维护者

按 [ic:5409746225],剩余问题是如何收口 macOS lane 的 vitest-worker 超时。维护者给出的选项:

  1. 让 lane 复兴在 macOS 任务因基础设施错误而红的状态下合入,worker 超时另行跟踪(Windows 的损坏已在 ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481 按此方式跟踪)。
  2. 在本 PR 上试验自适应池大小(用 availableParallelism() 取代 scripts/tests/vitest.config.ts 中固定的 minThreads: 8 下限)。
  3. 先正式调查该超时(记录超时发生时正在运行哪个文件)。

本轮建议:选项 1——与维护者已表态的倾向一致:

  • lane 的真实信号是绿的:该 head 上全部 1700 个测试通过;唯一的失败发生在 vitest 自身的 RPC 管道内部,且 2026-08-19 与 2026-08-25 签名相同。
  • 选项 2 是在维护者自身探测已否证的假设(池大小未能复现)之上修改共享配置——现有证据不足以支撑这类投机性改动,且 Critical-only 模式要求最小动作。
  • 选项 3 需要在 macOS 环境(或由其门控)上做插桩;上文记录的可复现 Linux 单文件形态是最便宜的起点,可以喂给后续跟踪而不必卡住本 PR。
  • 治愈手段类别(重构套件的 spawn 模式或修改 vitest runner 配置)已被维护者分类明确划归 ci: the Windows lane is red — 59 tests across 10 files, unobserved since the merge queue stopped running #9481;复兴后的 lane 正在尽本职把它暴露出来。

关于选项 1 的一点说明:本 bot 无法创建后续跟踪 issue(此工作流中没有 GitHub 写权限)。若选择选项 1,后续 issue 需由维护者创建(或可应要求由 bot 在未来轮次起草其文本)。若维护者希望在本 PR 上做选项 2 或 3,请在评论中明确提出——本轮等待的正是这个请求;在此之前本 PR 不做任何改动。

验证

本轮未改动代码、未提交,因此不适用 build/typecheck/lint 门禁。收集的证据(只读,外加一次聚焦 vitest 探测):

  • git status / git log——工作树干净,head b66a4fa423 未变
  • 对三项已确认修复在 head 上的 grep/读取核实(文件与行号引用见上)
  • npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/qwen-autofix-workflow.test.js——复现 worker 超时签名:Tests 219 passed (219)Errors 1 error[vitest-worker]: Timeout calling "onTaskUpdate"),测试阶段 87.3 秒

Deferred non-Critical feedback

Critical-only mode is active: 5 change-producing rounds are complete. The workflow excluded the non-Critical feedback below from this round's actionable sections; the items remain open for human follow-up. Maintainer feedback is deferred only after its author has used 2 regular feedback batches in this window's Critical-only tail; authors at that budget, if any, are named below. (@qwen-code /retry starts a fresh counting window.)

中文说明

已进入仅处理 Critical 的模式:已完成 5 个产生改动的轮次。本轮可执行区域已排除下方非 Critical 反馈;这些条目保持开放,留待人工跟进。维护者反馈仅在其本人于本窗口 Critical-only 阶段已使用 2 批常规反馈预算后才会延后;达到预算的作者(如有)在下方点名。(评论 @qwen-code /retry 可开启新的计数窗口。)

Base-conflict check · 基分支冲突检查: no conflict with main. · 与 main 无冲突。


🧠 Handled by Qwen Code · model/模型 qwen3.8-max

@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Released in v0.22.2.

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

Labels

autofix/takeover Summon the autofix loop to manage this PR (remove to release; needs triage+)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants