Skip to content

fix(release): cap Vitest workers in the quality_scripts lane (#10755) - #10760

Merged
wenshao merged 3 commits into
mainfrom
autofix/issue-10755
Sep 2, 2026
Merged

fix(release): cap Vitest workers in the quality_scripts lane (#10755)#10760
wenshao merged 3 commits into
mainfrom
autofix/issue-10755

Conversation

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator

What this PR does

Bounds the Vitest worker count in the release workflow's scripts-test lane the same way every sibling lane already does on the shared ECS pool, and pins the bound in the release contract test for both test lanes. It also stabilizes one test in the scripts suite whose per-attempt kill timeout raced child-process spawn latency under pool load: the bound moves from 400 ms to 2 s, which stays far below the simulated 60 s stall, so the timeout-and-retry behavior under test is unchanged.

Why it's needed

The 2026-09-02 nightly release failed on the quality aggregate (issue #10755). The failing component is the scripts-test lane that the release-sharding split (#10619) created the day before: it runs the scripts suite with Vitest's default worker count — one worker per host core. On the shared pool runners (64 cores, load average ~120 with concurrent jobs), the suite's tests instantiate repo-wide ESLint engines and replay extracted workflow bash through spawned subprocesses; ~64 parallel workers each spawning heavy children pushed 5–8 tests per run past the suite's 30 s timeout, with a different victim set every run. Reproduced twice on the exact failing SHA: 30 s timeouts across the ESLint boundary guards and workflow replays, plus an attempt-count shortfall in the upload-stall test. Every failing test passes when run without parallel contention. The workspace-test lane and the main CI gate already apply this exact tunable bound on ECS (#10667); the new lane simply never inherited it.

Reviewer Test Plan

How to verify

Run the scripts suite the way the fixed lane does on an ECS-shaped environment (a loaded multi-core host makes the difference visible): env VITEST_MAX_THREADS=4 VITEST_MIN_THREADS=1 VITEST_MAX_FORKS=4 VITEST_MIN_FORKS=1 npm run test:scripts — expected: all 73 test files pass (~5 min). Without the four variables on the same host, expect sporadic Test timed out in 30000ms failures across the ESLint and workflow-replay tests. Confirm the contract witness by deleting the new env: block from the Run Script Tests step in the release workflow: npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/package-scripts.test.js -t "wires release quality checks" must fail, and restoring the block must turn it green. The upload-stall test (scripts/tests/upload-aliyun-oss-assets.test.js) should pass with a ~12 s runtime.

Evidence (Before & After)

N/A (CI-workflow change, no user-visible behavior)

Tested on

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

Environment (optional)

Self-hosted Linux runner from the same pool class as the release lanes (64 cores, load average ~120 during verification); unit-test-level verification only, no sandbox.

Risk & Scope

  • Main risk or tradeoff: the scripts lane runs with fewer parallel workers on ECS runners, trading wall time for determinism; the capped run completed in ~5 minutes against the lane's 30-minute timeout, and total CPU work actually drops under less contention. Non-ECS runners are unaffected (the expressions evaluate to empty and Vitest keeps its defaults).
  • Not validated / out of scope: other workflows that run npm run test:ci (desktop/SDK/vscode-companion release pipelines) were not touched; no evidence they fail. The absolute proof is the next nightly release run.
  • Breaking changes / migration notes: none; the bound reuses the existing QWEN_CI_VITEST_MAX_WORKERS repository variable.

Linked Issues

Fixes #10755

中文说明

本 PR 做了什么

以与同级分支任务在共享 ECS 资源池上完全相同的方式,为发布工作流的脚本测试分支设置 Vitest worker 上限,并在发布契约测试中将该上限同时固定在两个测试分支上。此外还稳定了脚本套件中的一个测试:它的单次尝试 kill 超时与资源池负载下的子进程派生延迟存在竞态,上限从 400 毫秒调整为 2 秒,仍远低于模拟的 60 秒卡死,因此被测试的超时-重试行为保持不变。

为什么需要

2026-09-02 的夜间发布在 quality 汇总上失败(issue #10755)。失败的组件是脚本测试分支——它由一天前的发布分片拆分(#10619)新建,以 Vitest 的默认 worker 数(每主机核心一个 worker)运行脚本套件。在共享资源池 runner 上(64 核,因并发任务负载均值约 120),该套件的测试会实例化全仓库 ESLint 引擎,并通过派生子进程回放从工作流中逐字提取的 bash;约 64 个并行 worker 各自派生重量级子进程,导致每次运行有 5–8 个测试突破套件的 30 秒超时,且每次中招的测试集合都不同。已在完全相同的失败 SHA 上复现两次:ESLint 边界守护与工作流回放测试出现 30 秒超时,外加 upload-stall 测试的尝试次数不足。所有失败测试在无并行争用时都能通过。workspace 测试分支和主 CI 门禁早已在 ECS 上应用了这个完全相同的可调节上限(#10667);新分支只是从未继承它。

审阅者测试计划

如何验证

按修复后分支的方式运行脚本套件(在负载较高的多核主机上差异最明显):env VITEST_MAX_THREADS=4 VITEST_MIN_THREADS=1 VITEST_MAX_FORKS=4 VITEST_MIN_FORKS=1 npm run test:scripts — 预期:全部 73 个测试文件通过(约 5 分钟)。在同一主机上不设这四个变量运行,预期出现零散的 Test timed out in 30000ms 失败,分布在 ESLint 与工作流回放测试中。通过删除发布工作流 Run Script Tests 步骤中新增的 env: 块来验证契约见证:npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/package-scripts.test.js -t "wires release quality checks" 必须失败,恢复该块后必须变绿。upload-stall 测试(scripts/tests/upload-aliyun-oss-assets.test.js)应通过,耗时约 12 秒。

前后对比证据

N/A(CI 工作流改动,无用户可见行为)

测试环境

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

环境(可选)

与发布分支同资源池类别的自托管 Linux runner(64 核,验证期间负载均值约 120);仅单元测试级别的验证,未使用沙箱。

风险与范围

  • 主要风险或权衡:脚本分支在 ECS runner 上以更少的并行 worker 运行,以耗时换确定性;设上限后的运行约 5 分钟完成,远低于分支的 30 分钟超时,且争用减少后总 CPU 工作量反而下降。非 ECS runner 不受影响(表达式求值为空,Vitest 保持默认值)。
  • 未验证 / 超出范围:其他运行 npm run test:ci 的工作流(桌面/SDK/VS Code companion 发布流水线)未改动;没有证据表明它们会失败。最终验证是下一次夜间发布运行。
  • 破坏性变更 / 迁移说明:无;该上限复用现有的 QWEN_CI_VITEST_MAX_WORKERS 仓库变量。

关联 Issue

Fixes #10755

The 2026-09-02 nightly failed on the quality aggregate because the
quality_scripts lane (added by the release-sharding split, #10619) ran
the scripts suite with vitest's default worker count — one worker per
host core — on the shared ECS pool. On a 64-core runner executing
several pool jobs at once, the suite's ESLint instances and bash
replays spawned dozens of heavy subprocesses in parallel and 5-8 tests
per run blew through the 30s test timeout non-deterministically
(reproduced twice on the failing SHA: 30s timeouts across the ESLint
boundary guards and workflow replays, plus a spawn-latency race in the
upload-stall test). The sibling workspace_tests lane and the main CI
gate already bound their vitest workers on ECS (#10667); the new lane
never inherited the bound.

Apply the same tunable per-process bound to the lane and pin it in the
release contract test next to the workspace lane's copy. Also deflake
the upload-stall test: its 400ms kill bound raced child-spawn latency
under pool load, losing attempt log lines and reading 1 or 2 attempts
instead of 3; the bound is now 2s — still far under the shim's 60s
hang, so the kill semantics are unchanged, and the worst-case run stays
inside the test's own 30s budget.
@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator Author

Autofix report for #10755 — Release Failed for v0.22.3-nightly.20260902.77d41f48d3

Root cause

The nightly release failed on the quality aggregate because its quality_scripts lane failed. That lane was created one day earlier by the release-sharding split (#10619) and runs npm run test:scripts without the Vitest worker bound that every sibling lane already applies on the shared ECS pool (#10667 added the bound to the workspace-tests lane; the main CI test lane sets the same four variables).

Vitest's default worker count equals the host core count. On the shared pool machines (64 cores here, load average ~120 from concurrent jobs), the scripts suite — whose tests instantiate repo-wide ESLint engines and replay extracted workflow bash via spawned subprocesses — launched ~64 parallel workers, each spawning heavy children. Under that contention, 5–8 tests per run blow through the suite's 30s test timeout, and the victim set changes every run.

Reproduction (on the exact failing SHA 77d41f4)

  • npm run test:scripts, uncapped, run twice: 5 failed files (run 1) and 8 failed tests in 7 files (run 2). Failures were Error: Test timed out in 30000ms across the ESLint boundary-guard tests and the behavioral workflow replays, plus an attempt-count shortfall in the upload-stall test (got 1 attempt of 3 in run 1, 2 of 3 in run 2).
  • Every failing test passes in isolation (no parallel contention), confirming load-induced flakiness rather than a logic regression.
  • Timeline: the sharding PR landed 2026-09-01 13:11 UTC; the 2026-09-02 nightly was the first run containing the uncapped lane.

Fix

  1. Applied the same tunable per-process bound (VITEST_MAX_THREADS / VITEST_MIN_THREADS / VITEST_MAX_FORKS / VITEST_MIN_FORKS, gated on ecs-qwen-* runner names via the existing QWEN_CI_VITEST_MAX_WORKERS variable) to the Run Script Tests step of the quality_scripts job — byte-identical to the bound its sibling Run Workspace Tests step and the main CI lane already carry. Non-ECS runners keep vitest defaults.
  2. Extended the release contract test to pin the bound on both test lanes (mutation probe verified: removing the env block fails the contract test; restoring it goes green).
  3. Deflaked the upload-stall test: its 400 ms per-attempt kill bound raced child-spawn latency under pool load — when SIGKILL landed before the shim's first log write, the attempt count read short even though all three attempts ran. The bound is now 2 s, still far below the shim's 60 s hang, so the stall-kill semantics are unchanged and the test's worst-case wall (~14 s) stays inside its own 30 s budget.

The release.yml growth is 513 bytes, inside the size-ratchet allowance, so .size-baseline needs no bump (the ratchet test itself ran green in the suite).

Verification

  • npm run test:scripts (baseline reproduction, uncapped) — failed as the release did: 5 failed files (run 1), 8 failed tests in 7 files (run 2)
  • npx vitest run --config ./scripts/tests/vitest.config.ts <each failing file> in isolation — passed (all 8 failing tests green without contention)
  • env VITEST_MAX_THREADS=4 VITEST_MIN_THREADS=1 VITEST_MAX_FORKS=4 VITEST_MIN_FORKS=1 npm run test:scripts (fixed lane simulation) — passed: 73/73 test files, 2057 passed, 16 skipped, 0 failed, wall ~5 min (lane timeout is 30 min)
  • npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/package-scripts.test.jspassed: 20/20
  • Mutation probe: removed the new env block from release.yml → contract test failed (1 failed); restored → passed
  • npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/upload-aliyun-oss-assets.test.jspassed: 16/16 (stall test 12.0 s)
  • npx prettier --experimental-cli --check on the three changed files — passed
  • npm run lint:cipassed (exit 0)
  • npm run typecheckpassed (exit 0)
  • npm run buildpassed (exit 0)
  • npm run generate:settings-schema — not applicable (no settings source changed)
  • Integration tests after npm run bundle — not applicable (the change only affects a GitHub Actions workflow lane; nothing exercised through the bundled CLI or integration harness)
中文说明

#10755 自动修复报告 — v0.22.3-nightly.20260902.77d41f48d3 发布失败

根因

夜间发布在 quality 汇总任务上失败,原因是其 quality_scripts 分支任务失败。该分支任务是一天前发布分片拆分(#10619)新建的,它运行 npm run test:scripts没有设置 Vitest worker 上限,而同级的所有分支任务在共享 ECS 资源池上都已应用该上限(#10667 为 workspace 测试分支添加了该上限;主 CI 测试分支也设置了相同的四个变量)。

Vitest 的默认 worker 数等于主机核心数。在共享资源池机器上(本机 64 核,因并发任务负载均值约 120),脚本测试套件中的测试会实例化全仓库 ESLint 引擎、并通过派生子进程回放从工作流中逐字提取的 bash 片段——套件以约 64 个并行 worker 运行,每个 worker 又派生重量级子进程。在这种资源争用下,每次运行有 5–8 个测试突破套件的 30 秒测试超时,且每次运行中招的测试集合都不同。

复现(在完全相同的失败 SHA 77d41f4 上)

  • npm run test:scripts(无上限)运行两次:5 个文件失败(第 1 次)和 7 个文件中 8 个测试失败(第 2 次)。失败均为 ESLint 边界守护测试和工作流行为回放测试上的 Error: Test timed out in 30000ms,外加 upload-stall 测试的尝试次数不足(第 1 次运行 3 次中只记录到 1 次,第 2 次记录到 2 次)。
  • 所有失败测试在单独运行时全部通过(无并行争用),确认是负载导致的 flaky,而非逻辑回归。
  • 时间线:分片 PR 于 2026-09-01 13:11 UTC 合入;2026-09-02 的夜间发布是首个包含这个未设上限分支任务的运行。

修复

  1. quality_scripts 任务的 Run Script Tests 步骤应用了相同的可调节单进程上限(VITEST_MAX_THREADS / VITEST_MIN_THREADS / VITEST_MAX_FORKS / VITEST_MIN_FORKS,通过现有的 QWEN_CI_VITEST_MAX_WORKERS 变量、以 ecs-qwen-* runner 名称为条件),内容与同级 Run Workspace Tests 步骤和主 CI 分支已有的上限逐字节一致。非 ECS runner 保持 vitest 默认值。
  2. 扩展发布契约测试,将上限同时固定在两个测试分支上(变异探针已验证:移除 env 块会使契约测试失败;恢复后变绿)。
  3. 消除 upload-stall 测试的 flaky:其 400 毫秒的单次尝试 kill 上限与资源池负载下的子进程派生延迟存在竞态——当 SIGKILL 先于 shim 写入第一条日志落下时,尝试次数会偏少,即使三次尝试实际都执行了。上限现调整为 2 秒,仍远低于 shim 的 60 秒挂起,因此卡死-kill 语义不变,测试最坏耗时(约 14 秒)也在其自身 30 秒预算之内。

release.yml 增长 513 字节,在 size-ratchet 允许范围内,因此无需更新 .size-baseline(ratchet 测试本身已在套件中运行通过)。

验证

  • npm run test:scripts(基线复现,无上限)— 按发布失败的方式失败:5 个文件失败(第 1 次),7 个文件中 8 个测试失败(第 2 次)
  • npx vitest run --config ./scripts/tests/vitest.config.ts <各失败文件> 单独运行 — 通过(无争用时 8 个失败测试全部变绿)
  • env VITEST_MAX_THREADS=4 VITEST_MIN_THREADS=1 VITEST_MAX_FORKS=4 VITEST_MIN_FORKS=1 npm run test:scripts(修复后分支的模拟)— 通过:73/73 个测试文件,2057 通过,16 跳过,0 失败,耗时约 5 分钟(分支超时为 30 分钟)
  • npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/package-scripts.test.js通过:20/20
  • 变异探针:从 release.yml 移除新 env 块 → 契约测试失败(1 个失败);恢复 → 通过
  • npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/upload-aliyun-oss-assets.test.js通过:16/16(stall 测试 12.0 秒)
  • 对三个改动文件运行 npx prettier --experimental-cli --check通过
  • npm run lint:ci通过(exit 0)
  • npm run typecheck通过(exit 0)
  • npm run build通过(exit 0)
  • npm run generate:settings-schema — 不适用(未改动任何 settings 源)
  • npm run bundle 后的集成测试 — 不适用(改动只影响 GitHub Actions 工作流分支,没有任何经由打包 CLI 或集成测试框架执行的行为)

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

@qwen-code-ci-bot

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

Copy link
Copy Markdown
Collaborator

Qwen Triage finishedview run. See the stage comments in this thread for the result.

Qwen Triage 已完成 —— 查看运行。结果见本线程中的各阶段评论。

@qwen-code-ci-bot

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

Copy link
Copy Markdown
Collaborator

Re-run after the branch merged main (head moved from bc66afdeaf2a to 5b10cc2c3b).

Template looks good ✓

Problem: observed, not theoretical. The 2026-09-02 nightly release failed on the quality aggregate (#10755, still open), and the autofix report documents two reproductions on the exact failing SHA — including an attempt-count shortfall in the upload-stall test (1-of-3 and 2-of-3), which is the part this PR still carries.

Context change since the first pass: the headline fix — capping Vitest workers on the quality_scripts release lane — landed on main through #10765 while this PR was in review. After this branch merged main, the remaining diff is a single test stabilization (scripts/tests/upload-aliyun-oss-assets.test.js, +7/−1): the per-attempt kill bound moves 400 ms → 2 s.

Direction: aligned — release-lane reliability. Test-only change, zero production impact.

Size: not applicable (no core paths; one test file).

Approach: minimal, and the right minimal. The kill bound runs from spawn (spawnSync timeout), so under the documented pool load a 400 ms SIGKILL can land before the shim's first log write, making the attempt count read short even though all three attempts ran. Widening the bound keeps the stall-kill semantics under test intact; the alternatives (a readiness signal from the shim, relaxing the count assertion) would change or weaken what the test asserts. One hygiene note (non-blocking): the PR title and body still describe the full original fix that #10765 absorbed — worth rescoping to the remaining delta before merge so the merge commit isn't misleading.

Risk: no elevated risk signals (no high-risk paths touched).

Moving on to code review. 🔍

中文说明

分支合并 main 后的重新运行(head 从 bc66afdeaf2a 变为 5b10cc2c3b)。

模板完整 ✓

问题:已观测到,非理论性问题。2026-09-02 的夜间发布在 quality 汇总任务上失败(#10755,仍 open),autofix 报告记录了在失败 SHA 上的两次复现——包括 upload-stall 测试的尝试次数不足(3 次中只记录到 1 次和 2 次),这正是本 PR 目前保留的部分。

与首轮评审相比的关键变化: 重头修复——给 quality_scripts 发布分支设置 Vitest worker 上限——已在本 PR 评审期间通过 #10765 合入 main。本分支合并 main 后,剩余 diff 只有一个测试稳定化改动(scripts/tests/upload-aliyun-oss-assets.test.js,+7/−1):单次尝试的 kill 上限从 400 毫秒提高到 2 秒。

方向:对齐——发布分支可靠性。纯测试改动,对生产行为零影响。

规模:不适用(未触及核心路径;单个测试文件)。

方案:最小化,且是正确的最小化。kill 计时从 spawn 开始(spawnSynctimeout),因此在已记录的资源池负载下,400 毫秒的 SIGKILL 可能先于 shim 的第一条日志写入落下,导致尝试次数偏少——即使三次尝试实际都执行了。提高上限保持了被测的卡死-kill 语义;替代方案(shim 就绪信号、放宽次数断言)要么改变、要么削弱测试所断言的内容。一个卫生提示(不阻塞):PR 标题与正文仍描述已被 #10765 吸收的完整原始修复——合并前建议重新界定为剩余增量,避免 merge commit 误导。

风险:无升级风险信号(未触及高风险路径)。

进入代码审查 🔍

Qwen Code · qwen3.8-max

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

@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.

Reviewed. Suggestions are inline.

Not explored to full depth (tool budget reached): "agent 1d": none — no check was cut short..

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

中文说明

已审查。 建议见行内评论。

未探索到全部深度(达到工具调用预算):"agent 1d"none — no check was cut short.

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

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

Comment thread .github/workflows/release.yml
@qqqys

qqqys commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

E2E review report (tmux-based, head bc66afd) — no Critical found.

Static verification

  • The new env block on the quality_scripts lane's Run Script Tests step is byte-identical to the main CI gate's block (.github/workflows/ci.yml:657-660) and to the sibling workspace_tests lane in the same file (release.yml:505-508): same four variables, same startsWith(runner.name, 'ecs-qwen-') guard, same vars.QWEN_CI_VITEST_MAX_WORKERS || '4' default. Off-ECS runners get '', and vitest's resolver gates on truthiness (if (process.env.VITEST_MAX_THREADS) in the installed vitest dist), so the empty string is a no-op there — no NaN risk.
  • Vitest honours all four env vars (verified in node_modules/vitest dist: they set poolOptions.{threads,vmThreads}.{maxThreads,minThreads} and poolOptions.forks.{maxForks,minForks}).
  • The quality aggregate needs: quality_scripts (release.yml:552), so the red lane really did block the nightly release as the body claims.
  • upload-aliyun-oss-assets.test.js: 400 ms → 2 s keeps the bound far below the shim's 60 s hang, so the kill-turns-stall-into-failed-attempt behaviour under test is unchanged; the test carries an explicit 30 s timeout, and 3 attempts × 2 s + backoff fits comfortably.

Live run (scratch tree of the PR head + symlinked node_modules, vitest in tmux)

  • At head: 36/36 pass (package-scripts.test.js 20/20 + upload-aliyun-oss-assets.test.js 16/16), including the stall test (3 attempts, ~12 s).
  • Mutation A/B: removed the new env block from the scratch release.ymlexactly the wires release quality checks to fast explicit validation steps pin test fails at the new cappedStep assertion; the other 19 pass. The contract test genuinely guards the cap. Restored afterwards.

Caveat: the release workflow runs on tag/schedule events, not on this PR, so the affected lane cannot be CI-exercised here — the local suite + mutation evidence above is what covers the change. PR CI at head: all completed lanes green; Test (ubuntu-latest) still pending at post time.

Not approving: zero gate approvals at head (only ci-bot COMMENTED 03:23Z).

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 84.81% 84.81% 90.59% 84.75%
Core 89.04% 89.04% 90.7% 87.49%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   84.81 |    84.75 |   90.59 |   84.81 |                   
 src               |    86.6 |    82.79 |   88.88 |    86.6 |                   
  cli.ts           |   95.94 |    88.38 |     100 |   95.94 | ...12-713,717-718 
  llm.tsx          |   74.19 |    77.51 |   80.76 |   74.19 | ...1426-1430,1557 
  ...ractiveCli.ts |   89.27 |    83.13 |   89.06 |   89.27 | ...3157,3163,3229 
  ...liCommands.ts |   89.71 |    84.17 |   81.81 |   89.71 | ...31-633,650,757 
  ...ActiveAuth.ts |     100 |     87.5 |     100 |     100 | 66-80             
 ...cp-integration |   76.13 |    79.02 |   94.03 |   76.13 |                   
  acpAgent.ts      |   75.19 |    78.62 |    93.3 |   75.19 | ...18,14241-14242 
  ...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 |     87.5 |     100 |     100 | 17,28             
  generation.ts    |    97.1 |    81.25 |     100 |    97.1 | 109,112           
  ...figuration.ts |     100 |     95.6 |     100 |     100 | 121,196,242,259   
  ...DirContext.ts |     100 |      100 |     100 |     100 |                   
  ...ersistence.ts |   94.95 |    92.24 |     100 |   94.95 | ...13-118,227-228 
  ...management.ts |   76.99 |    71.56 |     100 |   76.99 | ...20-524,533-537 
  ...e-download.ts |    64.7 |    62.24 |    87.5 |    64.7 | ...08-609,615-619 
 ...tegration/live |   97.53 |    88.23 |   92.85 |   97.53 |                   
  ...en-context.ts |   95.89 |    82.85 |     100 |   95.89 | ...,72-73,105-106 
  ...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.04 |    86.58 |    95.7 |   91.04 |                   
  Session.ts       |   90.42 |    85.65 |   95.09 |   90.42 | ...04,14231-14235 
  ...entTracker.ts |   96.88 |    89.36 |      90 |   96.88 | 139-145,224       
  ...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.19 |     87.8 |     100 |   89.19 | ...85-304,363-365 
  ...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 |   95.85 |    71.11 |     100 |   95.85 | 68-74,190-191     
  ...on-tracker.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...ssion/emitters |   95.68 |    91.97 |   97.14 |   95.68 |                   
  ...ageEmitter.ts |   95.36 |    92.42 |     100 |   95.36 | ...16,129-130,223 
  PlanEmitter.ts   |     100 |    85.71 |     100 |     100 | 68,70             
  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.65 |    80.81 |   94.01 |   86.65 |                   
  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.52 |    78.91 |   94.44 |   88.52 | ...1305,1395-1397 
  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.45 |    78.26 |   65.62 |   90.45 |                   
  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.94 |      100 |      50 |   98.94 | 106               
  serve.ts         |   89.06 |    75.72 |     100 |   89.06 | ...27-930,942,953 
  sessions.ts      |     100 |      100 |      50 |     100 |                   
  update.ts        |   98.13 |    94.44 |   66.66 |   98.13 | 82-83             
 ...mmands/channel |   89.49 |    88.73 |   90.73 |   89.49 |                   
  channel-cwd.ts   |     100 |      100 |     100 |     100 |                   
  ...l-registry.ts |   94.78 |    94.59 |      90 |   94.78 | ...32-335,380-383 
  ...entry-path.ts |      75 |       50 |     100 |      75 | 8-9               
  config-utils.ts  |   96.91 |    96.27 |     100 |   96.91 | ...60-265,323-326 
  configure.ts     |    14.7 |      100 |       0 |    14.7 | 18-21,23-84       
  daemon-worker.ts |   93.72 |    85.76 |   94.33 |   93.72 | ...1305,1312-1313 
  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         |   87.75 |    83.63 |      88 |   87.75 | ...97,603-606,618 
  ...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  |   91.19 |    88.76 |   85.71 |   91.19 |                   
  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     |   85.54 |    86.76 |    90.9 |   85.54 | 45-58,337-359     
  remove.ts        |     100 |       80 |     100 |     100 | 21-25             
 ...ommands/review |   92.08 |    90.61 |   93.59 |   92.08 |                   
  ab-drive.ts      |   85.22 |    90.47 |   94.11 |   85.22 | ...50-926,969-972 
  agent-prompt.ts  |   94.89 |    93.01 |   97.95 |   94.89 | ...3296,3631-3711 
  base-tree.ts     |   77.02 |    80.76 |   77.77 |   77.02 | ...63-384,386-399 
  capture-local.ts |   94.79 |    96.81 |   94.11 |   94.79 | ...1192,1412-1450 
  ...k-coverage.ts |   50.71 |       35 |   66.66 |   50.71 | ...40-245,279-289 
  cleanup.ts       |   92.34 |     89.5 |    90.9 |   92.34 | ...1107,1109-1110 
  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.38 |    94.08 |    98.8 |   97.38 | ...7376-7420,7691 
  cost-ledger.ts   |   94.58 |     94.4 |   81.25 |   94.58 | ...53-654,694-704 
  ...candidates.ts |   93.12 |    93.95 |   84.61 |   93.12 | ...49-660,662-674 
  drive.ts         |   97.12 |    89.85 |     100 |   97.12 | ...83-985,990-992 
  emit-workflow.ts |   90.57 |     93.1 |   83.33 |   90.57 | 154,176,285-295   
  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.37 |    92.15 |     100 |   97.37 | ...1592,1806-1811 
  findings.ts      |    96.3 |    93.68 |     100 |    96.3 | ...1418,1427-1428 
  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.48 |    95.74 |     100 |   99.48 | 665,990,1046,1082 
  plan-diff.ts     |   71.42 |      100 |   66.66 |   71.42 | 162-197           
  pr-context.ts    |   96.22 |    88.86 |     100 |   96.22 | ...2580,2681-2697 
  presubmit.ts     |   94.42 |    90.38 |   94.11 |   94.42 | ...1240,1275-1306 
  ...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 
  revert-hunk.ts   |   91.48 |    87.94 |     100 |   91.48 | ...1189,1236-1239 
  run.ts           |   84.65 |    87.34 |   95.45 |   84.65 | ...43,859-913,927 
  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   |   81.23 |    80.45 |   88.88 |   81.23 | ...82-796,798-820 
  submit.ts        |   94.21 |       89 |   94.44 |   94.21 | ...1710,1738-1775 
  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 
  ...low-script.ts |     100 |      100 |     100 |     100 |                   
 ...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.37 |    94.75 |   98.71 |   97.37 |                   
  agent-briefs.ts  |   99.08 |      100 |      50 |   99.08 | 841-842           
  ...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   |     100 |    97.94 |    92.3 |     100 | 52,515,620,716    
  coverage.ts      |   98.97 |    95.12 |     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     |   99.29 |    95.77 |     100 |   99.29 | 295-296,319       
  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.92 |    94.11 |     100 |   96.92 | 264-265,302-303   
  heavy.ts         |     100 |      100 |     100 |     100 |                   
  import-graph.ts  |   96.68 |     95.6 |     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 |    99.47 |     100 |     100 | 884               
  local-anchor.ts  |   94.53 |    89.41 |     100 |   94.53 | ...36,669-670,837 
  local-diff.ts    |   86.77 |    94.28 |     100 |   86.77 | ...54-564,566-574 
  ...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.24 |    95.31 |     100 |   98.24 | ...,832,1213,1230 
  path-rules.ts    |     100 |      100 |     100 |     100 |                   
  paths.ts         |    95.6 |    88.67 |     100 |    95.6 | 40-41,168-173     
  prebuild.ts      |     100 |    96.15 |     100 |     100 | 248               
  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.09 |     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 | 46                
  ...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.38 |     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.53 |    90.57 |   95.73 |   94.53 |                   
  ...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        |   88.92 |    91.37 |   88.63 |   88.92 | ...2485,2487-2495 
  ...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.63 |    92.42 |   95.23 |   94.63 | ...24-625,693-694 
  ...le-watcher.ts |   90.86 |    83.65 |   95.83 |   90.86 | ...23-325,370,418 
  ...resh-state.ts |   95.65 |    97.36 |     100 |   95.65 | 137-142           
  ...ime-reload.ts |     100 |    69.69 |     100 |     100 | ...12-113,122-123 
  hot-reload.ts    |   98.91 |    84.61 |     100 |   98.91 | 332-333           
  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.87 |     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.93 |    93.16 |   91.17 |   91.93 | ...1134,1136-1137 
  ...ingsSchema.ts |     100 |      100 |     100 |     100 |                   
  settingsUtils.ts |   81.12 |     89.2 |   85.18 |   81.12 | ...03-621,628-636 
  ...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 
  ...el-options.ts |     100 |      100 |     100 |     100 |                   
  ...precedence.ts |   98.79 |     92.3 |     100 |   98.79 | 62                
  ...tedFolders.ts |   92.53 |    93.47 |     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.57 |    66.48 |   73.68 |   57.57 |                   
  ...Controller.ts |    42.4 |      100 |   83.33 |    42.4 | 101-105,140-223   
  ...Controller.ts |       0 |        0 |       0 |       0 | 1-56              
  ...Controller.ts |   70.23 |    63.33 |   91.66 |   70.23 | ...19-628,643-648 
  ...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.11 |   95.34 |   98.18 |                   
  ...putAdapter.ts |   98.07 |    93.21 |   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/peerMessaging |   93.73 |    89.21 |   96.55 |   93.73 |                   
  ...ngContext.tsx |     100 |      100 |     100 |     100 |                   
  env.ts           |     100 |      100 |     100 |     100 |                   
  ...-messaging.ts |   93.51 |       89 |   96.29 |   93.51 | ...08,550,592-597 
 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.72 |    95.17 |     100 |   99.72 |                   
  ...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 |                   
  ...d-task-run.ts |     100 |       70 |     100 |     100 | 57,71             
  ...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.57 |     100 |     100 | 53,93-94,172,192  
  ...ls-mapping.ts |     100 |    96.15 |     100 |     100 | 26                
 src/serve         |   87.76 |     85.5 |   91.39 |   87.76 |                   
  ...extra-args.ts |     100 |      100 |     100 |     100 |                   
  ...tp-enabled.ts |     100 |      100 |     100 |     100 |                   
  ...ion-bridge.ts |     100 |      100 |     100 |     100 |                   
  auth.ts          |   96.19 |    93.44 |     100 |   96.19 | ...47-448,451-453 
  ...em-adapter.ts |     100 |      100 |     100 |     100 |                   
  capabilities.ts  |     100 |    98.33 |     100 |     100 | 774               
  ...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.61 |    94.37 |   96.55 |   89.61 | ...64-276,528-531 
  ...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.32 |    85.33 |     100 |   87.32 | ...14,820-824,842 
  ...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 |   93.24 |    85.42 |    97.4 |   93.24 | ...1765,1819-1823 
  ...e-grouping.ts |     100 |    94.28 |     100 |     100 | 71,137            
  core-runtime.ts  |     100 |      100 |     100 |     100 |                   
  ...ub-session.ts |   91.01 |    81.25 |   94.73 |   91.01 | ...1120,1141-1146 
  ...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.7 |    91.96 |     100 |    98.7 | ...1593,1595-1596 
  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.4 |       82 |   95.45 |    91.4 | ...47-556,634-635 
  ...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 
  ...-addresses.ts |     100 |     91.3 |     100 |     100 | 52,72             
  ...-path-open.ts |   96.12 |       97 |   93.33 |   96.12 | 114-123           
  ...back-binds.ts |     100 |      100 |     100 |     100 |                   
  ...-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 |    83.33 |     100 |     100 | 58-60,65,81       
  ...ory-picker.ts |    90.9 |    91.66 |      75 |    90.9 | 32,55-64          
  ...-with-auth.ts |     100 |      100 |     100 |     100 |                   
  ...ate-blocks.ts |   99.03 |    94.73 |     100 |   99.03 | 133               
  ...sion-audit.ts |     100 |      100 |   93.33 |     100 |                   
  ...nal-ledger.ts |    94.9 |    84.94 |     100 |    94.9 | ...81,302,361-362 
  rate-limit.ts    |   92.68 |    88.29 |     100 |   92.68 | ...89-291,303-305 
  ...qwen-serve.ts |   85.08 |    81.91 |   78.57 |   85.08 | ...9640,9658-9662 
  ...tup-errors.ts |     100 |      100 |     100 |     100 |                   
  sandbox.ts       |   47.11 |    63.01 |   76.92 |   47.11 | ...1061,1073-1096 
  ...-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        |   89.64 |    91.54 |   74.63 |   89.64 | ...3424,3455-3456 
  ...ments-root.ts |     100 |      100 |     100 |     100 |                   
  ...-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.33 |    86.15 |     100 |   93.33 | ...90-293,336-339 
  ...ssion-gate.ts |   98.48 |    94.44 |     100 |   98.48 | 70                
  ...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.65 |    80.18 |     100 |   98.65 | 111,139,193,196   
  ...tion-store.ts |    89.9 |    88.88 |   92.59 |    89.9 | ...03-412,423-426 
  ...e-registry.ts |   94.09 |    90.57 |     100 |   94.09 | ...93-594,601-602 
  ...e-remember.ts |   98.31 |    93.33 |     100 |   98.31 | ...47,351-356,397 
  ...te-runtime.ts |   89.85 |    90.69 |     100 |   89.85 | ...06-207,275-296 
  ...oordinator.ts |   98.27 |    96.87 |     100 |   98.27 | 147-148           
  ...me-storage.ts |     100 |      100 |     100 |     100 |                   
  ...visibility.ts |     100 |      100 |     100 |     100 |                   
  ...management.ts |   72.91 |    73.04 |   96.29 |   72.91 | ...98-899,906-910 
  ...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.68 |    80.23 |   94.53 |   80.68 |                   
  ...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.18 |   98.52 |   93.03 | ...1624,1671-1682 
  dispatch.ts      |   76.01 |    76.98 |   93.44 |   76.01 | ...5826,5883-5889 
  index.ts         |   83.61 |     80.6 |   91.22 |   83.61 | ...2465,2551-2552 
  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 |   86.63 |    79.06 |   92.96 |   86.63 |                   
  ...e-activity.ts |     100 |      100 |     100 |     100 |                   
  ...ime-errors.ts |     100 |      100 |     100 |     100 |                   
  ...me-manager.ts |   97.88 |    94.91 |     100 |   97.88 | 64-65,92          
  ...-ownership.ts |   87.33 |    83.58 |   88.46 |   87.33 | ...57-558,601-602 
  ...-workspace.ts |   88.17 |    76.15 |     100 |   88.17 | ...52-554,568-572 
  ...on-journal.ts |   91.65 |    80.76 |     100 |   91.65 | ...44-745,751-753 
  ...on-service.ts |   84.02 |    75.91 |   88.54 |   84.02 | ...3082,3091-3093 
 src/serve/fs      |   87.77 |    82.37 |     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.21 |     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.88 |     100 |   88.02 | ...3027,3037-3038 
 src/serve/live    |   76.57 |    70.53 |    90.2 |   76.57 |                   
  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 |   63.83 |    82.35 |   80.76 |   63.83 | ...45-446,460-475 
  ...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 |   82.71 |    66.15 |   93.61 |   82.71 | ...1270,1283,1290 
  ...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 |    90.09 |      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 |      100 |     100 |     100 |                   
  service.ts       |    93.4 |       90 |     100 |    93.4 | ...20-222,313-315 
 src/serve/routes  |   86.69 |    82.24 |   95.96 |   86.69 |                   
  a2ui-action.ts   |   96.84 |     88.5 |    87.5 |   96.84 | ...70-272,309-311 
  capabilities.ts  |   98.96 |    95.12 |     100 |   98.96 | 102               
  ...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.42 |     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    |   96.03 |    87.87 |     100 |   96.03 | 81-84             
  ...uled-tasks.ts |   87.52 |    83.61 |   95.12 |   87.52 | ...2016,2061-2062 
  ...r-backfill.ts |   98.15 |    94.94 |     100 |   98.15 | ...,706,1011-1012 
  ...on-runtime.ts |   91.42 |       90 |     100 |   91.42 | 56-64             
  session.ts       |   86.73 |    83.38 |   94.61 |   86.73 | ...7474,7476-7477 
  sse-events.ts    |   87.15 |    85.09 |   94.44 |   87.15 | ...48-959,962,969 
  ...e-sessions.ts |   87.13 |    80.79 |     100 |   87.13 | ...90-492,495-500 
  terminal.ts      |   92.81 |    90.35 |     100 |   92.81 | ...10-313,332-335 
  usage-stats.ts   |     100 |    95.45 |     100 |     100 | 118               
  user-language.ts |   99.24 |    87.87 |     100 |   99.24 | 167               
  ...space-auth.ts |   84.74 |    75.29 |     100 |   84.74 | ...35,349,357-361 
  ...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.27 |    80.75 |      90 |   83.27 | ...1071,1076,1083 
  ...extensions.ts |   89.92 |    79.69 |   94.36 |   89.92 | ...2588,2633-2634 
  ...-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 |   77.42 |    72.78 |     100 |   77.42 | ...49-654,663-670 
  ...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 |   73.61 |       70 |     100 |   73.61 | ...28,230-236,241 
  ...local-open.ts |     100 |    93.75 |     100 |     100 | 54                
  ...management.ts |   87.41 |    84.31 |     100 |   87.41 | ...1847,1857-1862 
  ...cp-control.ts |    73.2 |    67.54 |   85.71 |    73.2 | ...27-633,644-645 
  ...ace-models.ts |   89.84 |    87.35 |     100 |   89.84 | ...27-332,336-338 
  ...ermissions.ts |    77.9 |    72.41 |     100 |    77.9 | ...69-277,298-316 
  ...ce-runtime.ts |     100 |    96.55 |     100 |     100 | 117               
  ...e-settings.ts |      79 |    78.49 |     100 |      79 | ...92-893,919-922 
  ...tup-github.ts |   77.97 |    70.58 |   84.21 |   77.97 | ...46-352,397-398 
  ...ace-skills.ts |   76.41 |    86.11 |     100 |   76.41 | ...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  |   93.77 |    91.67 |   96.69 |   93.77 |                   
  access-log.ts    |   98.73 |    97.26 |     100 |   98.73 | 119,196           
  ...-timestamp.ts |     100 |      100 |     100 |     100 |                   
  aone-mrs.ts      |   91.76 |    91.35 |   86.66 |   91.76 | ...35-247,293-294 
  ...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 |   89.67 |    82.69 |     100 |   89.67 | ...1007,1034-1043 
  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   |     100 |      100 |     100 |     100 |                   
  ...e-features.ts |   95.39 |     87.5 |     100 |   95.39 | 200-206           
  ...on-archive.ts |   92.46 |    90.49 |   97.61 |   92.46 | ...1150,1191-1192 
  ...ion-export.ts |   98.57 |    90.47 |     100 |   98.57 | 85                
  session-list.ts  |   97.44 |    93.87 |     100 |   97.44 | ...1236,1445-1449 
  ...pr-refresh.ts |   99.37 |    97.01 |     100 |   99.37 | 69-70             
  ...ry-context.ts |    87.5 |       50 |     100 |    87.5 | 49-50             
  telemetry.ts     |   99.18 |    97.65 |     100 |   99.18 | ...95,882,961-963 
 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 |    87.33 |   91.66 |      90 |                   
  index.ts         |   89.65 |    86.98 |   90.47 |   89.65 | ...1393,1407,1421 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/services      |   92.73 |     89.8 |   98.13 |   92.73 |                   
  ...mandLoader.ts |     100 |       95 |     100 |     100 | 108               
  ...killLoader.ts |   97.19 |    86.48 |     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.65 |   85.71 |   79.55 | ...48,178,245-246 
  ...mandLoader.ts |   97.95 |    93.44 |     100 |   97.95 | 186,193-194       
  ...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.77 |     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.03 |    88.57 |      95 |   93.03 |                   
  scheduler.ts     |   93.03 |    88.57 |      95 |   93.03 | ...70-372,424-428 
 ...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       |   89.28 |    84.03 |    90.9 |   89.28 |                   
  ...p-prefetch.ts |   98.09 |    94.23 |    87.5 |   98.09 | 50,209,225-226    
  ...reeStartup.ts |   81.51 |    76.11 |     100 |   81.51 | ...14,423,429-432 
 src/test-utils    |   94.62 |    77.41 |   81.81 |   94.62 |                   
  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            |   71.77 |    78.75 |   72.78 |   71.77 |                   
  App.tsx          |   33.33 |       75 |   33.33 |   33.33 | 32-86             
  AppContainer.tsx |   77.61 |    74.36 |   76.31 |   77.61 | ...4536,4652-4658 
  ...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 |   68.84 |    78.57 |   57.14 |   68.84 | ...65-467,497-502 
  ...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 |   89.28 |    69.04 |     100 |   89.28 | ...09-110,124-125 
  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       |   73.75 |    70.24 |   61.22 |   73.75 |                   
  AuthDialog.tsx   |   59.01 |     42.1 |   16.66 |   59.01 | ...25,332-354,358 
  ...nProgress.tsx |       0 |        0 |       0 |       0 | 1-64              
  ...etupSteps.tsx |   74.93 |    78.62 |   71.42 |   74.93 | ...92-902,918,921 
  useAuth.ts       |   94.83 |    75.67 |     100 |   94.83 | ...33-234,253-259 
  ...rSetupFlow.ts |   79.13 |     57.4 |     100 |   79.13 | ...01,424,431-437 
 src/ui/commands   |   84.78 |    84.63 |   91.73 |   84.78 |                   
  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.72 |     100 |   97.45 | 153-155           
  ...essCommand.ts |   86.91 |    66.66 |     100 |   86.91 | ...22-223,237-240 
  ...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 |   73.96 |    74.68 |   83.33 |   73.96 | ...76-609,620-621 
  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.95 |       80 |     100 |   80.95 | 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 | 95,146            
  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 |    58.5 |    74.07 |      80 |    58.5 | ...21-331,334-343 
  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.63 |    90.66 |     100 |   94.63 | ...25-226,253-263 
  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.28 |    86.29 |     100 |   86.28 | ...1112,1146-1151 
  ...le-command.ts |   87.36 |    85.71 |     100 |   87.36 | 44-49,96-101      
  ...tyle-utils.ts |   94.36 |    96.29 |     100 |   94.36 | 53-56             
  peers-command.ts |     100 |    94.59 |     100 |     100 | 59,72,226,231     
  ...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.31 |    81.81 |     100 |   78.31 | 37-52,73,92       
  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 |   74.26 |    80.43 |   79.45 |   74.26 |                   
  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.2 |    91.13 |     100 |    89.2 | ...92-294,308-310 
  ...ontroller.tsx |     100 |      100 |     100 |     100 |                   
  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.25 |      100 |       0 |   11.25 | 72-609            
  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 
  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.36 |    83.41 |      80 |   86.36 | ...2242,2263,2366 
  ...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.15 |   46.15 |   95.88 | ...20,523-527,530 
  MemoryDialog.tsx |   86.59 |    80.15 |     100 |   86.59 | ...34-435,485,553 
  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             
  ...yleDialog.tsx |     100 |      100 |     100 |     100 |                   
  ...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 |   91.34 |       70 |     100 |   91.34 | 48-51,63-66,78    
  ...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           
  ...ngSpinner.tsx |   67.85 |    85.71 |      50 |   67.85 | 33-50,71,78-79    
  ...dSelector.tsx |   92.79 |    82.65 |     100 |   92.79 | ...19-323,354-370 
  ...ionPicker.tsx |   84.02 |    74.19 |     100 |   84.02 | ...04,410,452-474 
  ...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 |      96 |    83.33 |     100 |      96 | 27                
  ...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 |   96.01 |    88.05 |     100 |   96.01 | ...29-130,295-297 
  ...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 |    61.5 |    75.57 |    62.5 |    61.5 |                   
  ...atContent.tsx |    9.09 |      100 |       0 |    9.09 | 54-275,281-283    
  ...tChatView.tsx |     100 |    81.81 |     100 |     100 | 82                
  ...tComposer.tsx |   78.35 |     64.7 |   66.66 |   78.35 | ...64,277,303-305 
  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.73 |    87.91 |   86.53 |   90.73 |                   
  ...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 |     100 |      100 |     100 |     100 |                   
  ...nMessages.tsx |   92.35 |    96.07 |   76.92 |   92.35 | ...59-361,364-367 
  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  |    95.1 |    90.11 |     100 |    95.1 | ...1096,1141-1143 
 ...ponents/shared |   86.36 |    82.29 |    86.6 |   86.36 |                   
  ...ctionList.tsx |     100 |      100 |      75 |     100 |                   
  ...tonSelect.tsx |     100 |      100 |     100 |     100 |                   
  ...rBoundary.tsx |     100 |      100 |     100 |     100 |                   
  MaxSizedBox.tsx  |   84.93 |    87.85 |      90 |   84.93 | ...82-583,700-701 
  MultiSelect.tsx  |   93.58 |       75 |     100 |   93.58 | ...43,199-201,211 
  ...tonSelect.tsx |     100 |      100 |     100 |     100 |                   
  ...ontroller.tsx |     100 |      100 |     100 |     100 |                   
  ...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.79 |      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.78 |   97.91 |   85.98 | ...2664,2762-2763 
  ...er-actions.ts |   73.93 |    67.22 |     100 |   73.93 | ...32-733,934-936 
 ...ponents/skills |    4.07 |      100 |       0 |    4.07 |                   
  ...gerDialog.tsx |    4.07 |      100 |       0 |    4.07 | 78-136,139-667    
 ...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 |   18.06 |     62.5 |    8.33 |   18.06 |                   
  ...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 |   72.41 |     62.5 |     100 |   72.41 | ...32-139,163-170 
  ...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 |   69.22 |    71.81 |   61.11 |   69.22 |                   
  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    |      75 |    81.81 |     100 |      75 | 39-42,59-67       
 src/ui/contexts   |    86.6 |     82.5 |   86.48 |    86.6 |                   
  ...ewContext.tsx |   91.66 |       90 |      75 |   91.66 | ...89-193,279-289 
  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 |   96.42 |    91.66 |     100 |   96.42 | 47-48             
  ...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 | 157-158           
  ...teContext.tsx |   86.66 |       50 |     100 |   86.66 | 238-239           
  ...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.57 |    84.47 |   88.91 |   86.57 |                   
  ...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.51 |    73.58 |     100 |   94.51 | ...97-298,303-304 
  ...dProcessor.ts |   86.86 |    71.95 |   83.33 |   86.86 | ...1541,1570-1574 
  ...rt-command.ts |     100 |      100 |     100 |     100 |                   
  ...sced-flush.ts |     100 |      100 |     100 |     100 |                   
  ...llm-stream.ts |   88.87 |    85.13 |   85.18 |   88.87 | ...6265,6267,6372 
  ...ng-enabled.ts |     100 |      100 |     100 |     100 |                   
  ...le-command.ts |   97.33 |    83.33 |     100 |   97.33 | 49-50             
  ...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.1 |    87.23 |     100 |    97.1 | ...26-327,337-338 
  ...dMigration.ts |    92.1 |    88.88 |     100 |    92.1 | 42-44             
  useCompletion.ts |   96.64 |    91.37 |     100 |   96.64 | ...37-238,242-243 
  ...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 |   39.47 |    41.93 |     100 |   39.47 | ...99-205,212-217 
  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.64 |     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       
  ...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    
  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 |    95.19 |     100 |     100 | ...53,289,360,375 
  ...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 |   89.16 |     82.6 |     100 |   89.16 | ...77,329-339,419 
  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.26 |     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 |    72.72 |     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/model      |   97.91 |    98.36 |     100 |   97.91 |                   
  ...ggregation.ts |     100 |      100 |     100 |     100 |                   
  ...ming-model.ts |   97.43 |    97.72 |     100 |   97.43 | 261-265           
 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/opentui    |   62.18 |    80.94 |   77.23 |   62.18 |                   
  ...plain-text.ts |     100 |    89.47 |     100 |     100 | 73,134            
  ...een-reader.ts |     100 |    88.57 |     100 |     100 | 79-83,198,211     
  ...t-tool-run.ts |   97.26 |     62.5 |   66.66 |   97.26 | 116,130           
  clipboard.ts     |     100 |    88.88 |     100 |     100 | 47                
  ...ds-context.ts |   96.66 |      100 |   38.88 |   96.66 | 159,161           
  ...s-dispatch.ts |   80.59 |    84.02 |   73.07 |   80.59 | ...6-970,993-1004 
  ...nds-output.ts |     100 |      100 |     100 |     100 |                   
  ...s-registry.ts |   98.82 |    89.58 |     100 |   98.82 | 180-182           
  dialog-data.ts   |   82.48 |    72.08 |   89.65 |   82.48 | ...1291,1295-1325 
  ...ogs-arena.tsx |       0 |      100 |     100 |       0 | 3-818             
  dialogs-auth.tsx |   76.17 |    66.85 |      84 |   76.17 | ...41,957,966-982 
  ...s-confirm.tsx |    54.3 |     62.5 |   68.75 |    54.3 | ...77-535,547-592 
  dialogs-core.ts  |     100 |    94.44 |     100 |     100 | 179,190           
  ...xtensions.tsx |   89.06 |     82.7 |   78.57 |   89.06 | ...33-636,659-661 
  dialogs-mcp.tsx  |   29.85 |    98.71 |      90 |   29.85 | 295,320-872       
  ...ry-status.tsx |   22.58 |       80 |   28.57 |   22.58 | ...11-154,159-175 
  dialogs-misc.tsx |   12.02 |      100 |      20 |   12.02 | ...47-655,658-712 
  ...ogs-model.tsx |   45.95 |    96.77 |   76.92 |   45.95 | ...72-173,243-408 
  ...ogs-modes.tsx |       0 |      100 |     100 |       0 | 3-291             
  ...rmissions.tsx |   18.65 |    89.28 |   83.33 |   18.65 | ...58-159,201-734 
  ...-settings.tsx |   20.25 |    84.61 |    90.9 |   20.25 | ...71,239,254-870 
  ...gs-shared.tsx |   84.61 |    80.55 |   53.84 |   84.61 | ...51,453-456,472 
  ...ts-skills.tsx |     5.8 |      100 |       0 |     5.8 | ...04-381,391-458 
  ...ogs-theme.tsx |    30.8 |    88.88 |      75 |    30.8 | 148-326           
  diff-render.ts   |   97.87 |    95.23 |     100 |   97.87 | 89-90             
  early-input.ts   |   94.23 |    73.68 |   71.42 |   94.23 | 85,88-89          
  event-adapter.ts |      91 |    74.54 |   88.88 |      91 | ...36,721,740-748 
  exit-guard.ts    |     100 |      100 |     100 |     100 |                   
  ...-lifecycle.ts |   95.45 |     87.5 |     100 |   95.45 | 56                
  ...rust-gate.tsx |   98.55 |    96.55 |      75 |   98.55 | 190-191           
  help-content.ts  |   98.11 |    85.41 |     100 |   98.11 | 226-227,316,318   
  help-overlay.tsx |       0 |      100 |     100 |       0 | 3-281             
  input-history.ts |     100 |    84.21 |     100 |     100 | 43-45,58          
  ...prompt-key.ts |     100 |      100 |     100 |     100 |                   
  ...ompt-model.ts |   85.41 |    87.81 |   84.09 |   85.41 | ...1127,1130-1140 
  input-prompt.tsx |   81.95 |    68.01 |      28 |   81.95 | ...1071,1085-1087 
  ...projection.ts |   81.16 |    62.66 |   86.66 |   81.16 | ...1077-1082,1084 
  key-map.ts       |     100 |      100 |     100 |     100 |                   
  ...egotiation.ts |   94.82 |    73.68 |     100 |   94.82 | 142-144           
  link-click.ts    |     100 |    82.97 |     100 |     100 | ...49,152,185-189 
  ...sion-model.ts |   85.89 |    85.71 |     100 |   85.89 | ...47,502,602,658 
  live-session.ts  |   87.37 |    83.17 |   73.68 |   87.37 | ...60,462,479-489 
  live-turn.ts     |   21.05 |    85.71 |   66.66 |   21.05 | 133-330           
  markdown-heal.ts |     100 |      100 |     100 |     100 |                   
  ...rogressive.ts |   85.41 |    83.33 |   71.42 |   85.41 | 53,60-62,89-91    
  messages.tsx     |   58.82 |     79.1 |   73.68 |   58.82 | ...93-409,417-474 
  mouse-caret.ts   |     100 |      100 |     100 |     100 |                   
  mouse-hit.ts     |     100 |      100 |     100 |     100 |                   
  mouse-rows.ts    |     100 |      100 |     100 |     100 |                   
  ...-scrollbar.ts |     100 |      100 |     100 |     100 |                   
  ...app-shell.tsx |    96.4 |     92.3 |   73.33 |    96.4 | ...49-350,355-357 
  ...tui-assets.ts |     100 |      100 |     100 |     100 |                   
  ...log-mount.tsx |   72.48 |    90.76 |   28.57 |   72.48 | ...64,484,559-575 
  ...-boundary.tsx |   95.91 |      100 |   85.71 |   95.91 | 82-83             
  opentui-host.ts  |   97.53 |    94.73 |   97.43 |   97.53 | ...04,216,236-237 
  ...ui-runtime.ts |   93.57 |    80.95 |     100 |   93.57 | 97-101,152,173    
  osc8-parity.ts   |     100 |      100 |     100 |     100 |                   
  ...-selection.ts |     100 |    96.96 |     100 |     100 | 84                
  ...me-session.ts |   72.34 |    77.77 |   57.14 |   72.34 | 40,44,59-63,76-81 
  ...ompaction.tsx |   76.19 |      100 |   66.66 |   76.19 | 106-130           
  ...wind-model.ts |    94.7 |    87.23 |     100 |    94.7 | 245-252,254       
  ...on-rewind.tsx |       0 |      100 |     100 |       0 | 3-391             
  ...ion-switch.ts |   74.74 |       50 |     100 |   74.74 | ...92-401,411-414 
  ...h-dispatch.ts |   56.86 |    38.88 |      50 |   56.86 | ...13-126,130-137 
  slash-gateway.ts |   96.82 |       90 |   81.81 |   96.82 | 70-71             
  ...pentui-ui.tsx |   35.19 |    61.53 |      50 |   35.19 | ...97,403-409,435 
  sticky-todos.ts  |     100 |      100 |     100 |     100 |                   
  text-batcher.ts  |     100 |      100 |     100 |     100 |                   
  theme-auto.ts    |     100 |      100 |     100 |     100 |                   
  theme-parity.ts  |   98.68 |    82.35 |     100 |   98.68 | 87                
  theme.ts         |    97.7 |    96.55 |     100 |    97.7 | 202-204           
  ...pt-adapter.ts |   89.56 |       75 |   33.33 |   89.56 | ...50-152,172-173 
  ...ript-view.tsx |       0 |      100 |     100 |       0 | 3-516             
 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.14 |     100 |   99.23 | 277-278           
  default-light.ts |     100 |      100 |     100 |     100 |                   
  default.ts       |     100 |      100 |     100 |     100 |                   
  ...inal-theme.ts |   88.59 |     86.2 |     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.14 |     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      |   88.07 |    86.05 |   96.15 |   88.07 |                   
  ...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   
  ...ssion-text.ts |   90.54 |    71.42 |     100 |   90.54 | 66-68,80,82,90-91 
  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.21 |     100 |   94.87 | 116-119           
  goal-runtime.ts  |   94.44 |    96.29 |     100 |   94.44 | 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.14 |     100 |   96.07 | 104-107           
  ...mage-parts.ts |   97.75 |    94.73 |     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.04 |   95.12 |   86.51 | ...1286,1326-1332 
  ...alRenderer.ts |   86.69 |     71.9 |     100 |   86.69 | ...1476,1513-1519 
  ...lsBySource.ts |     100 |    95.45 |     100 |     100 | 84                
  mouse-hit.ts     |     100 |     90.9 |     100 |     100 | 62-64             
  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 |      90 |     87.5 |     100 |      90 | 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.24 |    82.66 |     100 |   90.24 | ...04,506-508,631 
  ...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.75 |    95.96 |     100 |   98.75 | 292-293,488-489   
  ...background.ts |     100 |      100 |     100 |     100 |                   
  todoSnapshot.ts  |   95.81 |     92.3 |     100 |   95.81 | ...09-210,243-244 
  ...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.31 |    90.02 |   96.11 |   92.31 |                   
  ...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 |   89.38 |    85.32 |     100 |   89.38 | ...48-449,456-457 
  ...Calculator.ts |     100 |      100 |     100 |     100 |                   
  cpuProfiler.ts   |   70.73 |    73.23 |   88.88 |   70.73 | ...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 
  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.72 |     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 |   96.05 |    93.79 |     100 |   96.05 | ...,85-86,334,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.44 |    97.36 |     100 |   99.44 | 121               
  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  |   76.66 |       90 |   83.33 |   76.66 | 93-99             
  ...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          |   89.04 |    87.49 |    90.7 |   89.04 |                   
 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.4 |    84.85 |   94.02 |    90.4 |                   
  ...transcript.ts |   88.86 |    81.05 |     100 |   88.86 | ...93,701,707-711 
  ...ent-resume.ts |   85.43 |    78.13 |    85.1 |   85.43 | ...1845-1849,1852 
  ...ound-tasks.ts |   95.19 |    90.72 |   96.42 |   95.19 | ...1889,1897-1898 
  forkedAgent.ts   |   95.91 |    87.12 |   94.44 |   95.91 | ...76-478,601,728 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...ent-result.ts |    96.8 |    92.68 |     100 |    96.8 | 106,129-131       
  ...n-registry.ts |   94.64 |    88.67 |   95.71 |   94.64 | ...1676,1690-1692 
  ...w-snapshot.ts |   75.58 |    72.47 |    87.5 |   75.58 | ...24,448,455-457 
  worktree-pin.ts  |     100 |    88.23 |     100 |     100 | 78,99             
 src/agents/arena  |   76.87 |    68.43 |   78.94 |   76.87 |                   
  ...gentClient.ts |   79.47 |    88.88 |   81.81 |   79.47 | ...68-183,189-204 
  ArenaManager.ts  |    75.8 |    65.46 |   78.57 |    75.8 | ...1879,1885-1886 
  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 |   77.78 |    86.68 |   75.86 |   77.78 |                   
  ITermBackend.ts  |   97.97 |    93.93 |     100 |   97.97 | ...78-180,255,307 
  ...essBackend.ts |   92.14 |    90.74 |   97.05 |   92.14 | ...38-539,673-679 
  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.49 |    87.53 |   91.66 |   93.49 |                   
  agent-context.ts |     100 |      100 |     100 |     100 |                   
  ...-test-mock.ts |   98.82 |    66.66 |   58.33 |   98.82 | 85                
  agent-core.ts    |   90.33 |    80.45 |   81.25 |   90.33 | ...2628,2674-2676 
  agent-events.ts  |     100 |      100 |     100 |     100 |                   
  ...t-headless.ts |   93.67 |       90 |   83.33 |   93.67 | ...13-514,517-518 
  ...nteractive.ts |   83.48 |    85.13 |      80 |   83.48 | ...35,537,544,549 
  ...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.5 |     100 |   93.87 | ...2225,2318-2321 
  ...ow-prompts.ts |     100 |      100 |     100 |     100 |                   
  ...low-runner.ts |   94.08 |     85.4 |   95.65 |   94.08 | ...68,435,455-458 
  ...ow-sandbox.ts |    97.4 |    89.37 |     100 |    97.4 | ...1846,1852-1853 
  ...flow-saved.ts |    96.7 |     93.9 |     100 |    96.7 | 153-154,261-264   
  ...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   |   86.08 |    86.82 |   91.21 |   86.08 |                   
  TeamManager.ts   |   80.54 |    85.36 |   84.37 |   80.54 | ...2123,2146-2147 
  identity.ts      |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...sionBridge.ts |     100 |      100 |     100 |     100 |                   
  mailbox.ts       |   96.02 |     87.5 |     100 |   96.02 | 352-358           
  ...ptAddendum.ts |     100 |      100 |     100 |     100 |                   
  tasks.ts         |   89.84 |    84.23 |     100 |   89.84 | ...1013,1057-1058 
  team-events.ts   |   73.68 |      100 |   66.66 |   73.68 | 140-144,151-155   
  teamHelpers.ts   |   92.99 |    94.52 |      95 |   92.99 | ...29-330,415-425 
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...eam/test-utils |   95.28 |    95.34 |   98.24 |   95.28 |                   
  ...on-harness.ts |   96.49 |    85.71 |     100 |   96.49 | 128-129,141-142   
  fake-agent.ts    |     100 |    96.96 |     100 |     100 | 189,198           
  fake-backend.ts  |   86.46 |    97.61 |   95.83 |   86.46 | 124-146           
 src/config        |   86.63 |    88.95 |   79.11 |   86.63 |                   
  approval-mode.ts |     100 |      100 |     100 |     100 |                   
  ...xtDefaults.ts |     100 |      100 |     100 |     100 |                   
  config.ts        |   85.28 |     88.3 |    77.2 |   85.28 | ...9865,9869-9871 
  ...ionManager.ts |     100 |     90.9 |     100 |     100 | 27                
  ...ver-config.ts |   97.29 |      100 |   83.33 |   97.29 | 48-49             
  models.ts        |     100 |      100 |     100 |     100 |                   
  ...sDiscovery.ts |   97.46 |    93.05 |     100 |   97.46 | ...04,182-183,202 
  storage.ts       |   96.05 |    93.43 |   89.47 |   96.05 | ...34-735,738-739 
 ...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.79 |    88.67 |   94.05 |   92.79 |                   
  ...on-restore.ts |   88.23 |    85.41 |     100 |   88.23 | ...60,63-64,67-68 
  baseLlmClient.ts |    88.4 |    83.33 |   81.81 |    88.4 | ...59,672,678-680 
  client.ts        |    92.1 |    88.04 |   92.23 |    92.1 | ...4966,5064-5065 
  ...tGenerator.ts |   87.45 |    88.09 |   88.88 |   87.45 | ...09-510,555-561 
  ...lScheduler.ts |   90.22 |    84.87 |   94.78 |   90.22 | ...6545,6573-6589 
  ...entContext.ts |   96.67 |    90.25 |   96.77 |   96.67 | ...48,450-451,518 
  geminiChat.ts    |     100 |      100 |     100 |     100 |                   
  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 |                   
  llm-chat.ts      |   95.32 |    90.98 |   96.66 |   95.32 | ...5891,5936-5937 
  llm-request.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 |   95.38 |    84.31 |     100 |   95.38 | ...87,215,217-218 
  ...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       |   94.11 |    91.47 |   86.36 |   94.11 | ...1311,1514-1515 
  ...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   
  stream-guards.ts |   91.16 |    93.18 |     100 |   91.16 | ...89,218-229,294 
  ...port-retry.ts |     100 |      100 |     100 |     100 |                   
  tokenLimits.ts   |     100 |     92.1 |     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.5 |     100 |   99.45 | 182,193           
  ...terruption.ts |     100 |     92.3 |     100 |     100 | 86,104            
  turn.ts          |   99.21 |    94.69 |     100 |   99.21 | 787-788,857       
  ...l-fallback.ts |     100 |      100 |     100 |     100 |                   
 ...ntentGenerator |   96.62 |    89.21 |   97.43 |   96.62 |                   
  ...tGenerator.ts |   97.71 |    89.13 |   97.43 |   97.71 | ...1539,1568,1579 
  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 |     100 |      100 |     100 |     100 |                   
  ...tGenerator.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
 ...tent-generator |   89.24 |    72.72 |   94.11 |   89.24 |                   
  index.ts         |     100 |    85.71 |     100 |     100 | 51                
  ...-generator.ts |   87.54 |    71.42 |   93.75 |   87.54 | ...93-294,356-362 
 ...ntentGenerator |   95.78 |    90.51 |   96.22 |   95.78 |                   
  ...e-snapshot.ts |   97.39 |    89.65 |     100 |   97.39 | ...,49-50,151-152 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...tGenerator.ts |   95.38 |    90.14 |   95.12 |   95.38 | ...1345-1346,1374 
  ...tDetection.ts |     100 |      100 |     100 |     100 |                   
 ...ntentGenerator |   92.52 |    91.14 |   96.36 |   92.52 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  converter.ts     |   91.54 |    90.36 |   96.87 |   91.54 | ...1994,2163-2178 
  errorHandler.ts  |     100 |      100 |     100 |     100 |                   
  index.ts         |   76.19 |    88.88 |      50 |   76.19 | 44-53,90-94       
  ...tGenerator.ts |      70 |    73.33 |     100 |      70 | ...07-112,121-127 
  pipeline.ts      |   96.21 |    91.11 |     100 |   96.21 | ...1208-1209,1316 
  ...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.96 |     100 |     100 | 42                
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...rator/provider |   97.25 |    92.07 |   98.64 |   97.25 |                   
  dashscope.ts     |   98.42 |    95.27 |   96.55 |   98.42 | ...51-752,894-895 
  deepseek.ts      |   95.27 |    90.56 |     100 |   95.27 | ...52-153,166-167 
  default.ts       |    98.9 |    96.29 |     100 |    98.9 | 178,307           
  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     |   89.29 |    86.66 |   93.68 |   89.29 |                   
  ...ive-safety.ts |    97.9 |     92.8 |     100 |    97.9 | 235-236,313-316   
  ...-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 |   93.05 |    89.59 |   98.36 |   93.05 | ...1694-1700,1744 
  ...ionManager.ts |   85.41 |    84.48 |   83.49 |   85.41 | ...3261,3299-3300 
  ...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 |   78.91 |    86.04 |   85.71 |   78.91 | ...95,202,214-248 
  github.ts        |   92.61 |    87.44 |     100 |   92.61 | ...1310-1311,1321 
  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.78 |    82.27 |   86.84 |   84.78 |                   
  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.53 |    71.96 |   58.33 |   76.53 | ...48-749,756-757 
  ...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.7 |    90.48 |   95.32 |    93.7 |                   
  ...eGoalStore.ts |   87.61 |    89.28 |   86.66 |   87.61 | ...85-188,196-204 
  ...t-verifier.ts |   99.45 |    97.05 |     100 |   99.45 | 155               
  ...checkpoint.ts |   86.08 |    85.18 |     100 |   86.08 | ...29-132,142-145 
  ...ion-prompt.ts |     100 |      100 |     100 |     100 |                   
  goal-evidence.ts |    88.7 |     88.2 |   97.67 |    88.7 | ...1219,1242-1245 
  ...projection.ts |   66.66 |    72.97 |   33.33 |   66.66 | ...87,190,194-196 
  ...ersistence.ts |   87.36 |    85.96 |    87.5 |   87.36 | ...53-154,185-190 
  goal-protocol.ts |   97.56 |    96.42 |     100 |   97.56 | 322-323           
  goal-reducer.ts  |   95.75 |    93.79 |   97.36 |   95.75 | ...76,666,684-685 
  goal-runtime.ts  |   96.54 |    90.73 |   96.49 |   96.54 | ...1649-1650,1794 
  ...provenance.ts |     100 |      100 |     100 |     100 |                   
  goal-tools.ts    |   97.58 |    94.27 |   97.72 |   97.58 | ...96-697,915-916 
  ...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.53 |     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         |   90.62 |    87.01 |   90.32 |   90.62 |                   
  ...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.87 |    94.11 |     100 |   96.87 | 68-69             
  ...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.64 |    85.71 |   94.73 |   95.64 | ...1059-1060,1070 
  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    |   85.68 |    82.96 |    92.3 |   85.68 | ...1289,1299-1302 
  hookSystem.ts    |   87.64 |     98.5 |   70.83 |   87.64 | ...62-763,769-770 
  ...HookRunner.ts |   79.12 |    66.66 |      80 |   79.12 | ...38-439,457-461 
  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 |   82.47 |    84.21 |      75 |   82.47 | 63-67,174-189     
  ...oksManager.ts |   94.89 |    90.47 |     100 |   94.89 | ...97,338,340-342 
  ssrfGuard.ts     |   86.45 |    89.13 |     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/ipc           |   94.83 |     94.5 |   96.96 |   94.83 |                   
  inbound-gate.ts  |   99.05 |    90.43 |     100 |   99.05 | 604-606           
  ...-directory.ts |     100 |      100 |     100 |     100 |                   
  peer-envelope.ts |     100 |      100 |     100 |     100 |                   
  peer-frames.ts   |   97.97 |    96.62 |     100 |   97.97 | 277-279           
  peer-routing.ts  |     100 |      100 |     100 |     100 |                   
  peer-send.ts     |   97.22 |    98.41 |   88.88 |   97.22 | 183-187           
  socket-path.ts   |   85.71 |    93.33 |     100 |   85.71 | 83-88             
  uds-client.ts    |   86.92 |    93.33 |   85.71 |   86.92 | 193-209           
  uds-inbox.ts     |   85.85 |    88.13 |     100 |   85.85 | ...90,297-307,371 
 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        |   89.47 |    85.73 |    92.1 |   89.47 |                   
  ...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.71 |    81.14 |   94.44 |   90.71 | ...17,640,657-663 
  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.43 |    83.16 |   77.77 |   78.43 | ...1493,1506-1508 
  ...ent-config.ts |   92.22 |    84.78 |      92 |   92.22 | ...64,473-474,478 
  memoryAge.ts     |   90.47 |    84.61 |     100 |   90.47 | 50-51             
  ...yDiscovery.ts |   93.48 |    90.09 |     100 |   93.48 | ...42,401,629-632 
  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      |   97.21 |    95.29 |     100 |   97.21 | ...29,341,345-347 
  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 |   79.76 |    76.84 |      80 |   79.76 | ...69-473,476,482 
  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        |   91.82 |    89.35 |   89.15 |   91.82 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...tor-config.ts |   91.11 |    93.02 |     100 |   91.11 | 155,161,164-173   
  ...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.03 |     100 |     100 | 181,266           
  modelsConfig.ts  |   88.45 |    86.88 |   83.72 |   88.45 | ...1437,1460-1461 
  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   |   84.54 |    91.72 |   71.88 |   84.54 |                   
  autoMode.ts      |   97.75 |    93.42 |     100 |   97.75 | ...91-598,644,721 
  ...transcript.ts |   98.51 |    86.11 |     100 |   98.51 | 264-265           
  classifier.ts    |      94 |    94.44 |     100 |      94 | 158-165,389-393   
  ...erousRules.ts |     100 |    90.19 |     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 |    88.4 |    92.27 |   82.85 |    88.4 | ...1408,1514-1518 
  rule-parser.ts   |   94.92 |    92.81 |     100 |   94.92 | ...1555,1589-1591 
  ...-semantics.ts |   70.44 |    91.09 |   46.66 |   70.44 | ...2237,2311-2314 
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...sifier-prompts |   99.06 |    95.23 |     100 |   99.06 |                   
  system-prompt.ts |   99.06 |    95.23 |     100 |   99.06 | 235               
 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     |   85.14 |    80.63 |   82.85 |   85.14 |                   
  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 
  ...-discovery.ts |    95.4 |    94.44 |     100 |    95.4 | 31-32,42-43       
  ...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.5 |      100 |       0 |    87.5 | 82-84,87-89,91-94 
  ...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.85 |    86.63 |   96.52 |   90.85 |                   
  ...ionTrailer.ts |     100 |      100 |     100 |     100 |                   
  ...llRegistry.ts |   98.47 |    88.69 |     100 |   98.47 | 85-86,109,473-474 
  branch-points.ts |     100 |    95.23 |     100 |     100 | ...20,211,224,327 
  ...ionService.ts |   97.82 |    96.77 |     100 |   97.82 | ...1150,1294-1302 
  ...ingService.ts |   92.25 |    87.61 |   94.79 |   92.25 | ...2924,2939-2940 
  ...ttribution.ts |   91.73 |    87.71 |      90 |   91.73 | ...80-685,826-827 
  ...utSlimming.ts |   97.85 |    95.23 |     100 |   97.85 | ...64-365,485-488 
  cronScheduler.ts |   94.11 |    89.74 |   98.03 |   94.11 | ...1366,1775-1776 
  cronTasksFile.ts |   95.88 |       92 |     100 |   95.88 | ...72,381-382,520 
  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 |      75 |       71 |   96.07 |      75 | ...2318,2347-2348 
  ...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 |   97.85 |    94.07 |     100 |   97.85 | ...1217,1240-1241 
  ...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.88 |    81.19 |     100 |   91.88 | ...1073-1074,1119 
  ...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 |   94.28 |     91.8 |   92.59 |   94.28 | ...31-733,864-866 
  ...ce-service.ts |    98.5 |    94.11 |    90.9 |    98.5 | 64-65             
  ...n-registry.ts |   98.82 |    96.81 |     100 |   98.82 | 642,696-697,759   
  ...ken-counts.ts |     100 |       96 |     100 |     100 | 58                
  ...ipt-reader.ts |    93.7 |    91.22 |    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 |   84.56 |       75 |    97.8 |   84.56 | ...2666,2688,2702 
  sessionRecap.ts  |   67.56 |    43.47 |     100 |   67.56 | ...60,178,180-183 
  ...ionService.ts |   89.79 |    87.89 |   92.46 |   89.79 | ...4589-4590,4631 
  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.55 |   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 |    95.83 |     100 |     100 | 139               
  ...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 |   91.89 |    86.15 |     100 |   91.89 | ...52-555,607-608 
  ...l-registry.ts |   92.99 |    83.19 |     100 |   92.99 | ...66-367,377-378 
  ...reeCleanup.ts |   14.42 |      100 |   33.33 |   14.42 | 58-186            
  ...ionService.ts |   88.36 |     87.7 |     100 |   88.36 | ...48-449,465-466 
 ...icrocompaction |   98.91 |    95.06 |     100 |   98.91 |                   
  microcompact.ts  |   98.91 |    95.06 |     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.95 |     86.4 |   94.73 |   89.95 |                   
  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    |   95.02 |    87.87 |     100 |   95.02 | ...19,239,251-253 
  skill-manager.ts |    86.6 |     86.6 |   86.11 |    86.6 | ...1286,1293-1297 
  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 | 289-290           
 ...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     |   89.01 |    89.44 |   98.41 |   89.01 |                   
  ...ter-schema.ts |     100 |    98.18 |     100 |     100 | 99                
  ...tin-agents.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...nt-manager.ts |    85.9 |    86.56 |   97.67 |    85.9 | ...1682,1759-1760 
  types.ts         |     100 |      100 |     100 |     100 |                   
  validation.ts    |   94.14 |    95.23 |     100 |   94.14 | 47-52,65-66,71-76 
 src/telemetry     |   83.24 |    84.96 |   86.51 |   83.24 |                   
  ...ty-tracker.ts |     100 |      100 |     100 |     100 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  context-usage.ts |   96.85 |    91.07 |     100 |   96.85 | ...26-127,199-200 
  ...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.88 |    92.85 |   83.78 |   87.88 | ...55-561,564-568 
  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.83 |    77.24 |   66.66 |   60.83 | ...1523,1540-1560 
  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      |   94.13 |    86.66 |      75 |   94.13 | ...45,496-497,513 
  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.29 |    88.88 |    97.5 |   91.29 | ...1946,1975-1978 
  ...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.29 |    88.88 |   86.36 |   83.29 | ...1470,1474-1481 
  uiTelemetry.ts   |   98.87 |     95.1 |   97.05 |   98.87 | ...59,696,786-787 
 ...ry/qwen-logger |   74.14 |    80.17 |      70 |   74.14 |                   
  event-types.ts   |       0 |        0 |       0 |       0 |                   
  qwen-logger.ts   |   74.14 |       80 |   69.49 |   74.14 | ...1123,1161-1162 
 src/test-utils    |   97.69 |    98.66 |   86.36 |   97.69 |                   
  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     |   97.14 |      100 |   82.85 |   97.14 | 85-86,227-228,241 
  ...aceContext.ts |     100 |      100 |     100 |     100 |                   
 src/tools         |   87.92 |    86.54 |   90.47 |   87.92 |                   
  ...erQuestion.ts |      90 |    82.75 |   92.85 |      90 | ...01-402,409-410 
  ...-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   |   92.26 |    97.72 |      75 |   92.26 | ...,76-77,272-281 
  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.37 |     83.8 |   94.73 |   83.37 | ...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   |   96.52 |    95.55 |    87.5 |   96.52 | 37-38,53-54       
  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 
  ...fier-input.ts |     100 |      100 |     100 |     100 |                   
  ...nt-manager.ts |   82.07 |    80.15 |   85.71 |   82.07 | ...3243,3245-3246 
  mcp-client.ts    |   86.55 |    88.01 |   94.02 |   86.55 | ...2581,2585-2588 
  ...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 | ...1342,1350-1351 
  ...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      |   98.14 |     93.2 |     100 |   98.14 | ...1269,1324-1325 
  ...sport-pool.ts |   83.98 |     80.3 |   88.46 |   83.98 | ...1411,1418-1422 
  ...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 |       85 |     100 |      96 | ...42,595,605-609 
  ...d-artifact.ts |   85.68 |    81.59 |   94.73 |   85.68 | ...1071,1095-1096 
  ...t-findings.ts |   99.13 |    93.93 |    92.3 |   99.13 | 255-257           
  ...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  |   86.86 |    93.18 |      75 |   86.86 | ...20-426,568-575 
  ...n-mcp-view.ts |   94.07 |    91.89 |    90.9 |   94.07 | 131-139           
  shell.ts         |   79.61 |    85.04 |   93.06 |   79.61 | ...5228,5303-5304 
  skill-utils.ts   |     100 |      100 |     100 |     100 |                   
  skill.ts         |   97.15 |    90.79 |   92.59 |   97.15 | ...43,737-740,744 
  ...-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     |   87.57 |    78.94 |     100 |   87.57 | ...71,157,161-168 
  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 |     87.5 |   85.71 |   97.24 | 48-49,129-130     
  team-delete.ts   |   88.67 |     87.5 |   85.71 |   88.67 | ...2-48,72-73,129 
  ...n-approval.ts |   92.14 |    96.96 |   81.81 |   92.14 | 38-39,42-43,93-99 
  todoWrite.ts     |   95.99 |    91.84 |   93.75 |   95.99 | ...21-625,638-643 
  ...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.72 |    82.95 |   86.53 |   80.72 | ...1106,1114-1115 
  ...-finalizer.ts |    98.1 |    92.36 |   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.2 |    89.79 |   93.75 |    96.2 | ...10,260-265,428 
  tool-utils.ts    |   97.46 |    96.55 |     100 |   97.46 | 26-27             
  tools.ts         |   92.93 |    92.18 |      92 |   92.93 | ...67-568,584-590 
  truncation.ts    |   90.72 |    90.51 |     100 |   90.72 | ...65-473,510-516 
  ...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.29 |    86.15 |   89.47 |   87.29 | ...53-856,893-928 
  zoom-image.ts    |   95.76 |    93.93 |    90.9 |   95.76 | 54-59,203-204     
 src/tools/agent   |   86.69 |    88.65 |   89.71 |   86.69 |                   
  agent.ts         |   85.26 |    87.84 |   87.35 |   85.26 | ...4379,4413-4423 
  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.83 |    92.51 |   88.63 |   95.83 |                   
  artifact-tool.ts |   91.69 |    88.46 |   71.42 |   91.69 | ...20-321,329-332 
  ...-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 |   89.29 |    86.71 |   83.33 |   89.29 |                   
  workflow.ts      |   89.29 |    86.71 |   83.33 |   89.29 | ...91-892,991-992 
 src/utils         |      93 |    89.93 |   97.03 |      93 |                   
  ...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 |       90 |     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   |   99.49 |    96.25 |     100 |   99.49 | 224               
  ...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.59 |    90.32 |     100 |   94.59 | 40-41,137-138     
  errorParsing.ts  |     100 |      100 |     100 |     100 |                   
  ...rReporting.ts |   95.65 |    93.33 |     100 |   95.65 | 37-38             
  errors.ts        |   88.92 |    92.99 |      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  |   94.04 |    87.79 |   96.87 |   94.04 | ...1040-1041,1155 
  ...fig-safety.ts |   97.01 |       80 |     100 |   97.01 | 53-54             
  git-ignore.ts    |     100 |      100 |     100 |     100 |                   
  gitDiff.ts       |   95.39 |    81.95 |     100 |   95.39 | ...1075,1421-1422 
  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 
  ...-pr-issues.ts |   99.45 |    97.14 |     100 |   99.45 | 182               
  github-prs.ts    |   96.34 |    87.87 |     100 |   96.34 | ...81,586-587,674 
  iconvHelper.ts   |     100 |      100 |     100 |     100 |                   
  ...rePatterns.ts |     100 |      100 |     100 |     100 |                   
  image-view.ts    |   95.36 |    91.07 |     100 |   95.36 | ...99-203,275-279 
  ...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.75 |     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.73 |     92.3 |     100 |   94.73 | 66-67             
  ...iagnostics.ts |    96.4 |     94.2 |     100 |    96.4 | ...66,293-294,376 
  ...tProcessor.ts |   94.01 |     90.1 |     100 |   94.01 | ...47-353,445-446 
  ...Inspectors.ts |     100 |      100 |     100 |     100 |                   
  modelId.ts       |   98.96 |    98.24 |     100 |   98.96 | 154               
  ...kerChecker.ts |    90.9 |    91.66 |     100 |    90.9 | 73-79             
  ...ollow-open.ts |     100 |    93.33 |     100 |     100 | 134,177           
  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.42 |     100 |   93.75 | ...13,218-219,262 
  ...text-range.ts |   96.98 |    87.36 |     100 |   96.98 | ...87-688,763-764 
  ...load-error.ts |   93.47 |    88.23 |     100 |   93.47 | 64-65,80          
  retry.ts         |   96.09 |    92.23 |     100 |   96.09 | ...72,563-564,582 
  retryContext.ts  |     100 |      100 |     100 |     100 |                   
  ...sification.ts |   97.63 |    97.05 |     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.55 |    90.54 |     100 |   96.55 | ...34,650,734,753 
  ...-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.57 |     100 |    98.3 | ...1340-1342,1352 
  ...nlyChecker.ts |   96.33 |    96.57 |     100 |   96.33 | ...83-284,292-293 
  sideQuery.ts     |   86.82 |     86.2 |     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 |     62.5 |      75 |   54.62 | ...03-105,108-134 
  ...Compaction.ts |   96.83 |     92.7 |     100 |   96.83 | ...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.61 |     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.

@qwen-code-dev-bot

qwen-code-dev-bot commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator Author

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

中文说明

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

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator Author

🐑 Merge conflict with main detected — dispatched the autofix loop to resolve it. / 检测到与 main 的合并冲突,已触发 autofix 处理。

…lanes (#10755)

Review of the worker-cap fix noted that the Run Script Tests step
carried a byte-identical copy of the Run Workspace Tests env block, so
any future tuning (bumping the '4' default, adding another pool/thread
variable) would need two synchronized edits, and editing one step while
missing the other would silently restore the unbounded-worker timeout
on the untouched lane — caught only reactively by a red contract test.

Anchor the block at its first occurrence (&vitest_worker_bound) and
alias it into the scripts lane, the same mechanism this file already
uses for &release_test_env across six jobs. Reshape the contract
assertions to pin the structure: the bound's four variables at the
anchor definition and the bare alias at the consumer, so dropping
either side turns the test red. Net five lines removed.
@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator Author

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

Autofix review round — PR #10760 (issue #10755)

Commit: 09c6e81ca6refactor(release): alias the Vitest worker bound across release test lanes (#10755) (+15/−18, net −3 lines)

Feedback dispositions

1. [rc:3910422172] — [Suggestion] anchor the duplicated env: block — implemented.

The step-level env: on Run Script Tests was a byte-identical copy of the block on Run Workspace Tests. This file's established mechanism for sharing env maps is YAML anchoring (&release_test_env is aliased into six jobs), so the fix now uses the same shape:

  • .github/workflows/release.ymlRun Workspace Tests declares env: &vitest_worker_bound (block content unchanged); Run Script Tests now carries env: *vitest_worker_bound. A YAML-parse check confirms both steps resolve to the identical four-variable map, so both release test lanes keep exactly the same bound as before and any future tuning is one edit instead of two synchronized copies.
  • scripts/tests/package-scripts.test.js — the contract assertions were reshaped as the finding suggested, pinning the alias structure instead of two bare copies: the four VITEST_* variables are asserted on the anchor definition in the workspace step, and env: *vitest_worker_bound is asserted on the scripts step. getWorkflowStep slices the raw workflow text, so these are exactly the strings the extraction sees.

Mutation witness (as the finding requested):

  • Remove the alias from the Run Script Tests step → the wires release quality checks… test fails (1/20 red).
  • Remove the anchor from the Run Workspace Tests step → the same test fails (1/20 red).
  • Restore both → 20/20 green.

2. [rv:5085255311] — automated review (COMMENTED). No action. It carries no findings beyond the inline suggestion above.

3. [ic:5503940208] — maintainer E2E report. No change requested. No Critical found; its mutation A/B on the first commit agrees with this round's witness. The "not approving: zero gate approvals" note is approval state, not a code change.

4. Failed check Test (ubuntu-latest, Node 22.x) — diagnosed as environment-specific; no code-level fix is possible inside this PR's footprint.

Run 33583720384 started 02:35:37Z and failed 03:47:16Z (~72 min; a FAILURE conclusion, not a timeout cancellation — the ECS ceiling is 120 min). This runner holds no GitHub credentials, so the lane logs are not fetchable; the diagnosis below is from the available evidence:

  • All static checks (ESLint, actionlint, yamllint, Prettier, settings schema) were already green at 03:36Z, so the failure sits in the lane's test segment.
  • The coverage comment posted at lane completion shows the CLI coverage summary present and the Core coverage summary missing. npm run test:ci --workspaces runs workspaces alphabetically (cli before core) and aborts on the first failure; a failing vitest run still writes coverage (the CLI summary on this very red lane proves it), so the missing core summary means the packages/core vitest process terminated abnormally — consistent with a kill under pool saturation — not that core tests failed on logic.
  • This PR's diff cannot affect that segment: it touches only .github/workflows/release.yml (not exercised by PR CI) and scripts/tests/* (which runs only after the workspace chain completes — it never ran in this lane).
  • Local probes at the PR head with the CI-shaped environment (fresh HOME, empty API keys, VITEST_MAX/MIN_THREADS/VITEST_MAX/MIN_FORKS = 4/1/4/1, ECS-style runner name) ran the full packages/core suite to completion: 23,039 of 23,073 tests passed, and every residual local failure was individually attributed to this diagnostic container's own session environment or to pool load — none to a defect at this SHA. The shared pool's load average measured ~185 on 64 cores at the time.

Conclusion: a pool-saturation casualty in the lane's core-suite segment, unrelated to this diff. The new push re-runs the lane, and the workflow's independent CI remains the final gate.

Deferred finding (outside this PR's footprint)

Recorded in deferred-findings.json: packages/core/src/hooks/hook-runner.process.test.ts carries fixed internal waits (5s driver-startup, 3s reap budgets) that do not adapt to ECS runners the way the package's vitest.config.ts already adapts testTimeout via RUNNER_NAME. Under the measured ~185 pool load these waits flake locally even in isolated runs. Verified independently of the CI event above; the fix belongs in the core package's tests, not in this release-workflow PR.

Verification

Commands actually run this round (on the committed tree 09c6e81ca6 unless noted):

  • npm run build — passed (exit 0).
  • npm run typecheck — passed (exit 0).
  • npm run lint — passed (exit 0).
  • Focused vitest (scripts/tests/package-scripts.test.js, the suite this round changes) — 20/20 passed; re-verified on the committed tree after the pre-commit hooks.
  • Mutation probes (requested by the finding): alias removed → 1 failed/20; anchor removed → 1 failed/20; restored → 20/20 passed.
  • release.yml contract suites (release-workflow.test.js, qwen-autofix-workflow.test.js, ai-release-notes-workflow.test.js) — 276/277 passed in concurrent runs; the single failure (deferred-findings upsert test, unrelated to the release.yml env block) passes 229/229 in isolation → pool-load flake.
  • npm run test:scripts (full suite; the repo command that executes the changed test files) — 2,056/2,057 passed under ~185 pool load; the single failure (verify-capture.test.js, a terminal-rendering test) passes 23/23 in isolation → pool-load flake. Both files this PR touches were fully green.
  • YAML alias-resolution check — release.yml parsed with the yaml package; both steps resolve to the identical env map.
  • Diagnostic-only (not gate commands): packages/core suite twice under the CI-shaped env, plus isolated re-runs of the four timing-sensitive files; see the failed-check section for the attribution of each residual failure.
  • Not run: integration tests (the change is workflow YAML plus contract tests, never exercised through the bundled CLI); npm run generate:settings-schema (no settings source changed); yamllint/actionlint binaries are not installable in this container (no pip3, non-writable ~/.cache) — the change mirrors the file's existing &release_test_env anchor/alias pattern that those linters already accept.
中文说明

Autofix 审查轮次 — PR #10760(issue #10755

提交:09c6e81ca6refactor(release): alias the Vitest worker bound across release test lanes (#10755)(+15/−18,净 −3 行)

反馈处置

1. [rc:3910422172] — [Suggestion] 用锚点消除重复的 env: 块 — 已实现。

Run Script Tests 上的步骤级 env:Run Workspace Tests 上的块逐字节相同。本文件共享 env 映射的既有机制是 YAML 锚点(&release_test_env 被六个 job 别名引用),因此本次修复采用了同样的形态:

  • .github/workflows/release.ymlRun Workspace Tests 声明 env: &vitest_worker_bound(块内容不变);Run Script Tests 改为 env: *vitest_worker_bound。YAML 解析校验确认两个步骤解析出完全相同的四变量映射,因此两条 release 测试分支保持与之前完全相同的上限,且未来任何调参只需改一处,而不是两处同步修改。
  • scripts/tests/package-scripts.test.js — 按该建议的要求重构了契约断言,固定别名结构而非两份裸拷贝:四个 VITEST_* 变量断言在 workspace 步骤的锚点定义上,env: *vitest_worker_bound 断言在 scripts 步骤上。getWorkflowStep 是对原始工作流文本做切片,因此这两处断言固定的正是提取结果中字面出现的字符串。

变异见证(按该建议的要求):

  • 移除 Run Script Tests 步骤上的别名 → wires release quality checks… 测试失败(1/20 红)。
  • 移除 Run Workspace Tests 步骤上的锚点 → 同一测试失败(1/20 红)。
  • 恢复两者 → 20/20 绿。

2. [rv:5085255311] — 自动审查(COMMENTED)。无需处理。 除上述行内建议外没有其他发现。

3. [ic:5503940208] — 维护者 E2E 报告。未要求修改。 未发现 Critical;该报告对首个提交所做的变异 A/B 与本轮的见证一致。“不予批准:head 上门控批准数为零”是审批状态说明,不是代码修改要求。

4. 失败检查 Test (ubuntu-latest, Node 22.x) — 诊断为环境特定问题;在本 PR 的范围内无法做代码级修复。

运行 33583720384 于 02:35:37Z 开始,03:47:16Z 失败(约 72 分钟;结论是 FAILURE 而非超时取消 — ECS 上限为 120 分钟)。本运行器没有 GitHub 凭据,无法拉取该分支日志;以下诊断基于现有证据:

  • 所有静态检查(ESLint、actionlint、yamllint、Prettier、settings schema)在 03:36Z 已经为绿,因此失败位于该分支的测试段。
  • 分支结束时发布的覆盖率评论显示 CLI 覆盖率摘要存在,而 Core 覆盖率摘要缺失npm run test:ci --workspaces 按字母序运行工作区(clicore 之前)并在首个失败处中止;测试失败的 vitest 运行仍会写出覆盖率(这条红色分支上的 CLI 摘要就是证明),因此缺失 core 摘要意味着 packages/core 的 vitest 进程异常终止 — 与资源池饱和下被杀进程一致 — 而不是 core 测试在逻辑上失败。
  • 本 PR 的改动不可能影响该段:它只触及 .github/workflows/release.yml(PR CI 不会执行)和 scripts/tests/*(只在全部工作区链完成后才运行 — 本分支中它根本没有运行)。
  • 在 PR head 上以 CI 形态环境(全新 HOME、清空 API key、VITEST_MAX/MIN_THREADS/VITEST_MAX/MIN_FORKS = 4/1/4/1、ECS 风格 runner 名)做的本地探针将 packages/core 全套跑完:23,073 个测试中 23,039 个通过,其余每一个本地失败都被逐一归因于本诊断容器自身的会话环境变量或资源池负载 — 没有一个是该 SHA 上的缺陷。测量时共享池的 load average 约为 64 核上 185。

结论:该分支 core 套件段在资源池饱和下的一次偶发伤亡,与本 PR 改动无关。新提交会重跑该分支,工作流的独立 CI 仍是最终验证门。

延期发现(超出本 PR 范围)

已记录到 deferred-findings.jsonpackages/core/src/hooks/hook-runner.process.test.ts 内部有固定等待(5 秒驱动进程启动、3 秒回收预算),它们没有像该包 vitest.config.ts 已经通过 RUNNER_NAME 自适应 testTimeout 那样适配 ECS runner。在实测约 185 的池负载下,这些等待即使在单独运行时也会本地闪断。该失败模式独立于上述 CI 事件得到验证;修复属于 core 包的测试,而不属于这个 release 工作流 PR。

验证

本轮实际运行的命令(除注明外在已提交树 09c6e81ca6 上):

  • npm run build — 通过(exit 0)。
  • npm run typecheck — 通过(exit 0)。
  • npm run lint — 通过(exit 0)。
  • 聚焦 vitest(scripts/tests/package-scripts.test.js,本轮修改的套件)— 20/20 通过;在 pre-commit 钩子之后已在提交树上复验。
  • 变异探针(该建议所要求):移除别名 → 1 失败/20;移除锚点 → 1 失败/20;恢复 → 20/20 通过。
  • release.yml 契约套件(release-workflow.test.jsqwen-autofix-workflow.test.jsai-release-notes-workflow.test.js)— 并发运行下 276/277 通过;唯一失败(deferred-findings upsert 测试,与 release.yml env 块无关)单独运行时 229/229 通过 → 池负载闪断。
  • npm run test:scripts(全套;执行被改测试文件的仓库命令)— 在约 185 的池负载下 2,056/2,057 通过;唯一失败(verify-capture.test.js,终端渲染测试)单独运行时 23/23 通过 → 池负载闪断。本 PR 触及的两个文件全部为绿。
  • YAML 别名解析校验 — 用 yaml 包解析 release.yml;两个步骤解析出完全相同的 env 映射。
  • 仅诊断用(非门控命令):packages/core 套件在 CI 形态环境下跑两次,另对四个时序敏感文件单独复跑;每个残留失败的归因见“失败检查”一节。
  • 未运行:集成测试(本次改动是工作流 YAML 加契约测试,不经过打包后的 CLI 执行);npm run generate:settings-schema(未改动任何 settings 源);本容器无法安装 yamllint/actionlint 二进制(无 pip3、~/.cache 不可写)— 本次改动复用了该文件中已被这些 linter 接受的 &release_test_env 锚点/别名模式。

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

🧵 Resolved all 1 selected review thread(s). · 已关闭全部选中的 1 条评审线程。

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


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

@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Qwen Code review did not complete successfully. The review pipeline failed before a review could be posted. A transient error is retried automatically; if you are seeing this, retry with @qwen-code /review. See workflow logs.

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator Author

🐑 Merge conflict with main detected — dispatched the autofix loop to resolve it. / 检测到与 main 的合并冲突,已触发 autofix 处理。

main's 7df5ac6 (#10765) landed the same Vitest worker bound this
branch added to the release scripts lane, and pinned it with its own
contract test asserting the four VITEST_* variables literally in both
lanes. Resolve both conflicts to main's shape: its fix is the superset
(dedicated hk4 host, serialized concurrency, rescheduled crons,
nightly/preview retry), and its workspace lane now carries a lane-only
VITEST_RETRY that an env-block alias would leak into the scripts lane.

That drops this branch's YAML anchor dedup of the two env blocks, so the
reviewer Suggestion it answered stays open for a maintainer to call:
re-applying it now means rewriting the contract test #10765 just merged.

What survives is the orthogonal deflake in the upload-stall test. Its
400ms attempt bound raced node's cold-start latency, so the SIGKILL
could land before the shim's first appendFileSync and lose that
attempt's log line. Measured under 20-way single-CPU contention, 400ms
loses the log entirely (ENOENT reading the attempt count) while 2000ms
passes, worst case 12.2s inside the test's 30s budget.
@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator Author

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

Round summary — base-conflict resolution; main superseded this PR's headline fix

--conflict true, so this round merged origin/main (26 commits, 77d41f48d3..f4937c1854) into autofix/issue-10755 and resolved two content conflicts. Merge commit 5b10cc2c3b (parents 09c6e81ca6, f4937c1854); the branch is now 0 commits behind main.

There were no new review bodies and no new inline comments this round. The only new feedback was the review-pipeline fallback notice, plus the base conflict.

The conflict: main landed the same fix

7df5ac6898fix(ci): isolate and bound release validation workloads (#10765) — landed on main after this branch was cut and independently added the identical four-variable Vitest worker bound (VITEST_MAX_THREADS / MIN_THREADS / MAX_FORKS / MIN_FORKS, same ecs-qwen- conditional, same '4' default) to the Run Script Tests step in quality_scripts, which is exactly what this PR's first commit did. It also pinned that bound with its own contract test in scripts/tests/package-scripts.test.js, looping over both lanes and asserting the literal variable strings in each.

#10765 is the strict superset of this PR's CI change: it additionally pins every release validation job to a dedicated ecs-qwen-hk4-host label, serializes scheduled validation with a concurrency group, moves both crons out of the pool's peak hours, adds a nightly/preview-only VITEST_RETRY, and gives packages/web-shell the shared-ECS timeout ceilings.

Both conflicts were resolved to main's shape, per file:

  • .github/workflows/release.yml → main's version, byte-identical. This branch's remaining delta there was the round-2 YAML anchor/alias (&vitest_worker_bound / *vitest_worker_bound). Re-applying it on top of fix(ci): isolate and bound release validation workloads #10765 would leak the workspace-lane-only VITEST_RETRY into the scripts lane, because the anchor sits on the Run Workspace Tests env block that fix(ci): isolate and bound release validation workloads #10765 extended — avoiding the leak needs a standalone anchor holder plus a <<: merge, i.e. more CI machinery, not less.
  • scripts/tests/package-scripts.test.js → main's version, byte-identical. Main's loop asserts the bound in both lanes, so coverage of the worker cap is unchanged by dropping this branch's reshape; keeping the reshape would have meant rewriting a contract test that merged four hours ago.
  • scripts/tests/upload-aliyun-oss-assets.test.js → no conflict, this branch's change kept (see below).

Net result: the PR now changes one file, and no longer touches .github/ at all.

[ic:5505682166] review-pr: FAILURE — not actionable in code

This is the automated review pipeline failing, not a gate on this PR's code. Evidence from checks.json: review-pr ran 07:01:09Z → 08:32:09Z and concluded FAILURE; the workflow's own fallback-comment job then ran 08:32:12Z → 08:32:15Z and succeeded, posting the "review did not complete successfully" notice. Every other check in the list is SUCCESS or SKIPPED, and no build, lint, typecheck or test check failed.

The job's cap is vars.QWEN_REVIEW_JOB_TIMEOUT_MINUTES (documented default 360), so 91 minutes is not the job-level timeout — the pipeline failed internally before posting. I do not have the job logs, so I am not asserting a specific internal cause. What I can say: the workflow classifies this as transient, its designed retry is a human action (@qwen-code /review), and the fix would live in .github/workflows/qwen-code-pr-review.yml — the review machinery, which is out of bounds for this PR and outside its footprint. No code change made; needs a bot/maintainer retry. Re-running the review is also worth doing on its own merits, because the diff it would now review is a single test file.

Kept: the upload-stall deflake, now probe-verified

scripts/tests/upload-aliyun-oss-assets.test.js runs in the ordinary PR gate too (test:citest:scripts), not only in the release lane, so #10765's host pinning does not make it redundant. Its 400ms attempt bound raced node's cold-start latency: spawnSync(..., { timeout, killSignal: 'SIGKILL' }) starts its clock at spawn, and the shim's first statement is the appendFileSync the test counts — so a kill that lands before node finishes booting loses that attempt's log line.

Measured on this 64-core runner:

Probe Result
Mechanism, timeout: 1ms ETIMEDOUT, 0 log lines written — kill before appendFileSync loses the line
Unloaded node cold start (n=12) min 18ms / p50 20ms / max 24ms
128 busy-loop burners (n=12) min 34ms / p50 61ms / max 238ms — 400ms is only ~1.7× the worst start
24-way concurrency pinned to 1 CPU, bound 400ms 58 of 96 attempts lost their log line
Same pressure, bound 2000ms 0 of 48 lost

Mutation probe on the real test (guard restored afterwards, re-run to green):

  • Reverted attemptTimeoutMs to 400 and ran the single test with vitest and 20 burners all pinned to CPU 0 → FAILED: ENOENT: no such file or directory, open '/tmp/qwen-upload-hang-cpNvSy/ossutil.log' at line 215. All three attempts were killed before their first write, so the log never existed — a harsher symptom than the short count the round-1 commit described, and the reason the comment now names both.
  • Restored 2000 under identical contention → PASSED in 12166ms, inside the test's own 30s budget (worst case 3 × 2s kills + 2s + 4s backoff = 12s).

The comment in that test was sharpened to state the observed symptom and the arithmetic rather than the vaguer "well above worst-case latency on the shared runners".

Open question for a maintainer — PR scope (not blocking)

With #10765 merged, this PR no longer changes any CI configuration; its whole remaining content is the upload-stall deflake, while its title and body still describe capping Vitest workers in the release scripts lane. Retitle and narrow the PR to the deflake, or close it and carry the deflake in a follow-up?

Recommendation: keep it open and retitle to something like test(scripts): keep the upload-stall attempt bound above child-spawn latency (#10755). The deflake is verified, orthogonal to #10765, and one file / +7 −1.

Open question for a maintainer — [rc:3910422172] dedup Suggestion

Left unresolved on its thread (reply posted there). Main's #10765 keeps the four variables duplicated byte-identically across both lanes and pins both copies with a contract test asserting the literal strings, so the reviewer's drift concern still describes main's code — but acting on it now means restructuring freshly-merged CI YAML and rewriting that test. Two defensible directions, and the call is not mine: leave main's explicit duplication (drift is caught reactively by the contract test), or dedup in a small follow-up against main. Recommendation: the latter if wanted at all — not inside this PR.

Boundaries respected

No .github/ content is modified by this PR any more; the net diff is one file under scripts/tests/, which is ordinary test code. No test was deleted or weakened — the surviving change raises a timeout bound and its assertion (toHaveLength(3), toThrow(/ossutil failed after 3 attempts/)) is unchanged. Commits are additive; no history rewrite. A local git identity had to be configured in this checkout (none was set, so git merge could not create a commit); it matches the identity of the branch's existing commits.

Verification

Commands actually run, in order, on the merged tree:

  • npm run buildpassed (exit 0)
  • npm run typecheckpassed (exit 0)
  • npm run lintpassed (exit 0); run twice, once after conflict resolution and once after the comment edit
  • npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/upload-aliyun-oss-assets.test.js scripts/tests/package-scripts.test.js scripts/tests/release-workflow.test.js3 files / 81 tests passed (exit 0); run twice, once after conflict resolution and once after the comment edit. The two release contract suites are included because they pin the workflow file whose conflict was resolved.
  • npx prettier --check scripts/tests/upload-aliyun-oss-assets.test.jspassed (exit 0)
  • npm run generate:settings-schemaran clean (exit 0) and produced output byte-identical to the merged artifact (git diff empty for packages/vscode-ide-companion/schemas/settings.schema.json), so the schema main brought in is fresh and nothing extra needed committing. Checked because main's 26 commits touched packages/cli/src/config/settingsSchema.ts and CI has a schema-freshness step that build/typecheck/lint/vitest cannot see.
  • Mutation probe, attemptTimeoutMs 2000 → 400, single test under 20-way single-CPU contention — FAILED as intended (ENOENT on the attempt log, line 215); restored to 2000 under identical contention — PASSED (12166ms).
  • git status --short — clean, no untracked files, no unmerged paths.

Not run: npm run bundle and the integration suites. The touched behavior is a unit-level test under scripts/tests/ executed by npm run test:scripts; it is not reachable only through the bundled CLI or the integration harness, so bundling would not exercise it.

中文说明

本轮小结 —— 解决基线冲突;main 已合入本 PR 的核心修复

本轮收到 --conflict true,因此把 origin/main(26 个提交,77d41f48d3..f4937c1854)合并进 autofix/issue-10755,并解决了两处内容冲突。合并提交为 5b10cc2c3b(父提交 09c6e81ca6f4937c1854);当前分支落后 main 0 个提交。

本轮没有新的 review 正文,也没有新的行内评论。唯一的新反馈是审查流水线的兜底通知,加上这个基线冲突。

冲突根源:main 合入了同一个修复

7df5ac6898 —— fix(ci): isolate and bound release validation workloads (#10765) —— 在本分支切出之后合入 main,独立地给 quality_scriptsRun Script Tests 步骤加上了完全相同的四个 Vitest worker 上限变量VITEST_MAX_THREADS / MIN_THREADS / MAX_FORKS / MIN_FORKS,相同的 ecs-qwen- 条件、相同的 '4' 默认值),而这正是本 PR 第一个提交所做的事情。它还用自己的契约测试在 scripts/tests/package-scripts.test.js 中固定了这个上限:遍历两条 lane,逐一断言变量字面量。

就 CI 改动而言,#10765 是本 PR 的严格超集:它额外把所有 release 校验作业钉到专用的 ecs-qwen-hk4-host 标签、用 concurrency 组串行化定时校验、把两个 cron 移出资源池高峰时段、增加了仅用于 nightly/preview 的 VITEST_RETRY,并给 packages/web-shell 配上了共享 ECS 的超时上限。

两处冲突都按文件解决为 main 的形态

  • .github/workflows/release.yml → 采用 main 版本,逐字节相同。本分支在该文件上剩下的改动只有第二轮的 YAML 锚点/别名(&vitest_worker_bound / *vitest_worker_bound)。在 fix(ci): isolate and bound release validation workloads #10765 之上重新套用它会把仅属于 workspace lane 的 VITEST_RETRY 泄漏进 scripts lane,因为锚点挂在被 fix(ci): isolate and bound release validation workloads #10765 扩展过的 Run Workspace Tests env 块上 —— 想避免泄漏就得再加一个独立的锚点承载节点并用 <<: 合并,也就是引入更多 CI 机制,而不是更少。
  • scripts/tests/package-scripts.test.js → 采用 main 版本,逐字节相同。main 的循环已对两条 lane 都断言了该上限,所以放弃本分支的改写并不会削弱对 worker 上限的覆盖;而保留改写就意味着去重写一个四小时前才合入的契约测试。
  • scripts/tests/upload-aliyun-oss-assets.test.js → 无冲突,保留本分支的改动(见下文)。

最终结果:本 PR 现在只改动一个文件,并且完全不再触碰 .github/

[ic:5505682166] review-pr: FAILURE —— 无法在代码层面处理

这是自动审查流水线自身失败,不是针对本 PR 代码的门禁。来自 checks.json 的证据:review-pr 于 07:01:09Z 开始、08:32:09Z 结束,结论为 FAILURE;随后工作流自己的 fallback-comment 作业于 08:32:12Z 开始、08:32:15Z 结束并成功,发出了「审查未能成功完成」的通知。列表中其它所有检查均为 SUCCESSSKIPPED,没有任何 build、lint、typecheck 或 test 检查失败。

该作业的超时上限是 vars.QWEN_REVIEW_JOB_TIMEOUT_MINUTES(文档默认 360),所以 91 分钟并不是作业级超时 —— 流水线是在发布结果之前内部失败的。我没有作业日志,因此不断言具体的内部原因。可以确定的是:工作流把它归类为瞬时故障,其设计好的重试方式需要人工触发(@qwen-code /review),而修复位置会在 .github/workflows/qwen-code-pr-review.yml —— 那是审查机制本身,对本 PR 属于禁区,也不在其 footprint 之内。未做代码改动;需要机器人/维护者重试。 单独来看,重跑审查本身也有价值,因为它现在要审查的 diff 只有一个测试文件。

保留:上传卡死测试的去抖动修复,现已通过探针验证

scripts/tests/upload-aliyun-oss-assets.test.js 也会在常规 PR 门禁中运行(test:citest:scripts),并不只在 release lane 里跑,所以 #10765 的主机钉定并不能让它变得多余。它 400ms 的尝试超时与 node 的冷启动延迟存在竞争:spawnSync(..., { timeout, killSignal: 'SIGKILL' }) 从 spawn 那一刻开始计时,而 shim 的第一条语句正是测试要统计的 appendFileSync —— 因此如果 kill 在 node 完成启动之前落下,该次尝试的日志行就丢了。

在这台 64 核 runner 上的实测:

探针 结果
机制验证,timeout: 1ms ETIMEDOUT,写入日志行 0 条 —— kill 早于 appendFileSync,日志行丢失
无负载 node 冷启动(n=12) min 18ms / p50 20ms / max 24ms
128 个忙循环加压(n=12) min 34ms / p50 61ms / max 238ms —— 400ms 仅为最坏启动时间的约 1.7 倍
24 路并发钉在单 CPU,超时 400ms 96 次尝试中 58 次丢失日志行
同等压力下,超时 2000ms 48 次中 0 次丢失

对真实测试做的变异探针(守卫随后已恢复,并重跑至全绿):

  • attemptTimeoutMs 改回 400,在 vitest 与 20 个加压进程全部钉在 CPU 0 的条件下运行该单个测试 → 失败ENOENT: no such file or directory, open '/tmp/qwen-upload-hang-cpNvSy/ossutil.log',位于第 215 行。三次尝试都在首次写入之前被杀掉,日志文件根本不存在 —— 这比第一轮提交所描述的「计数偏少」更严重,也正是注释现在把两种症状都写出来的原因。
  • 在完全相同的压力下恢复为 2000通过,耗时 12166ms,落在该测试自身的 30s 预算之内(最坏情况为 3 × 2s 的 kill 加 2s + 4s 退避 = 12s)。

该测试中的注释已改写为陈述实测症状与算术依据,而不是原先较含糊的「在共享 runner 上远高于最坏子进程启动延迟」。

待维护者决定 —— PR 范围(不阻塞本轮)

#10765 合入之后,本 PR 已不再改动任何 CI 配置;它剩下的全部内容就是上传卡死测试的去抖动修复,而它的标题与正文仍然在描述「给 release scripts lane 的 Vitest worker 设上限」。是把 PR 重命名并收窄到这个去抖动修复,还是关闭它、把该修复放到后续 PR?

建议: 保持开启并重命名,例如 test(scripts): keep the upload-stall attempt bound above child-spawn latency (#10755)。这个去抖动修复已验证,与 #10765 正交,且只有一个文件 / +7 −1。

待维护者决定 —— [rc:3910422172] 去重建议

该线程保持未解决状态(已在其中回复)。main 的 #10765 让这四个变量在两条 lane 中仍然逐字节重复,并用断言字面量的契约测试固定了两份副本,所以审查者提出的漂移隐患依然适用于 main 的代码 —— 但现在要处理它,就意味着重构刚合入的 CI YAML 并重写那个测试。两个方向都站得住脚,而这个判断不该由我来做:要么保留 main 的显式重复(漂移由契约测试被动兜住),要么在对 main 的小型后续 PR 中去重。建议:如果确实想做,走后者 —— 不要放在本 PR 里。

遵守的边界

本 PR 已不再修改任何 .github/ 内容;净 diff 只有 scripts/tests/ 下的一个文件,属于普通测试代码。没有删除或削弱任何测试 —— 保留下来的改动只是抬高了一个超时上限,其断言(toHaveLength(3)toThrow(/ossutil failed after 3 attempts/))保持不变。提交均为追加式,未重写历史。本 checkout 中必须配置本地 git 身份(原先没有配置,git merge 无法创建提交);所用身份与该分支现有提交的身份一致。

验证(Verification)

以下是在合并后的树上真实执行过的命令,按顺序列出:

  • npm run build —— 通过(exit 0)
  • npm run typecheck —— 通过(exit 0)
  • npm run lint —— 通过(exit 0);执行两次,一次在冲突解决后,一次在注释修改后
  • npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/upload-aliyun-oss-assets.test.js scripts/tests/package-scripts.test.js scripts/tests/release-workflow.test.js —— 3 个文件 / 81 个测试全部通过(exit 0);执行两次,一次在冲突解决后,一次在注释修改后。之所以纳入两个 release 契约测试套件,是因为它们固定的正是本轮解决冲突的那个工作流文件。
  • npx prettier --check scripts/tests/upload-aliyun-oss-assets.test.js —— 通过(exit 0)
  • npm run generate:settings-schema —— 正常执行(exit 0),输出与合并进来的产物逐字节相同(packages/vscode-ide-companion/schemas/settings.schema.jsongit diff 为空),说明 main 带来的 schema 是最新的,无需额外提交。之所以检查,是因为 main 的 26 个提交改动了 packages/cli/src/config/settingsSchema.ts,而 CI 有一个 schema 新鲜度检查步骤,是 build/typecheck/lint/vitest 都看不到的。
  • 变异探针:attemptTimeoutMs 2000 → 400,在 20 路单 CPU 压力下运行单个测试 —— 如预期失败(第 215 行读取尝试日志时 ENOENT);在同等压力下恢复为 2000 —— 通过(12166ms)。
  • git status --short —— 干净,无未跟踪文件,无未合并路径。

未执行:npm run bundle 与集成测试套件。被改动的行为是 scripts/tests/ 下由 npm run test:scripts 执行的单元级测试,并非只能通过打包后的 CLI 或集成测试框架才能触达,因此打包并不会额外覆盖它。

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

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


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

@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 still running. Partially reviewed — gaps disclosed.

Not explored to full depth (tool budget reached): "agent 1b": none — ~10 tool calls used of the ~32 allowance; no check was cut short..

Not reviewed: reverse audit — stopped before round 1 by the review time budget.

中文说明

⚠️ 已从批准降级为评论:CI still running。 仅完成部分审查,审查缺口已披露。

未探索到全部深度(达到工具调用预算):"agent 1b"none — ~10 tool calls used of the ~32 allowance; no check was cut short.

未审查:反向审计——评审时间预算不足,未能开始第 1 轮。

— qwen3.8-max-2026-09-02 via Qwen Code /review (v0.22.3)

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator Author

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

Autofix review round: no action taken

This round produced no code change and no commit. Nothing in the feedback
names a defect, and the single non-green check is not attributable to this PR.

Feedback triage

[rv:5088610357] — automated reviewer, COMMENTEDnothing to address.
The review downgraded itself from Approve to Comment for one stated reason:
"CI still running." Its own ledger records findings: [] and posted: 0, so it
raised no correctness, security, build, or test finding against the diff. The two
coverage disclosures that accompany it (a tool-budget note and "reverse audit —
stopped before round 1") describe gaps in the reviewer's own pass; they are not
defect claims and not change requests. There is no inline thread to answer, so no
reply was posted.

The downgrade reason has since resolved on its own: the review ran against this
exact head SHA (5b10cc2c3b, matching the ledger sha) while the web-shell
smoke lane was still in flight. That lane has now completed.

No inline comments and no issue-level comments were present this round, so
there is nothing to resolve, decline, defer, or escalate.

The cancelled check

web-shell E2E Smoke (ubuntu-latest, Node 22.x) finished CANCELLED. This is a
job-timeout cancellation in a lane this PR does not touch, not a test failure:

  • It hit its own cap. The job declares timeout-minutes: 20
    (.github/workflows/ci.yml:769). It started 10:46:43Z and completed
    11:07:31Z — 20m48s. GitHub reports a job that exceeds timeout-minutes as
    CANCELLED, not FAILURE.
  • Its start was correctly gated, not cut short. It began 4 seconds after
    Test (ubuntu-latest, Node 22.x) finished SUCCESS at 10:46:39Z, exactly as
    its needs: [classify_pr, test] requires. Nothing upstream starved it.
  • The changed file is not in its execution path. That job's full command set
    is checkout, Node setup, dependency install, Playwright Chromium install,
    npm run test:e2e:smoke --workspace=packages/web-shell, and artifact upload.
    It never runs scripts/tests/upload-aliyun-oss-assets.test.js, which is the
    release-scripts lane exercised by the test job — and that job passed.
  • The PR cannot have shifted its inputs. The entire PR footprint is one test
    file (7 insertions, 1 deletion). git diff <merge-base> HEAD -- .github/ is
    empty, so the smoke job's definition and its 20-minute cap are byte-identical
    to the base branch. No manifest or lockfile changed, so the dependency install
    and Playwright steps resolve identically to base.

Every other reported check is SUCCESS (Test (ubuntu-latest, Node 22.x),
Integration Tests (no-AK, No Sandbox), Secret scan (TruffleHog),
Desktop Shell (ubuntu-22.04), Desktop Shell (windows-2022),
Post Coverage Comment) or SKIPPED by design. The remaining status entry,
qwen-autofix/dispatch-pending, is SUCCESS. The "Still-red checks" section is
empty, so nothing has persisted red from an earlier evaluation.

What this needs is a re-run of that lane, not a code change. The only lever
would be bounding or raising timeout-minutes in .github/workflows/ci.yml.
That file is outside this PR's footprint and is CI machinery this PR is not
about, so it was deliberately left alone rather than edited. Flagging it here so
a maintainer can re-run the lane, or address the smoke lane's 20-minute budget
separately if the cancellation recurs on branches that also do not touch it.

Diff growth

Net diff versus this counting window's baseline is source -6 / test -8 lines
against budgets of 400/400, with 0 prior rounds over budget. The PR is
net-negative this window, so no consolidation or subtraction was warranted. No
Growth audit required section was present, so no growth audit was performed.

Re-verification of the PR's existing content

Although no feedback requested a change, the single hunk was re-checked as a
skeptical reviewer rather than assumed correct, because it raises a timeout
constant and adds a rationale comment whose arithmetic is checkable:

  • The comment claims 2000ms keeps "three kills plus 6s of backoff" inside the
    test's 30s budget. Against the source this is exact: MAX_UPLOAD_ATTEMPTS = 3
    and INITIAL_BACKOFF_MS = 2000, with delayMs = 2000 * 2 ** (attempt - 1)
    applied only while attempt < 3, giving 2000 + 4000 = 6s of backoff plus
    3 x 2000ms = 6s of kills — 12s worst case against a 30s budget.
  • The claimed failure mechanism is real: the shim's first statement is
    appendFileSync, and the uploader kills with killSignal: 'SIGKILL', so a
    kill landing before that append loses the attempt's log line and breaks the
    toHaveLength(3) assertion. A 400ms bound is below plausible Node cold-start
    latency under contention; 2000ms is not.
  • Measured behaviour matches the arithmetic: the stall test ran 12013ms.

No new guard, branch, or behaviour was added this round, so no mutation probe was
applicable.

Verification

Commands actually run this round, and their results. No commit was made, so the
full build/typecheck/lint gate was not re-run locally; CI already ran it against
this exact head SHA.

  • git diff origin/main...HEAD — confirmed PR footprint is 1 file, 7+/1-
  • git diff <merge-base> HEAD -- .github/ — empty; CI machinery untouched by the PR
  • npx vitest run scripts/tests/upload-aliyun-oss-assets.test.js16 passed
    (stall test 12013ms, within its 30s budget)
  • Test (ubuntu-latest, Node 22.x) on head 5b10cc2c3bSUCCESS in CI
    (this lane covers build, lint, typecheck, and unit tests)
  • Integration Tests (no-AK, No Sandbox) on head 5b10cc2c3bSUCCESS in CI
  • Not run: npm run build, npm run typecheck, npm run lint, npm run bundle
    — no source changed this round, and CI executed the equivalents green on this
    SHA. The cancelled lane is a 20-minute Playwright browser job that is not
    runnable in this environment and is unrelated to the changed file.
中文说明

Autofix 审查轮次:未采取任何操作

本轮没有产生任何代码改动,也没有提交。反馈中没有指出任何缺陷,而唯一非绿色的检查项与本 PR 无关。

反馈分类

[rv:5088610357] —— 自动审查机器人,COMMENTED(仅评论)无需处理。
该审查将自己从「批准」降级为「评论」,只说明了一个理由:「CI 仍在运行」。它自己的记录台账显示 findings: []posted: 0,也就是说它没有针对 diff 提出任何正确性、安全性、构建或测试方面的问题。随附的两条覆盖率披露(一条工具调用预算说明,以及「反向审计——未能在时间预算内开始第 1 轮」)描述的是审查方自身流程的缺口,它们不是缺陷论断,也不是改动请求。由于没有对应的行内讨论串,因此未发布任何回复。

该降级理由此后已自行消解:审查是针对这个确切的 head SHA(5b10cc2c3b,与台账中的 sha 一致)运行的,当时 web-shell smoke 通道仍在执行中。该通道现已完成。

本轮没有行内评论,也没有 issue 级别的评论,因此没有需要解决、拒绝、延后或上报的内容。

被取消的检查项

web-shell E2E Smoke (ubuntu-latest, Node 22.x) 的最终结论是 CANCELLED(已取消)。这是本 PR 未触及的通道中的一次作业超时取消,而不是测试失败:

  • 它触及了自身的上限。 该作业声明了 timeout-minutes: 20.github/workflows/ci.yml:769)。它于 10:46:43Z 开始,于 11:07:31Z 结束——共 20 分 48 秒。GitHub 将超出 timeout-minutes 的作业报告为 CANCELLED,而不是 FAILURE
  • 它的启动是被正确门控的,而非被提前切断。 它在 Test (ubuntu-latest, Node 22.x)10:46:39ZSUCCESS 结束后的第 4 秒开始,完全符合其 needs: [classify_pr, test] 的要求。上游没有任何环节令其资源不足。
  • 被改动的文件不在它的执行路径中。 该作业的完整命令集合是:检出代码、配置 Node、安装依赖、安装 Playwright Chromium、执行 npm run test:e2e:smoke --workspace=packages/web-shell、上传产物。它从不运行 scripts/tests/upload-aliyun-oss-assets.test.js——后者属于由 test 作业执行的 release-scripts 通道,而那个作业是通过的。
  • 本 PR 不可能改变它的输入。 PR 的全部改动范围就是一个测试文件(新增 7 行,删除 1 行)。git diff <merge-base> HEAD -- .github/ 为空,因此 smoke 作业的定义及其 20 分钟上限与基线分支逐字节一致。没有改动任何 manifest 或 lockfile,所以依赖安装与 Playwright 步骤的解析结果与基线完全相同。

其余所有上报的检查项都是 SUCCESSTest (ubuntu-latest, Node 22.x)Integration Tests (no-AK, No Sandbox)Secret scan (TruffleHog)Desktop Shell (ubuntu-22.04)Desktop Shell (windows-2022)Post Coverage Comment),或按设计为 SKIPPED。剩下的那条状态条目 qwen-autofix/dispatch-pendingSUCCESS。「持续失败的检查项」一节为空,说明没有任何问题从上一次评估延续至今。

这里需要的是重跑该通道,而不是改动代码。 唯一的手段是在 .github/workflows/ci.yml 中限制或提高 timeout-minutes。该文件不在本 PR 的改动范围内,且属于本 PR 并不涉及的 CI 机制,因此我们刻意没有去编辑它。在此标出,以便维护者重跑该通道;如果这一取消在同样未触及它的分支上反复出现,也可以单独处理 smoke 通道的 20 分钟预算问题。

Diff 增长情况

相对于本计数窗口的基线,净 diff 为源码 -6 行 / 测试 -8 行,而预算为 400/400,此前没有任何轮次超出预算。本窗口内 PR 是净减少的,因此无需进行合并或删减。反馈中不存在 Growth audit required(需要增长审计)一节,因此未执行增长审计。

对 PR 现有内容的重新验证

虽然没有反馈要求改动,但这一处唯一的 hunk 仍以怀疑性审查者的视角重新核对过,而不是默认它正确——因为它提高了一个超时常量,并新增了一段其算术可被检验的理由说明:

  • 注释声称 2000ms 能把「三次 kill 加上 6 秒退避」控制在该测试 30 秒预算之内。对照源码,这个说法是精确的:MAX_UPLOAD_ATTEMPTS = 3INITIAL_BACKOFF_MS = 2000,且 delayMs = 2000 * 2 ** (attempt - 1) 仅在 attempt < 3 时生效,因此退避为 2000 + 4000 = 6 秒,加上 3 x 2000ms = 6 秒的 kill 等待——最坏情况 12 秒,对应 30 秒预算。
  • 其所声称的失效机制是真实存在的:shim 的第一条语句就是 appendFileSync,而上传器使用 killSignal: 'SIGKILL' 结束进程,所以若 kill 在该 append 之前落地,就会丢失这一次尝试的日志行,从而使 toHaveLength(3) 断言失败。400ms 的上限低于在资源竞争下 Node 冷启动可能的耗时;2000ms 则不会。
  • 实测行为与算术一致:该 stall 测试运行了 12013ms。

本轮没有新增任何守卫、分支或行为,因此不适用变异探针(mutation probe)。

验证(Verification)

本轮实际执行的命令及其结果。由于没有提交,完整的 build/typecheck/lint 门禁未在本地重跑;CI 已针对这个确切的 head SHA 执行过。

  • git diff origin/main...HEAD —— 确认 PR 改动范围为 1 个文件,7 增 1 删
  • git diff <merge-base> HEAD -- .github/ —— 为空;PR 未触及 CI 机制
  • npx vitest run scripts/tests/upload-aliyun-oss-assets.test.js —— 16 个测试通过(stall 测试 12013ms,在其 30 秒预算之内)
  • head 5b10cc2c3b 上的 Test (ubuntu-latest, Node 22.x) —— CI 中为 SUCCESS(该通道覆盖构建、lint、类型检查与单元测试)
  • head 5b10cc2c3b 上的 Integration Tests (no-AK, No Sandbox) —— CI 中为 SUCCESS
  • 未执行:npm run buildnpm run typechecknpm run lintnpm run bundle —— 本轮没有改动源码,且 CI 已在该 SHA 上绿色执行过等效检查。被取消的通道是一个 20 分钟的 Playwright 浏览器作业,在当前环境中无法运行,且与被改动的文件无关。

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


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

@wenshao

wenshao commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

@qwen-code /triage

@wenshao
wenshao enabled auto-merge September 2, 2026 12:03
@qwen-code-ci-bot

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

Copy link
Copy Markdown
Collaborator

Sandboxed verification: ✅ passed — merge-ready (agent verdict) - workflow run

Ran the PR in an isolated, token-free container: A/B against the base build, mock-free harness assertions, targeted gates. Advisory evidence for human reviewers — not a review, an approval, or a CI check.

Scripted assertions: 18 passed · 0 failed · 18 total

Flakiness gate: ✅ 1 changed test file(s) x 5 identical rounds, no divergence

中文 — 判定:✅ 通过 · 可合入(agent 判定)

沙箱验证在隔离、无凭证的容器中执行了该 PR 的代码(与 base 构建 A/B 对照、无 mock harness 断言、定向门禁)。仅作为评审证据,不构成评审、批准或 CI 检查

脚本断言:18 通过 · 0 失败 · 18 总计

抖动门:✅ 1 changed test file(s) x 5 identical rounds, no divergence

Verification report

PR #10760 deep verification — fix(release): cap Vitest workers in the quality_scripts lane (#10755)

Verdict: merge-ready — assertions: 18 pass / 0 fail / 18 total (all scripted; one probe miscalibration of the round excluded with its raw log preserved, see Methodology). Verified head: 5b10cc2c3b1f4a450e43f549c8b4b415c72052a9 (git rev-parse HEAD^2, matches headRefOid); base tip 5dc7547d4c7667d87a77126ad2b6a3c98a42ca2a (HEAD^1, merge-ref checkout; the snapshot's baseRefOid had drifted behind it). Environment: node:22-bookworm verify container, 64 cores, ambient load average ~190-200 during the round — a live sample of the ECS pool regime the PR targets.

中文摘要
  • 结论: merge-ready。18/18 脚本化断言通过,无阻塞性发现。
  • A/B: 在作者自述的"20 路单 CPU 争用"放大复现下,旧 400ms kill 上限 5/5 次丢失全部尝试日志(ossutil.log 从未创建,读日志 ENOENT),800ms 仅 1/5 通过;PR 的 2000ms 5/5 完整记录 3 次尝试,最坏墙钟 12.23s,低于测试 30s 预算(2.45× 余量)。真实 vitest 同争用下:400ms 单元格在测试自己的尝试计数断言处红,2000ms 单元格 16/16 绿(见 01-ladder-amplified.png02-vitest-head-green.png)。
  • 套件门禁: 车道形状的 4-worker 运行 75 个文件 72 过、3 个失败,全部归因于本验证容器而非 diff:install-script 因容器缺 zip(base 上逐字节相同地失败);check-tui 因容器以 root 只读挂载 .qwen 导致 mkdtemp EACCES(单命令证明,base worktree 可写即过);qwen-autofix 两个 30s 超时为负载抖动(head 与 base 单独重跑均绿)。被去竞态的 upload-aliyun-oss-assets.test.js 在套件内 16/16 通过(20.7s)。
  • 发现: 无阻塞性。两处对描述的更正(见下):合并后 HEAD 的实际增量只剩去竞态;worker 上限与契约测试由 main 的 fix(ci): isolate and bound release validation workloads #10765 先行落地。
  • 未覆盖: 逐提交归属(浅克隆 depth 2)、真实夜间发布运行、原失败 SHA 现场、Windows/macOS。

Scope selection

The PR title says "cap Vitest workers in the quality_scripts lane", but the branch's third commit merged main, whose #10765 had already landed the same cap as a superset; the merge resolved to main's shape. The effective diff at the merge HEAD is one file: scripts/tests/upload-aliyun-oss-assets.test.jsattemptTimeoutMs: 400 → 2000 plus an explanatory comment (git diff HEAD^1..HEAD, 7 insertions / 1 deletion). So:

  • Central claim: raising the per-attempt kill bound from 400ms to 2000ms eliminates the race where SIGKILL lands before the ossutil shim's first appendFileSync (losing the attempt's log line / never creating the log) under pool-load spawn latency — while keeping the timeout-and-retry semantics (kill far below the shim's 60s hang) and the worst case (3 kills + 6s backoff) inside the test's 30s budget.
  • Secondary claims: (1) the bound's worst case fits the 30s budget with margin; (2) the lane runs with bounded workers (inherited from base — verified as premise context, not as this PR's delta).
  • Out of scope by construction: everything else — the diff touches no production code, no workflow YAML, no other test.

Corrections to the PR narrative

  1. The effective delta is the deflake only. The worker-cap commits (bc66afd, 09c6e81) were superseded when the branch merged main: main's 7df5ac6898 (fix(ci): isolate and bound release validation workloads #10765) had already landed the same Vitest worker bound in both release test lanes plus its contract pin. At the merge HEAD, release.yml and package-scripts.test.js are byte-identical to base. The cap the title promises does exist at HEAD (via base): both Run Workspace Tests and Run Script Tests carry the four VITEST_* vars, and the contract test pins them (red/green legs re-driven below). Stated so a reviewer diffing the PR is not surprised.
  2. The description's reproduction framing ("a loaded multi-core host makes the difference visible") needs one sharpening, measured: ambient load alone (64 cores, load ~195) did not reproduce the race (5/5 full at 400ms); per-CPU contention does (deterministically, 5/5 ENOENT). Raw load is not the trigger; spawn-latency starvation on a contended core is. The nightly's ~64 workers on one host supply exactly that.

Central claim — A/B load-bearing proof

Mechanism: uploadWithRetry() runs spawnSync(..., { timeout: attemptTimeoutMs, killSignal: 'SIGKILL' }); backoff 2s + 4s (INITIAL_BACKOFF_MS * 2^(n-1)). The test's shim appends one log line at startup, then hangs 60s. A kill before the first appendFileSync loses that attempt's log entry — the test then reads ENOENT (no attempt wrote) or a short count while all three attempts ran.

Threshold ladder through the real code pathharness/01-threshold-ladder.mjs imports the real uploadAssets() and uses the test's own shim recipe; "amplified" = 20 spinners + taskset pinning to one CPU, the author's stated contention profile. Oracle: attempts observed in the log (3 = full). Witness: evidence/01-ladder-amplified.png (live re-run).

cell (regime / bound) attempts=3 failure mode max wall
natural / 400ms 5/5 7.23s
natural / 2000ms 5/5 12.04s
amplified / 400ms 0/5 ENOENT ×5 — log never created 7.48s
amplified / 800ms 1/5 short counts ×4 (1-2 of 3) 8.70s
amplified / 2000ms 5/5 12.23s

The race is real and deterministic at 400ms under the author's profile, 800ms still loses attempts, 2000ms is clean. Wall times match the nominal worst case 3T + 6s to within ~230ms total kill overshoot.

Vitest-level A/B — identical scenario, the actual test file, same amplified contention (logs/03-vitest-ab.log, witness evidence/02-vitest-head-green.png):

cell oracle result
base: 400ms (single-hunk revert in scratch copy) vitest exit / test status 1 failed / 15 passed, exit 1 — ENOENT: no such file or directory, open '/tmp/qwen-upload-hang-oMUFoy/ossutil.log' at the test's own attempt-count read (line 217)
head: 2000ms (PR HEAD) same 16 passed, exit 0, tests 24.18s

The base failure is the exact shape the PR describes, failing the intended assertion — not an import/fixture break.

Budget claim: 3 × 2000ms + (2s + 4s backoff) = 12.0s nominal; measured worst 12.23s under 20-way single-CPU contention; the test's own timeout is 30s (it(..., 30_000), suite testTimeout: 30_000). Margin 2.45×. The absolute ceiling for the constant while keeping the worst case ≤ 30s is ~8s (3×8+6=30), so the tuning band is (spawn-latency ceiling, ~8s) — 2s sits inside with headroom on both sides.

Premise context: the worker bound the title names (inherited from base)

Not this PR's delta, but verified since the fix story rests on it:

  • Vitest 3.2.7 natively reads VITEST_MAX_THREADS / VITEST_MIN_THREADS / VITEST_MAX_FORKS / VITEST_MIN_FORKS (node_modules/vitest/dist/chunks/coverage.DfSpMS-b.js), with if (process.env.X) truthiness — the workflow's empty value on non-ECS runners keeps defaults, matching the description.
  • Process census (harness/04b-worker-count-v2.sh, witness evidence/05-worker-census.png): same 10-file subset — unbounded arm peaks at 64 vitest node processes (~1 worker per core on this 64-core host: the nightly's failure regime); bounded arm (the lane's four vars) at 5 = node (vitest) main + workers 1-4, peak list recorded. maxForks=4 honored exactly.
  • Contract pin (from main, shipped at HEAD): deleting the env: block from Run Script Tests turns package-scripts.test.js > wires release quality checks red quoting the missing VITEST_MAX_THREADS line; restoring turns it green; tree restored clean (logs/05-contract-run.log). Reviewer Test Plan step 3 is executable as written.

Vacuity / mutation matrix (test-only change — does the suite still hold the behavior down?)

Witness: evidence/03-mutation-matrix.png; raw logs logs/04-mutation-retries.log, logs/05-mutation-nokill.log.

# mutation (scratch, restored) expected observed verdict
M1 production MAX_UPLOAD_ATTEMPTS 3→2 red at attempt-count assertion red 6.0s: expected … to throw … /after 3 attempts/ but got 'ossutil failed after 2 attempts' (line 215) caught
M2 production kill removed (timeout/killSignal dropped) red red 60.2s: expected [Function] to throw an error — without the kill the shim's own 60s keepalive expires and it exits 0, so the upload "succeeds" caught
M3 test constant reverted 2000→400 red under contention red: ENOENT cell above caught
control unmutated head green 16/16 green under the same amplified contention green

Every red quotes the intended behavioral assertion, not an import or fixture break; the positive controls land in the mutated file's own suite.

Mechanistic note from M2 (informational, not a defect): while spawnSync blocks synchronously, vitest's 30s test timeout cannot preempt the worker — the M2 mutant ran 60.2s before failing on the assertion. The explicit kill bound is therefore the only bound on this code path; the 30s timeout is not a safety net for it. As shipped the kill is present, so this is a property to keep in mind, not a finding.

Targeted gate

env VITEST_MAX_THREADS=4 VITEST_MIN_THREADS=1 VITEST_MAX_FORKS=4 VITEST_MIN_FORKS=1 npm run test:scripts (reviewer-plan step 1, lane-shaped): Test Files 3 failed | 72 passed (75), Tests 17 failed | 1961 passed (1978), exit 1, 396s (logs/10-full-suite.log, witness evidence/04-full-suite-summary.png). The deflaked upload-aliyun-oss-assets.test.js passes in-suite: 16 tests, 20.7s. (The PR's "73 files" predates two files main added; 75 collected at this head.)

The 3 failing files are attributed to this verify container, not the diff — A/A at HEAD^1 (logs/12-aa-base.log), head rerun (logs/13-head-rerun.log), and single-command probes (logs/14-env-probe.log), witness evidence/06-suite-attribution.png:

failing file head full-suite base A/A cause (proven)
install-script.test.js FAIL (file-level throw) identical FAIL zip binary missing on this image with CI=true; the test's own guard throws "zip/unzip missing on a CI host"
check-tui-dep-direction.test.js (13 tests) FAIL EACCES mkdtemp .../.qwen/gate-e2e-* passes .qwen is a root-owned read-only mount in this container (dr-xr-xr-x root); mkdtemp EACCES on the main tree, OK on a writable worktree — the diff never touches that path
qwen-autofix-workflow.test.js (2 tests) FAIL Test timed out in 30000ms passes load flake: green on head rerun and at base; failed only inside the 75-file/4-worker run under load ~195

Sibling sweep: grep across scripts/ for sub-second spawn timeouts found none — the 400ms figure in this test was the only spawn-race-prone bound in the tree; other timeout: users sit at 10-15s (5-7.5× the headroom proven sufficient here) and assert on exit status of run-to-completion children, not on first-write log counts.

Findings

None blocking. The two narrative corrections above are about the description, not the code.

Not covered

  • Per-commit attribution: checkout is depth 2 — only HEAD^2 reachable locally while $QWEN_VERIFY_CONTEXT lists 3 commits; the aggregate HEAD^1..HEAD diff was verified, individual commits were not (the two superseded ones no longer contribute to the diff).
  • The actual nightly release run — the PR's own stated absolute proof.
  • Reproduction on the original failing SHA of Release Failed for v0.22.3-nightly.20260902.77d41f48d3 on 2026-09-02 #10755: not reachable in this checkout. The reproduction here is of the mechanism (kill racing the shim's first write) on the fixed/unfixed constants, not of the nightly's exact victim set, which also included ESLint/workflow-replay tests whose failures the worker bound (from base) addresses — that bound is verified only to the extent of the premise context above, not re-proven against those suites' timeouts.
  • Windows / macOS: the changed test is platform-agnostic in mechanism (spawnSync + tmpdir) but only Linux was exercised; the lane itself is Linux.
  • Other npm run test:ci consumers (desktop/SDK/vscode-companion pipelines): untouched by the diff, as the description states.
  • The 3 container-attributed suite failures are reported as environmental with A/A + probe evidence; they would not fail on a runner with zip installed and a writable .qwen.

Methodology

Single round on the merge-ref checkout (HEAD = merge commit, HEAD^1 = base tip, HEAD^2 = PR head = headRefOid). Harnesses in harness/, raw logs in logs/: the ladder drives the real uploadAssets() from scripts/upload-aliyun-oss-assets.js with the test's own shim recipe (no mocks of the unit under test); amplified contention = 20 spinners + taskset pinning to one CPU, matching the commit message's "20-way single-CPU contention"; vitest cells ran the real suite config; mutations were scratch edits with byte-exact restore (git status --porcelain clean after each); the base worktree for A/A lived under tmp/ and is removed after the round. Assertion totals count only scripted checks that executed; expected base-cell failures are encoded as passes. The one probe miscalibration (first worker-census arm counting its own bash/npm/sh wrapper processes, reading 7 where vitest node processes were main+workers) is excluded in assertions.json with its raw log preserved and replaced by the corrected census (04b-worker-count-v2.log).

Flakiness gate log

rounds=5 files=1 skipped=0
file scripts/tests/upload-aliyun-oss-assets.test.js: (cd .) npx --no-install vitest run --config ./scripts/tests/vitest.config.ts ./scripts/tests/upload-aliyun-oss-assets.test.js


per-file results (P=pass F=fail I=infra-exit, one letter per run):
  scripts/tests/upload-aliyun-oss-assets.test.js: PPPPP

verdict: pass
summary: 1 changed test file(s) x 5 identical rounds, no divergence

--- per-invocation detail (full copy in the artifact) ---
round 1 · scripts/tests/upload-aliyun-oss-assets.test.js: P (exit 0)
round 2 · scripts/tests/upload-aliyun-oss-assets.test.js: P (exit 0)
round 3 · scripts/tests/upload-aliyun-oss-assets.test.js: P (exit 0)
round 4 · scripts/tests/upload-aliyun-oss-assets.test.js: P (exit 0)
round 5 · scripts/tests/upload-aliyun-oss-assets.test.js: P (exit 0)

Evidence images

01-ladder-amplified

02-vitest-head-green

03-mutation-matrix

04-full-suite-summary

05-worker-census

06-suite-attribution

Harness scripts and raw logs are in the workflow run artifacts (7-day retention).

Qwen Code · sandboxed verification

@qwen-code-dev-bot

Copy link
Copy Markdown
Collaborator Author

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

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

Autofix review round: no action taken

This round produced no code change and no commit. The head stays at
5b10cc2c3b. Nothing in the feedback names a defect or requests a change, and
no check is red.

Feedback triage

[ic:5509227034] — qwen-code-ci-bot, issue-levelnothing to address.
This is the bot's own lifecycle marker: <!\-\- qwen-triage:verify-state=running --> plus "Sandboxed verification is running … The report will be posted here
when the run completes." It is a status placeholder for a run that is still in
flight, not a review finding. It carries no correctness, security, build, or
test claim against the diff, and it asks for nothing. The verification run it
points at (33627859135)
owns its own report and will edit this marker when it finishes; this loop
neither pre-empts nor duplicates that.

The maintainer command that dispatched this round. @qwen-code /triage
(ic:5509218710, wenshao, 12:03:33Z) is a slash command addressed to the
triage/verification pipeline, not review feedback. The workflow's filter
correctly kept it out of the actionable sections. It contains no defect claim
and no change request, so there is nothing here to implement, decline, defer,
or escalate.

No reviews and no inline comments were present this round, so there is no
thread to resolve and no comment-replies.json to post. Both earlier inline
threads were already answered in round 2.

Checks: none failed

feedback.md lists no failed checks and no still-red checks. Of the 82 check
entries on this head, 21 are SUCCESS, 58 are SKIPPED by design, one is this
round's own review-address job still IN_PROGRESS, and exactly one is
non-green:

web-shell E2E Smoke (ubuntu-latest, Node 22.x)CANCELLED. This is a
job-timeout cancellation in a lane this PR does not touch, not a test failure:

  • It hit its own declared cap. The job sets timeout-minutes: 20
    (.github/workflows/ci.yml:769). It started 10:46:43Z and completed
    11:07:31Z — 20m48s. GitHub reports a job that exceeds timeout-minutes as
    CANCELLED, not FAILURE.
  • Its start was correctly gated, not starved. It began 4 seconds after
    Test (ubuntu-latest, Node 22.x) finished SUCCESS at 10:46:39Z, exactly
    as its needs: [classify_pr, test] requires.
  • The PR is not in its execution path. That lane runs checkout, Node setup,
    dependency install, Playwright Chromium install,
    npm run test:e2e:smoke --workspace=packages/web-shell, and artifact upload.
    It never runs scripts/tests/upload-aliyun-oss-assets.test.js, which is this
    PR's only changed file — and the lane that does run it (Test) passed.
  • The PR cannot have shifted its inputs. git diff <merge-base> HEAD -- .github/ is empty, so the smoke job's definition and its 20-minute cap are
    byte-identical to base. No manifest or lockfile changed, so dependency
    install and the Playwright download resolve identically to base.

A maintainer can clear it by re-running that one cancelled job; nothing in the
diff would behave differently on a retry.

Head health

The current head already carries green evidence from CI and from a local run
this round:

  • build-cli (Qwen Autofix) — SUCCESS on this head, 12:04:45Z → 12:12:17Z
  • Test (ubuntu-latest, Node 22.x)SUCCESS
  • Integration Tests (no-AK, No Sandbox)SUCCESS
  • Secret scan (TruffleHog), Desktop Shell (ubuntu-22.04),
    Desktop Shell (windows-2022), Dependency CVE auditSUCCESS
  • The PR's only changed test file, run locally this round — 16/16 passed,
    including the deflaked case in 12.0s against its 30s budget

PR shape after the merge with main

Worth restating for a reader arriving now: main's
a0096eb5d6 fix(ci): make shared ECS Vitest concurrency tunable (#10667)
superseded this PR's earlier .github/workflows/ci.yml worker-bound approach
with VITEST_MAX_THREADS / VITEST_MAX_FORKS driven by a repository variable.
The round-2 merge resolution therefore kept main's version, and the PR's
surviving contribution is the upload-stall deflake in
scripts/tests/upload-aliyun-oss-assets.test.js (attemptTimeoutMs: 400 → 2000, plus the comment recording why 400ms lost attempt log lines under CPU
contention). Net footprint vs the merge base is one test file, 7 insertions and
1 deletion. That is also why this window's growth reads negative
(source −6 / test −8): the merge removed the superseded CI hunk rather than
adding anything.

Verification

Commands actually run this round (no source change, so no build/typecheck/lint
was required — CI already built this exact head):

  • git diff --stat $(git merge-base origin/main HEAD) HEAD — 1 file changed,
    7 insertions(+), 1 deletion(-): scripts/tests/upload-aliyun-oss-assets.test.js
  • git diff --name-only $(git merge-base origin/main HEAD) HEAD -- .github/
    empty (PR touches no CI machinery)
  • git status --short — clean; HEAD = 5b10cc2c3b = origin/autofix/issue-10755
  • npx vitest run scripts/tests/upload-aliyun-oss-assets.test.js16 passed
    (1 file)
    , 25.09s
  • Read-only inspection of .github/workflows/ci.yml:757-769 (smoke lane
    needs/timeout-minutes) and checks.json (82 entries; conclusions
    tabulated above)

No commit was created, no file was modified, and no review thread was resolved.

中文说明

Autofix 评审轮次:未采取任何行动

本轮没有产生任何代码改动,也没有提交。head 仍停留在 5b10cc2c3b。反馈中没有任何一条指出缺陷或要求改动,也没有任何检查处于失败状态。

反馈分类

[ic:5509227034] — qwen-code-ci-bot,issue 级评论无需处理。
这是机器人自身的生命周期标记:<!\-\- qwen-triage:verify-state=running --> 加上「沙箱验证正在运行……运行结束后验证报告会发布在这里」。它是一个仍在执行中的运行的状态占位符,不是评审发现。它没有针对 diff 提出任何正确性、安全性、构建或测试方面的论断,也没有提出任何要求。它所指向的验证运行(33627859135)自己负责发布报告,并会在完成时编辑这个标记;本循环既不会抢先、也不会重复它的工作。

触发本轮的维护者命令。 @qwen-code /triage(ic:5509218710,wenshao,12:03:33Z)是一条发给 triage/验证流水线的斜杠命令,不是评审反馈。工作流的过滤器已正确地把它排除在可执行区块之外。它不包含缺陷论断,也不包含改动要求,因此这里没有需要实现、拒绝、延后或上报的内容。

本轮没有评审(reviews),也没有行内评论(inline comments),因此没有需要 resolve 的讨论串,也不需要发布 comment-replies.json。此前两条行内讨论串已在第 2 轮回复完毕。

检查状态:没有失败项

feedback.md 中没有列出任何失败检查,也没有列出任何持续标红的检查。当前 head 上的 82 条检查记录中,21 条为 SUCCESS,58 条按设计为 SKIPPED,1 条是本轮自身仍在 IN_PROGRESSreview-address 作业,只有 1 条不是绿色:

web-shell E2E Smoke (ubuntu-latest, Node 22.x)CANCELLED 这是本 PR 未触及的通道上的作业超时取消,不是测试失败:

  • 它触发了自身声明的上限。 该作业设置了 timeout-minutes: 20.github/workflows/ci.yml:769)。它于 10:46:43Z 开始、11:07:31Z 结束——共 20 分 48 秒。GitHub 会把超过 timeout-minutes 的作业报告为 CANCELLED,而不是 FAILURE
  • 它的启动是被正确门控的,而不是被饿死的。 它在 Test (ubuntu-latest, Node 22.x)10:46:39ZSUCCESS 结束后的 4 秒开始,完全符合其 needs: [classify_pr, test] 的要求。
  • 本 PR 不在它的执行路径上。 该通道运行的是 checkout、Node 环境准备、依赖安装、Playwright Chromium 安装、npm run test:e2e:smoke --workspace=packages/web-shell 以及产物上传。它从不运行 scripts/tests/upload-aliyun-oss-assets.test.js——而那正是本 PR 唯一改动的文件;真正运行它的通道(Test)已通过。
  • 本 PR 不可能改变它的输入。 git diff <merge-base> HEAD -- .github/ 为空,因此该 smoke 作业的定义及其 20 分钟上限与 base 分支逐字节一致。没有 manifest 或 lockfile 改动,因此依赖安装与 Playwright 下载步骤的解析结果与 base 相同。

维护者可以通过重跑这一个被取消的作业来清除该状态;重试时 diff 中的任何内容都不会表现不同。

head 健康状况

当前 head 已经具备来自 CI 以及本轮本地运行的绿色证据:

  • build-cli(Qwen Autofix)——在此 head 上 SUCCESS12:04:45Z → 12:12:17Z
  • Test (ubuntu-latest, Node 22.x) —— SUCCESS
  • Integration Tests (no-AK, No Sandbox) —— SUCCESS
  • Secret scan (TruffleHog)Desktop Shell (ubuntu-22.04)Desktop Shell (windows-2022)Dependency CVE audit —— SUCCESS
  • 本轮本地运行了 PR 唯一改动的测试文件——16/16 通过,其中被去抖动(deflake)的用例耗时 12.0 秒,处于其 30 秒预算之内

与 main 合并后的 PR 形态

为现在才来看的读者重述一遍:main 上的 a0096eb5d6 fix(ci): make shared ECS Vitest concurrency tunable (#10667) 已经用由仓库变量驱动的 VITEST_MAX_THREADS / VITEST_MAX_FORKS 取代了本 PR 早先在 .github/workflows/ci.yml 中的 worker-bound 方案。因此第 2 轮的合并冲突解决保留了 main 的版本,本 PR 存续下来的贡献是 scripts/tests/upload-aliyun-oss-assets.test.js 中的上传卡死去抖动改动(attemptTimeoutMs: 400 → 2000,外加一条注释,记录 400ms 为何会在 CPU 争用下丢失尝试日志行)。相对 merge base 的净改动范围是一个测试文件,7 行新增、1 行删除。这也是本窗口增长读数为负(源码 −6 / 测试 −8)的原因:合并移除了已被取代的 CI 改动块,而没有新增任何内容。

验证

本轮实际执行的命令(没有源码改动,因此不需要 build/typecheck/lint——CI 已经构建了这个确切的 head):

  • git diff --stat $(git merge-base origin/main HEAD) HEAD —— 1 个文件改动,7 行新增(+)、1 行删除(-):scripts/tests/upload-aliyun-oss-assets.test.js
  • git diff --name-only $(git merge-base origin/main HEAD) HEAD -- .github/ —— 为空(PR 未触及任何 CI 机制)
  • git status --short —— 干净;HEAD = 5b10cc2c3b = origin/autofix/issue-10755
  • npx vitest run scripts/tests/upload-aliyun-oss-assets.test.js —— 16 通过(1 个文件),25.09 秒
  • 只读检查 .github/workflows/ci.yml:757-769(smoke 通道的 needstimeout-minutes)与 checks.json(82 条记录;结论已在上文列表化)

本轮未创建提交、未修改任何文件、也未 resolve 任何评审讨论串。

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


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

@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Code review

Independent proposal first: for an attempt-count shortfall caused by kills racing child-process startup under load, the minimal fix is to widen the test's attemptTimeoutMs so the shim has time to write its log line before the kill — while staying far below the simulated 60 s stall so the timeout remains what terminates each attempt. The diff matches that proposal exactly; I found nothing simpler that preserves what the test asserts.

Verified against the code at the reviewed commit:

  • uploadWithRetry passes attemptTimeoutMs to spawnSync as timeout + SIGKILL. Node's spawnSync timeout runs from spawn, so it includes child startup — under the documented pool conditions (64 cores, load ~120) node startup alone can exceed 400 ms, and the kill then lands before the shim's first appendFileSync, losing that attempt's log line (or the whole log file). That is exactly the 1-of-3 / 2-of-3 shortfall the nightly reproductions saw.
  • Budget math holds at 2 s: 3 attempts × 2 s + backoff of 2 s and 4 s (INITIAL_BACKOFF_MS = 2000, doubling) = 12 s worst case, inside the test's 30 s bound.
  • 2000 ms stays far below the shim's 60 s hang, so the stall-kill semantics under test are unchanged. The sibling test's 5 s bound is untouched.
  • The added comment documents a genuinely non-obvious failure mode and the budget math — it earns its place.

No blockers, no AGENTS.md violations.

Testing (the PR's own CI, fetched via API — no PR code was run in this review)

Check Conclusion
Test (ubuntu-latest, Node 22.x) ✅ success
Desktop Shell (ubuntu-22.04) ✅ success
Desktop Shell (windows-2022) ✅ success
Integration Tests (no-AK, No Sandbox) ✅ success
Secret scan (TruffleHog) ✅ success
Dependency CVE audit ✅ success
Classify PR ✅ success
Post Coverage Comment (ubuntu-latest, 22.x) ✅ success
web-shell E2E Smoke (ubuntu-latest, Node 22.x) ⚠️ cancelled (20-min job timeout)
Test (macos-latest / windows-latest, Node 22.x) ⏭️ skipped
Integration Tests (CLI, No Sandbox) ⏭️ skipped
  • Test (ubuntu-latest, Node 22.x) is the load-bearing check here: npm run test:ci chains npm run test:scripts, so the changed test ran in this job — green.
  • web-shell E2E Smoke hit its 20-minute job timeout (timeout-minutes: 20; ran 10:46–11:07 UTC and was killed mid-browser-suite). Classified environmental, not PR-caused: the diff touches nothing in web-shell's bundle or test path, and the same job is green in the 8 most recent successful runs of this workflow. This cancelled job is why the overall run conclusion reads cancelled — a maintainer job re-run needs to land green for branch protection.
  • The macOS/Windows unit legs and the sandboxed CLI integration leg were skipped (Linux-only change; the no-AK integration lane covered the rest).

Sandboxed lanes (@qwen-code /verify, @qwen-code /tmux): not applicable — there is no production-behavior claim to settle; the changed test itself is the artifact, and it ran green in the PR's own CI. The one uncertainty no single CI run can settle is the flake rate under sustained pool load — the definitive proof is the next nightly release run, as the PR itself notes.

中文说明

代码审查

先给出独立方案:对于"负载下 kill 与子进程启动竞态导致尝试次数偏少"的问题,最小修复就是把测试的 attemptTimeoutMs 放宽,让 shim 在被 kill 前有时间写入日志——同时保持远低于模拟的 60 秒挂起,使超时仍是终止每次尝试的原因。diff 与该方案完全一致;没有更简单且能保留断言语义的做法。

在受审提交上逐点核实:

  • uploadWithRetryattemptTimeoutMstimeout + SIGKILL 传给 spawnSync。Node 的 spawnSync 超时从 spawn 开始计时,包含子进程启动——在已记录的资源池条件下(64 核、负载约 120),仅 node 启动就可能超过 400 毫秒,kill 会先于 shim 的第一条 appendFileSync 落下,丢失该次尝试的日志行(甚至整个日志文件)。这正是夜间复现中 3 次只记录到 1 次 / 2 次的原因。
  • 2 秒的预算成立:3 次尝试 × 2 秒 + 2 秒和 4 秒的退避(INITIAL_BACKOFF_MS = 2000,倍增)= 最坏 12 秒,在测试 30 秒上限之内。
  • 2000 毫秒仍远低于 shim 的 60 秒挂起,被测的卡死-kill 语义不变。相邻测试的 5 秒上限未受影响。
  • 新增注释记录了一个确实不直观的失败模式和预算计算——有价值。

无阻塞问题,无 AGENTS.md 违规。

测试(来自 PR 自身 CI 的 API 数据——本审查未运行任何 PR 代码)

CI 表格见上方标记区域。要点:

  • Test (ubuntu-latest, Node 22.x) 是此处的关键检查:npm run test:ci 会串联 npm run test:scripts,被修改的测试就在该任务中运行——通过。
  • web-shell E2E Smoke 触发了其 20 分钟任务超时(运行 10:46–11:07 UTC,在浏览器测试中途被终止)。判定为环境问题,非本 PR 导致:diff 未触及 web-shell 的打包产物或测试路径,且该任务在最近 8 次成功的工作流运行中全部为绿。正是这个被取消的任务使整体运行结论显示为 cancelled——需要维护者重跑该任务并通过,才能满足分支保护。
  • macOS/Windows 单元测试分支和带沙箱的 CLI 集成分支被跳过(Linux-only 改动;no-AK 集成分支已覆盖其余部分)。

沙箱验证通道(@qwen-code /verify@qwen-code /tmux):不适用——没有需要裁决的生产行为变化;被修改的测试本身就是改动对象,且已在 PR 自身 CI 中通过。唯一无法由单次 CI 运行裁决的不确定性是持续资源池负载下的 flake 率——最终证明是下一次夜间发布运行,PR 自己也这样说明。

Qwen Code · qwen3.8-max

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

@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Confidence: 4/5 — clean, mechanism-verified one-knob test stabilization; the two nits are the stale title/body (the headline fix was absorbed by #10765) and the unrelated web-shell smoke timeout needing a job re-run.

Reflection: this PR had an unusual lifecycle — opened as the full fix for the #10755 nightly failure, then main absorbed the worker-cap half through #10765 while it was in review. The question for this pass is whether the remaining delta still earns its keep, and it does: main still carries the 400 ms kill bound that raced child startup on the loaded pool (observed twice in the reproductions as 1-of-3 and 2-of-3 attempt counts), and nothing else is queued to fix it. The change is exactly what I would have proposed — widen the bound to 2 s, keep it far below the simulated 60 s stall so the kill remains the thing under test, and document the budget math. Every line in the diff is necessary; no drive-bys.

Two named nits, neither blocking:

  1. The title and body still describe the full original fix. Rescoping them to the remaining delta before merge would keep the merge commit honest — the worker cap now belongs to fix(ci): isolate and bound release validation workloads #10765's history.
  2. The web-shell E2E Smoke job timed out on this commit through no fault of the diff (analysis in my review comment); it needs a maintainer re-run to satisfy branch protection.

Verdict: approve, pinned to the reviewed commit.

中文说明

置信度:4/5 —— 干净、机制已核实的一行参数测试稳定化改动;两个小问题是过时的标题/正文(重头修复已被 #10765 吸收)以及与本改动无关的 web-shell smoke 超时需要重跑。

反思:这个 PR 的生命周期不寻常——作为 #10755 夜间发布失败的完整修复提交,随后在评审期间,worker 上限部分被 #10765 合入 main。本轮要回答的问题是剩余增量是否仍然有价值,答案是肯定的:main 上仍然存在那个在负载资源池上与子进程启动竞态的 400 毫秒 kill 上限(复现中两次观测到 3 次只记录 1 次和 2 次),且没有其他排在队列中的修复。这个改动与我会提出的方案完全一致——把上限放宽到 2 秒,保持远低于模拟的 60 秒挂起使 kill 仍是被测对象,并记录预算计算。diff 中每一行都是必要的;没有顺手改动。

两个不阻塞的小问题:

  1. 标题与正文仍描述完整的原始修复。合并前重新界定为剩余增量,可以让 merge commit 保持准确——worker 上限现在属于 fix(ci): isolate and bound release validation workloads #10765 的历史。
  2. web-shell E2E Smoke 任务在本提交上超时,但并非本 diff 所致(分析见我的评审评论);需要维护者重跑以满足分支保护。

结论:批准,锚定在受审提交上。

Qwen Code · qwen3.8-max

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

@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.

LGTM, looks ready to ship. ✅

@wenshao
wenshao added this pull request to the merge queue Sep 2, 2026
Merged via the queue into main with commit 11edd1a Sep 2, 2026
108 of 109 checks passed
@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Released in v0.23.0.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release Failed for v0.22.3-nightly.20260902.77d41f48d3 on 2026-09-02

4 participants