Skip to content

feat(review): carry direction/baseline axes so the convergence floor can defer a Critical - #10301

Merged
wenshao merged 6 commits into
mainfrom
feat/review-critical-axes
Aug 28, 2026
Merged

feat(review): carry direction/baseline axes so the convergence floor can defer a Critical#10301
wenshao merged 6 commits into
mainfrom
feat/review-critical-axes

Conversation

@wenshao

@wenshao wenshao commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

What this PR does

A confirmed Critical now carries two decision axes the verifier reads off the witness that confirmed it: its directioncertifies-falsely (the code produces a wrong result it presents as correct: a wrong output, a silent corruption, a bypassed check, a decision taken over state nobody read) or fails-closed (it refuses, wedges, crashes or degrades to its own absence without producing a wrong result) — and its baselineregression (the merge base handled the trigger correctly and this change breaks it) or new-surface (the failing path does not exist at the merge base; the change adds the feature, the defense or the branch the defect lives in). The axes travel as optional fields in the findings artifact and the in-band findings report, as bracket tags on the posted comment's claim line right after the finding id, and as one-letter fields in the ledger marker, so the next round's work-list table shows Critical (fails-closed, new-surface) beside a carried entry.

The convergence posture reads them. At a floor resolved to critical (explicit, auto from round 6, or the flat-trend trigger), a Critical that is fails-closed and new-surface is recorded as a deferral exactly like a Suggestion: the deferral list names it as a Critical with its tags, the header says why, and it stays follow-up work in the findings artifact under its own deferral id. Every other Critical posts as before — the wrong-result direction at either baseline, a regression in either direction, and any Critical whose axes are missing or contradict each other. The rounds-2–5 code-age rule never touches a Critical. The typed deferral channel honours a Critical entry only when the floor is actually in effect and relocates it into the body otherwise; the enforcement backstop moves a drafted Critical whose claim line carries both tags, keeps the inline counts honest per severity, and names the move by severity in the body disclosure, the verdict line and the submit report. The verifier brief defines both axes and tells the verifier to omit an axis its witness cannot settle rather than guess — an unclassified Critical posts at any floor.

Why it's needed

On #9659 the convergence floor stopped filtering at round 17 and the loop oscillated to round 23 — 7, 5, 3, 5, 4, 1, 6 new Criticals per round with near-zero false positives — because Critical encoded three orthogonal merge decisions in one bit. About six of those findings certified falsely and were worth blocking on; the other ~19 were fail-closed corners on defenses added in earlier rounds, zero-regression against the merge base — the right grade for issue priority, the wrong one for a merge gate. With the two axes carried as data the floor can let exactly those through as recorded follow-ups while still blocking on every wrong-result finding and every regression; replaying rounds 17–23 under the rule, the loop plausibly settles around round 19. The trigger-frequency axis the issue marks optional is not carried (a "corner" is a judgement no witness settles), and no issue is auto-filed — the review's only write path stays the review submission.

Reviewer Test Plan

How to verify

  • Unit: cd packages/cli && npx vitest run src/commands/review/compose-review.test.ts src/commands/review/lib/ledger.test.ts src/commands/review/findings.test.ts src/commands/review/submit.test.ts src/commands/review/pr-context.test.ts src/commands/review/agent-prompt.test.ts and cd packages/core && npx vitest run src/tools/report-findings.test.ts src/skills/bundled/review/SKILL.test.ts. The new cases pin the deferral/relocation matrix per axis combination, every floor arm where a Critical must relocate (round 1 and the code-age rounds under auto, the explicit suggestion floor, an absent floor, context-unavailable), the backstop's Critical arm (untagged, half-tagged and self-contradicting claims stay inline; a [probe]-confirmed moved Critical keeps its source), the ledger stamping wherever the tags sit on the line, the closure mint treating a deferred Critical that bears its id as a re-post rather than a fix, and the artifact and the report tool refusing a misspelled axis.
  • End to end on the real bundle, no model in the loop: a fake GitHub behind a gh shim on PATH, a hand-written plan and previous-round side file, and the subcommands run in sequence. Expected: at round 7 under auto, compose moves the [fails-closed] [new-surface] Critical and the Suggestion (floorEnforced [1, 2]), the certifies-falsely Critical posts and the marker records it with "d":"c","b":"n"; submit posts only that one inline comment and names the moved Critical by its axes on stderr; pr-context recovers the marker into the side file with d/b and renders Critical (certifies-falsely, new-surface) in the work-list table; at round 8 a fails-closed/regression typed entry is relocated (posts, its axes stamped into the marker) while the fails-closed/new-surface one defers; at round 3 the same entry is relocated with no unlicensed-deferral cap. The verbatim outputs are in the E2E comment on this PR.

Evidence (Before & After)

Before: a Critical entry in the deferral channel was always relocated (relocated from the deferral channel — a Critical is never deferred, it posts), a drafted **[Critical]** comment was never moved by the floor, the marker carried no classification, and the verdict line read N non-Critical finding(s) deferred.

After (round 7 of the E2E, verbatim): marker {"v":1,"round":7,"findings":[{"id":"R7-1","sev":"C","d":"c","b":"n","file":"src/stop.ts","line":30,"title":"…"}],"posted":1,"floor":"c","fresh":1,"prevPosted":2,"src0":40}; deferral line src/submodule.ts:8 — [review] Critical [fails-closed] [new-surface] A dirty submodule pointer wedges the incremental round for ever…; header …recorded, not requested in this round; 2 Critical(s) among them are deferred by their axes — fails-closed on new surface…; enforcement note 1 Suggestion(s) and 1 fails-closed, new-surface Critical(s) were drafted inline past the resolved critical posting floor…; verdict line Verdict: Comment — … — 3 finding(s) deferred under the convergence posture (listed in the body) — 2 of those moved by CLI floor enforcement…; next-round work-list row | R7-1 | Critical (certifies-falsely, new-surface) | src/stop.ts:30 | … |. No TUI surface changes: N/A.

Tested on

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

Environment (optional)

npm run build && npm run bundle, then node dist/cli.js review … from a fixture project with an isolated QWEN_HOME and a gh shim on PATH; unit tests via vitest; npm run typecheck and eslint on the changed files.

Risk & Scope

  • Main risk or tradeoff: a wrongly stated fails-closed/new-surface pair takes a blocker off the pull request at the critical floor. Mitigations: both axes must be present, the verifier is told to omit rather than guess, a self-contradicting claim line reads as unclassified, the artifact and the typed channel refuse a misspelled value, the tags are read off the claim line only (never the body's writable tail), the split reads the enforcement resolution of the floor, and the deferral is disclosed by severity in the body, the verdict line and the submit report.
  • Not validated / out of scope: the model-side half (the verifier stating the axes, the orchestrator copying the tags onto the claim line) is pinned by the brief and SKILL tests but not exercised end to end; the Web Shell ignores the new fields; no follow-up issue is filed automatically; the trigger-frequency axis is not carried.
  • Breaking changes / migration notes: none. Markers and artifacts written before the fields read as unclassified (posts at any floor). Wording changes: the verdict line says finding(s) deferred instead of non-Critical finding(s) deferred, the enforcement notes in the body and on submit's stderr count moved Suggestions and moved Criticals separately, and the relocation note no longer claims a Critical is never deferred.

Linked Issues

Closes #10291. Related: #9905 (divergence sentinel), #9907 (the autofix guardrail that wants to key on the machine-readable field).

中文说明

这个 PR 做了什么

一条经确认的 Critical 现在携带两个决策轴,由 verifier 从确认它的 witness 中读出:方向(direction)——certifies-falsely(代码产出一个被当作正确的错误结果:错误输出、静默损坏、被绕过的检查、在无人读过的状态上做出的决定)或 fails-closed(拒绝、楔死、崩溃或退化为功能不存在,但不产出错误结果)——以及基线(baseline)——regression(merge base 本来能正确处理该触发条件,是本改动把它弄坏了)或 new-surface(失败路径在 merge base 上根本不存在;是本改动新增了该缺陷所在的功能、防御或分支)。两轴以可选字段随 findings 工件和带内 findings 报告传递,以方括号 tag 紧跟 finding id 出现在已发布评论的 claim line 上,并以单字母字段写入 ledger marker,因此下一轮的工作表会在被携带条目旁显示 Critical (fails-closed, new-surface)

收敛姿态读取这两轴。在地板解析为 critical 时(显式指定、auto 自第 6 轮起、或平坦趋势触发),同时满足 fails-closed new-surface 的 Critical 会像 Suggestion 一样被记录为 deferral:推迟清单把它标为 Critical 并带上 tag,标题说明原因,它以自己的 deferral id 留在 findings 工件里作为后续工作。其余所有 Critical 照旧发布——错误结果方向在任一基线下、regression 在任一方向下、以及任何轴缺失或自相矛盾的 Critical。第 2–5 轮的 code-age 规则从不触碰 Critical。类型化 deferral 通道只在地板确实生效时才认可一条 Critical 条目,否则把它 relocate 回正文;强制执行 backstop 会移走 claim line 同时带两个 tag 的已起草 Critical,按严重度保持行内计数诚实,并在正文披露、verdict 行和 submit 报告里按严重度说明这次移动。verifier brief 定义了两轴,并要求 verifier 在 witness 无法判定某一轴时省略而不是猜测——未分类的 Critical 在任何地板下都发布。

为什么需要

#9659 上,收敛地板从第 17 轮起就不再起过滤作用,循环一直震荡到第 23 轮——每轮新增 Critical 为 7、5、3、5、4、1、6,误报接近零——因为 Critical 把三个正交的合并决策编码在一个位里。其中约六条属于错误认证,值得拦下;其余约 19 条是打在前几轮新增防御上的 fail-closed 角落,相对 merge base 零回归——对 issue 优先级而言评级正确,对合并门禁而言评级错误。两轴作为数据携带后,地板恰好可以把这些放行为有记录的后续工作,同时仍然拦下每一条错误结果与每一处回归;按此规则重放第 17–23 轮,循环大概率在第 19 轮左右安静下来。issue 中标为可选的触发频率轴没有携带("冷门"不是任何 witness 能判定的),也不会自动开 issue——评审唯一的写路径仍是提交评审本身。

评审者测试计划

如何验证

  • 单元测试:cd packages/cli && npx vitest run src/commands/review/compose-review.test.ts src/commands/review/lib/ledger.test.ts src/commands/review/findings.test.ts src/commands/review/submit.test.ts src/commands/review/pr-context.test.ts src/commands/review/agent-prompt.test.tscd packages/core && npx vitest run src/tools/report-findings.test.ts src/skills/bundled/review/SKILL.test.ts。新增用例钉住:按轴组合的推迟/relocate 矩阵;Critical 必须 relocate 的每个地板分支(auto 下第 1 轮与 code-age 轮次、显式 suggestion 地板、地板缺失、context-unavailable);backstop 的 Critical 分支(无 tag、半 tag、自相矛盾的 claim 留在行内;[probe] 确认的被移 Critical 保留来源);无论 tag 在行上何处都能写入 ledger;closure mint 把带 id 的被推迟 Critical 当作 re-post 而非已修复;工件和报告工具拒绝拼错的轴。
  • 真实 bundle 端到端、无模型参与:PATH 上的 gh 桩扮演伪 GitHub,手写 plan 与上一轮 side file,按顺序运行各子命令。预期:第 7 轮 auto 下,compose 移走 [fails-closed] [new-surface] 的 Critical 与 Suggestion(floorEnforced [1, 2]),certifies-falsely 的 Critical 发布且 marker 以 "d":"c","b":"n" 记录;submit 只发出这一条行内评论,并在 stderr 上按轴点名被移走的 Critical;pr-context 把 marker 回收到 side file(带 d/b),工作表渲染 Critical (certifies-falsely, new-surface);第 8 轮 fails-closed/regression 的类型化条目被 relocate(发布,其轴写入 marker),而 fails-closed/new-surface 的那条被推迟;第 3 轮同一条目被 relocate 且没有 unlicensed-deferral cap。逐字输出见本 PR 的 E2E 评论。

证据(改动前后)

改动前:deferral 通道里的 Critical 条目总被 relocate(relocated from the deferral channel — a Critical is never deferred, it posts),已起草的 **[Critical]** 评论从不被地板移走,marker 不携带分类,verdict 行写 N non-Critical finding(s) deferred

改动后(E2E 第 7 轮逐字):marker {"v":1,"round":7,"findings":[{"id":"R7-1","sev":"C","d":"c","b":"n","file":"src/stop.ts","line":30,"title":"…"}],"posted":1,"floor":"c","fresh":1,"prevPosted":2,"src0":40};推迟行 src/submodule.ts:8 — [review] Critical [fails-closed] [new-surface] A dirty submodule pointer wedges the incremental round for ever…;标题 …recorded, not requested in this round; 2 Critical(s) among them are deferred by their axes — fails-closed on new surface…;强制执行注记 1 Suggestion(s) and 1 fails-closed, new-surface Critical(s) were drafted inline past the resolved critical posting floor…;verdict 行 Verdict: Comment — … — 3 finding(s) deferred under the convergence posture (listed in the body) — 2 of those moved by CLI floor enforcement…;下一轮工作表行 | R7-1 | Critical (certifies-falsely, new-surface) | src/stop.ts:30 | … |。无 TUI 界面改动:N/A。

测试平台

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

环境(可选)

npm run build && npm run bundle,然后在带隔离 QWEN_HOME 与 PATH gh 桩的夹具项目里运行 node dist/cli.js review …;单元测试用 vitest;对改动文件跑 npm run typecheck 与 eslint。

风险与范围

  • 主要风险或权衡:一对错误陈述的 fails-closed/new-surface 会在 critical 地板下把一个 blocker 从 PR 上拿掉。缓解措施:两轴必须同时存在;verifier 被要求宁可省略也不猜测;自相矛盾的 claim line 读作未分类;工件与类型化通道拒绝拼错的值;tag 只从 claim line 读取(从不读正文可写的尾部);拆分读取的是地板的 enforcement 口径;推迟在正文、verdict 行和 submit 报告中都按严重度披露。
  • 未验证 / 范围之外:模型侧的一半(verifier 陈述两轴、orchestrator 把 tag 抄到 claim line)由 brief 与 SKILL 测试钉住,但没有端到端实跑;Web Shell 忽略新字段;不自动开后续 issue;触发频率轴未携带。
  • 破坏性变更 / 迁移说明:无。在字段出现之前写下的 marker 与工件读作未分类(任何地板下都发布)。措辞变化:verdict 行改为 finding(s) deferred(原为 non-Critical finding(s) deferred),正文与 submit stderr 的强制执行注记分别统计被移走的 Suggestion 与 Critical,relocation 注记不再声称 Critical 从不推迟。

关联 Issue

Closes #10291。相关:#9905(发散哨兵)、#9907(希望以该机器可读字段为键的 autofix 护栏)。

@wenshao

wenshao commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator Author

E2E report — the axes end to end on the real bundle (no model in the loop)

Setup: npm run build && npm run bundle on this branch; a fixture project with an isolated QWEN_HOME; a Python gh shim on PATH standing in for GitHub (acme/widgets#4242, own account qwen-bot; every call and the POSTed payload recorded); a hand-written plan (fetchedSha, prDescriptionHasHan: false) and a previous-round side file (round: 6, one Critical R6-1), so round 7 runs under autocritical. No harness transcripts exist, so every verdict is capped (unreviewed-dimension / criticals-unverified) and the anchor never rides — the assertions are on findings, d/b, the deferral lines and the posted payload, not on the anchor.

(a) review findings --print — the artifact carries the axes

Critical [fails-closed] [new-surface] — src/sparse.ts:12 — sparse checkout wedges the incremental round
Critical [certifies-falsely] [new-surface] — src/stop.ts:30 — The decided stop is written over bytes no round read.
Critical [fails-closed] [new-surface] — src/submodule.ts:8 — A dirty submodule pointer wedges the incremental round for…
Suggestion — src/util.ts:5 — Rename flag to treeHeldStill.

(b) round 7 compose-review — the floor moves the ONE combination, the marker records the rest

Drafted: **[Critical]** [certifies-falsely] [new-surface] … (src/stop.ts:30), **[Critical]** [fails-closed] [new-surface] … (src/submodule.ts:8), **[Suggestion]** … (src/util.ts:5); typed deferral entry R6-1 (severity: Critical, fails-closed/new-surface, source: probe).

  • Verdict: Comment — a Request changes was NOT available: its blockers were never verified (they are posted, disclosed as unverified) — 3 finding(s) deferred under the convergence posture (listed in the body) — 2 of those moved by CLI floor enforcement (drafted inline past the resolved critical floor)
  • event COMMENT, baseEvent REQUEST_CHANGES, floorEnforced [1, 2], deferredCount 3, postedInline 1
  • marker, enforcement note, deferral header and deferral lines (verbatim):
{"v":1,"round":7,"findings":[{"id":"R7-1","sev":"C","d":"c","b":"n","file":"src/stop.ts","line":30,"title":"The decided stop is written over bytes no round read: a `nothingToReview` stop l"}],"posted":1,"floor":"c","fresh":1,"prevPosted":2,"src0":40}

1 Suggestion(s) and 1 fails-closed, new-surface Critical(s) were drafted inline past the resolved critical posting floor; the CLI moved them into the deferral list below (floor enforcement).

Deferred under the convergence posture (round 7, not a blocker) — recorded, not requested in this round; 2 Critical(s) among them are deferred by their axes — fails-closed on new surface, where no wrong result is certified and the merge base had neither the surface nor the defect — and remain follow-up work recorded in the findings artifact:

- `src/submodule.ts:8 — [review] Critical [fails-closed] [new-surface] A dirty submodule pointer wedges the incremental round for ever:  treeHeldStill  never clears, so every later round refuses. Witness: probe — dirty gitlink →  held: true  o…`
- `src/util.ts:5 — [review] Rename  flag  to  treeHeldStill  so the stop reason reads at the call site.`
- `src/sparse.ts:12 — [probe] Critical [fails-closed] [new-surface] R6-1: sparse checkout wedges the incremental round`

(c) review submit — only the wrong-result Critical posts inline

  • Floor enforcement: 1 Suggestion comment(s) and 1 fails-closed, new-surface Critical comment(s) drafted past the resolved critical floor were moved into the body's deferral list and will not post inline.
  • Posted COMMENT to acme/widgets#4242 — --comment was in the review arguments for #4242 (capped by unreviewed-dimension, criticals-unverified). https://github.com/acme/widgets/pull/4242#pullrequestreview-9000
  • POSTed event: COMMENT; inline comments: [('src/stop.ts', 30)]; body identical to the composed body: True; marker in the posted body carries "d":"c","b":"n": True
  • gh calls: exactly one api repos/acme/widgets/pulls/4242/reviews --input -

(d) review pr-context 4242 acme/widgets — the next round recovers the axes

  • gh calls: [['auth', 'status'], ['pr', 'view', '4242', '--repo', 'acme/widgets'], ['api', '--paginate', 'repos/acme/widgets/pulls/4242/comments'], ['api', '--paginate', 'repos/acme/widgets/issues/4242/comments'], ['api', '--paginate', 'repos/acme/widgets/pulls/4242/reviews'], ['api', 'user', '--jq', '.login']]
  • work-list row (verbatim):
| R7-1 | Critical (certifies-falsely, new-surface) | `src/stop.ts:30` | The decided stop is written over bytes no round read: a `nothingToReview` stop l |
  • side file written next to --out:
{
  "v": 1,
  "round": 7,
  "findings": [
    {
      "id": "R7-1",
      "sev": "C",
      "file": "src/stop.ts",
      "line": 30,
      "title": "The decided stop is written over bytes no round read: a `nothingToReview` stop l",
      "d": "c",
      "b": "n"
    }
  ],
  "src0": 40,
  "posted": 1,
  "prevPosted": 2,
  "floor": "c",
  "fresh": 1,
  "commitId": "0123456789abcdef0123456789abcdef01234567",
  "reviewId": 9000,
  "foreign": false,
  "merged": false
}

(e) round 8 compose-review over the recovered side file

Drafted: inline re-post **[Critical]** R7-1: [certifies-falsely] [new-surface] … still stands; typed entries: R6-1 (fails-closed/new-surface) and src/reg.ts (fails-closed/regression).

  • Verdict: Comment — a Request changes was NOT available: its blockers were never verified (they are posted, disclosed as unverified) — 1 finding(s) deferred under the convergence posture (listed in the body)
  • event COMMENT, floorEnforced [], deferredCount 1
  • R7-1 is carried with its axes, the regression entry is relocated as R8-1 with d:"f",b:"r", and only the fails-closed/new-surface entry defers — marker, relocated line and deferral lines (verbatim):
{"v":1,"round":8,"findings":[{"id":"R7-1","sev":"C","d":"c","b":"n","file":"src/stop.ts","line":30,"title":"The decided stop is still written over bytes no round read — still stands."},{"id":"R8-1","sev":"C","d":"f","b":"r","file":"(body)","title":"`src/reg.ts:3 — [review] Critical a non-sparse repo that reviewed fine before no"}],"posted":1,"floor":"c","fresh":0,"prevPosted":1,"src0":40}

**[Critical]** `src/reg.ts:3 — [review] Critical [fails-closed] [regression] a non-sparse repo that reviewed fine before now refuses under config X` _(relocated from the deferral channel — a Critical is deferred only as fails-closed on new surface at a critical floor; this one posts)_

- `src/sparse.ts:12 — [probe] Critical [fails-closed] [new-surface] R6-1: sparse checkout wedges the incremental round`

(f) negative — the same state at round 3 under auto (side file round: 2)

  • Verdict: Request changes
  • event REQUEST_CHANGES, floorEnforced [], deferredCount 0, unlicensed-deferral cap: False; relocation notes in the body: 2; deferral block present: False
  • both Criticals relocated (the R7-1 re-post is re-minted as R3-1: an id claiming a future round is a squat, by design), axes still stamped — marker (verbatim):
{"v":1,"round":3,"findings":[{"id":"R3-1","sev":"C","d":"c","b":"n","file":"src/stop.ts","line":30,"title":"The decided stop is still written over bytes no round read — still stands."},{"id":"R3-2","sev":"C","d":"f","b":"n","file":"(body)","title":"`src/sparse.ts:12 — [probe] Critical R6-1: sparse checkout wedges the incrementa"},{"id":"R3-3","sev":"C","d":"f","b":"r","file":"(body)","title":"`src/reg.ts:3 — [review] Critical a non-sparse repo that reviewed fine before no"}],"posted":1,"floor":"o","fresh":1,"prevPosted":1,"flatRounds":1,"src0":40}
中文说明

在本分支的真实 bundle 上跑通整条链,无模型参与:隔离 QWEN_HOME 的夹具项目、PATH 上的 Python gh 桩扮演 GitHub(acme/widgets#4242,本账号 qwen-bot,记录每次调用与 POST 载荷)、手写 plan 与上一轮 side file(第 6 轮),因此第 7 轮在 auto 下解析为 critical 地板。没有 harness transcript,所以每次 verdict 都被 cap、anchor 不随 marker 走——判据放在 findings、d/b、推迟行和发布载荷上。(a) 工件携带两轴并按 tag 渲染;(b) 第 7 轮 compose 移走带双 tag 的 Critical 与 Suggestion(floorEnforced [1, 2]),certifies-falsely 的 Critical 发布且 marker 记录 "d":"c","b":"n",推迟块与强制执行注记按严重度披露;(c) submit 只发出这一条行内评论,stderr 按轴点名被移走的 Critical,正文与 composed 完全一致;(d) pr-context 把 marker 回收到 side file(带 d/b),工作表显示 Critical (certifies-falsely, new-surface);(e) 第 8 轮:fails-closed/regression 条目被 relocate(其轴写入 marker 为 R8-1),只有 fails-closed/new-surface 的条目被推迟;(f) 第 3 轮反例:同一状态下两条 Critical 全部 relocate,无推迟块,无 unlicensed-deferral cap。

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

qwen-code-ci-bot commented Aug 27, 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 Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Round-3 gate re-check on 09629536 — the round-2 fixes, a merge of current main (02197b39a3), and a final test-only commit pinning the axes × witness-rule interaction.

Template looks good ✓ — unchanged, all sections present, bilingual, with a concrete unit + E2E verification plan.

Problem: observed, not theoretical. Issue #10291 documents the oscillation on #9659 — the convergence floor stopped filtering at round 17 and the loop ran to round 23 (7, 5, 3, 5, 4, 1, 6 new Criticals per round, near-zero false positives). The diagnosis — Critical encoding three orthogonal merge decisions in one bit — is backed by round-by-round data.

Direction: aligned. This is the bundled review skill's own convergence machinery; deferring a fails-closed/new-surface Critical as recorded follow-up work, while every wrong-result finding and every regression still blocks, is the right shape for a merge gate. Internal tooling — no external CHANGELOG signal applies.

Size: core paths are touched (packages/core/src/tools/report-findings.ts, packages/core/src/tools/tools.ts, packages/core/src/index.ts, packages/core/src/utils/toolResultDisplayCompaction.ts), cross-package (cli + core). Production logic ≈866 lines (bulk: compose-review.ts 419+/113-, lib/inline-counts.ts head-slot reader 128+), tests ≈1216 lines, skill prose/docs ≈169 lines. Still above the 500-line maintainer-awareness threshold — flagging per policy; not blocking on size (feat-type, author is a maintainer).

Approach: scope still fits the goal — every surface the axes travel through (findings artifact, in-band report, claim-line tags, ledger marker) is a place the classification is consumed, and the design doc is committed under docs/design/. The round-2 fix round consolidated further rather than growing: the axis vocabulary is now derived from the core lists instead of a fourth hand-spelled copy, and readClaim joins readClaimHead so the two head-slot readers can no longer disagree. The merge of main keeps both sides of the #9740 conflicts (verifier-brief pins, Step 4 "after verification" paragraph); no conflict markers, no #9740 content dropped. The last commit adds tests only — no production surface. No drive-bys.

Risk: no elevated risk signals — no changed file matches the revert-correlated high-risk paths.

Moving on to code review. 🔍

中文说明

第三轮门禁复检,head 为 09629536 —— 第二轮修复、合入当前 main02197b39a3),以及最后一个钉住"轴 × witness 规则"交互的纯测试提交。

模板完整 ✓ —— 无变化,各节齐全,中英双语,附带具体的单测 + E2E 验证计划。

问题:已观测到,非理论性问题。Issue #10291 记录了 #9659 上的震荡——收敛地板自第 17 轮起不再过滤,循环跑到第 23 轮(每轮新增 Critical 为 7、5、3、5、4、1、6,误报接近零)。诊断——Critical 把三个正交的合并决策编码在一个位里——有逐轮数据支撑。

方向:对齐。这是 bundled review skill 自身的收敛机制;让 fails-closed/new-surface 的 Critical 作为有记录的后续工作被推迟、同时每一条错误结果发现与每一处回归仍然拦截,对合并门禁是正确的形态。内部工具——无外部 CHANGELOG 信号可引用。

规模:触及核心路径(packages/core/src/tools/report-findings.tspackages/core/src/tools/tools.tspackages/core/src/index.tspackages/core/src/utils/toolResultDisplayCompaction.ts),跨包(cli + core)。生产逻辑约 866 行(大头:compose-review.ts 419+/113-、lib/inline-counts.ts 头部槽位读取器 128+ 行),测试约 1216 行,skill 文案/文档约 169 行。仍高于 500 行维护者关注阈值——按策略标记;不因此阻塞(feat 类型,作者为维护者)。

方案:范围仍与目标匹配——两轴经过的每个表面(findings 工件、带内报告、claim line tag、ledger marker)都是分类被消费的地方,设计文档已入库于 docs/design/。第二轮修复进一步收紧而非膨胀:轴词汇表改为从核心列表派生,不再是第四份手写副本;readClaim 并入 readClaimHead,两个头部槽位读取方不再可能互相矛盾。合入 main 保留了 #9740 冲突的两侧内容(verifier 简报钉子、Step 4 "验证之后" 段落);无冲突标记,未丢失 #9740 内容。最后一个提交仅新增测试——无生产面改动。未发现夹带改动。

风险:无升级风险信号——改动文件均未命中与 revert 相关的高风险路径。

进入代码审查 🔍

Qwen Code · qwen3.8-max

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

@qwen-code-ci-bot

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

Copy link
Copy Markdown
Collaborator

Code review — round 3 (the 5-thread fix round)

Round 2 left five threads — R2-1 (axis regex hand-spelled a fourth time), R2-2 (closure-mint docs omitted the discovery-deferral shape), R2-3 (ClaimHead.fixInduced computed but unread, silently disagreeing with readClaim), R2-4 (orchestrator-side no-guess rule pinned by no test), plus the design-doc twin of R2-2 — and two items deferred under the code-age rule, left as recorded. All five are resolved; I verified each fix in the code at the reviewed head, not just the replies:

  • R2-1 fixed at the root. HEAD_AXIS_TAG_RE is now built from FINDING_DIRECTIONS/FINDING_BASELINES — a value added to the core lists can no longer stop the head scan at an unknown bracket and hide a carried id — and inline-counts.test.ts tokenises every word of both lists, before and after the id, with the unknown-bracket prose stop beside it. findings.ts likewise re-exports the core lists rather than copying them, so no fourth vocabulary exists anywhere in the diff.
  • R2-3 fixed by consolidation, the same shape as R1-19's fix. readClaim now reads the id, the (fix-induced) marking and the title through readClaimHead — one tokeniser for both readers, so the source-tag-between placement (R3-2: [probe] (fix-induced) …) counts wherever it sits past the id and the two derivations can no longer disagree. fixInduced has a reader now; the old anchored second derivation is gone. Pinned on both sides: draftedFindingsOf and readClaimHead agree in compose-review.test, the slot test in inline-counts.test.
  • R2-4 pinned. SKILL.test.ts now asserts the orchestrator-side no-guess clauses (an axis the verifier omitted stays absent, never fill one in from the finding's prose, a guess on EITHER axis of the pair) beside their verifier-side twin in agent-prompt.test.ts.
  • R2-2 documented in both places. DESIGN.md's licence section and the design doc each name all three closure-mint shapes — re-post join, discovery deferral, re-deferral — and state that the latter two are the mint's pre-existing doctrine for id-less deferrals, with the marker-carried-deferred-ids follow-up scoped to re-deferrals. Exactly what the thread asked.

My independent pass over the delta, beyond the threads:

  • No stateful-regex hazard: LEDGER_ID_READBACK carries no g flag, and none of the new head-slot regexes do, so the shared-lastIndex alternation bug cannot bite the tokeniser loop.
  • The per-severity seam adjustment is sound: adjustedSeam spreads over ...input, so a severity nothing moved at keeps its original count, and toCount reads an absent seam as zero — the omission is semantically identical to the old pass-through. A C can no longer count a moved Critical.
  • The moved-Critical record strip stays inside the R1-29 window: markerStrippedBody removes the severity prefix before readClaimHead tokenises, and only the head slot's axis tags and source token come off — a bracketed axis word in the body prose survives into the record.
  • The reroute entry's hardcoded fails-closed/new-surface fields are guarded by the very check that admits the comment, and a self-contradicting claim line (two direction tags) reads unclassified via the one-hit rule and posts — the fail-toward-posting direction holds on every arm I traced.
  • Merge of main checked: the feat(review): make Step 4 verification execution-grade #9740 conflicts (verifier-brief pins, Step 4 "after verification" paragraph) keep both sides, no conflict markers landed, and nothing of feat(review): make Step 4 verification execution-grade #9740's reads as deleted in the diff.
  • The last commit (09629536, landed mid-run — this review is pinned to it) is test-only and earns its place: it pins that the deferrable axes never bypass the witness rule — an unwitnessed fails-closed/new-surface Critical demotes to low confidence (terminal-only, never deferrable), axes preserved as facts rather than a licence, while a witnessed one keeps high confidence and both axes. That is exactly the ordering contract the deferral channel composes by (witness hold in Step 6 runs before compose-review reads the artifact), and it closes the one door the mechanism's own prose does not police in code.

No new blockers, no convention violations, no scope creep: the round touched exactly what the threads named, plus the merge and the witness-pin tests.

sequenceDiagram
    participant P1 as floor resolution
    participant P2 as deferral split
    participant P3 as reroute backstop
    participant P4 as ledger marker
    participant P5 as next round
    P1->>P2: critical floor in effect
    P2->>P2: fails-closed on new-surface defers, every other Critical posts
    P1->>P3: drafts past the floor
    P3->>P2: moves the tagged Critical and the Suggestions
    P2->>P4: posted findings stamped d and b
    P4->>P5: work list shows the carried axes
Loading
Files changed (30)
File What changed
packages/cli/src/commands/review/compose-review.ts The mechanism: head-slot axis reads, licensed split with typed relocated entries, Critical reroute arm, per-severity seam adjustment, ledger stamping from typed legs, Critical-first cap order, disclosures, verdict wording
packages/cli/src/commands/review/compose-review.test.ts 767+ lines: the deferral/relocation matrix per axis combination, every floor and licence arm, the backstop's Critical arm, the R1/R2 fix pins titled by round id
packages/cli/src/commands/review/lib/inline-counts.ts The claim head-slot grammar — readClaimHead tokenises id, fix-induced, source tag and axis tags; axis regex derived from the core lists (R2-1)
packages/cli/src/commands/review/lib/inline-counts.test.ts Per-word tokenisation of the core vocabulary, marking placement past the id
packages/cli/src/commands/review/findings.ts Finding direction/baseline fields re-exporting the core enums; strict validation; report renders bracket tags
packages/cli/src/commands/review/findings.test.ts Round-trip, misspelled-axis refusal with index, render shape, and the axes-never-bypass-the-witness-rule pins (final commit)
packages/cli/src/commands/review/lib/ledger.ts Marker one-letter fields d/b, LEDGER_DIRECTIONS/LEDGER_BASELINES, axesOf renderer, unknown-spelling normalisation
packages/cli/src/commands/review/lib/ledger.test.ts Marker round-trip and byte discipline, normalisation, axesOf spelling
packages/cli/src/commands/review/lib/convergence.ts Severity-neutral mechanism-health sentence (en + zh)
packages/cli/src/commands/review/lib/agent-briefs.ts Verifier brief: state both axes off the witness, omit rather than guess, symmetric either-axis rationale
packages/cli/src/commands/review/pr-context.ts Work-list table shows the axes beside the severity
packages/cli/src/commands/review/pr-context.test.ts Table row shapes for classified, half-classified and bare Criticals
packages/cli/src/commands/review/submit.ts stderr names moved Criticals separately from Suggestions
packages/cli/src/commands/review/submit.test.ts Payload split at the critical floor — wrong-result posts, tagged pair moves
packages/cli/src/commands/review/presubmit.ts Carried-id readback through the head-slot strip
packages/cli/src/commands/review/presubmit.test.ts Tags-before-id re-post lands in the repost bucket
packages/cli/src/commands/review/parse-args.ts critical floor doc names the axes exception
packages/cli/src/commands/review/agent-prompt.test.ts Brief carries the axis instruction, omit-rather-than-guess pinned
packages/core/src/tools/report-findings.ts FINDING_DIRECTIONS/FINDING_BASELINES, schema fields, DESCRIPTION copy list, pass-through
packages/core/src/tools/report-findings.test.ts Pass-through and misspelled-axis refusal
packages/core/src/tools/tools.ts ReportedFinding gains the two optional fields
packages/core/src/utils/toolResultDisplayCompaction.ts Compaction budget counts the new fields
packages/core/src/utils/toolResultDisplayCompaction.test.ts Fixture carries axes; survival asserted (R1-7)
packages/core/src/index.ts Exports the new enums and types
packages/core/src/skills/bundled/review/SKILL.md Model-side contract: axes-only Critical deferral, per-axis copy rule, orchestrator no-guess rule, scoped carve-outs
packages/core/src/skills/bundled/review/SKILL.test.ts Pins the contract clauses incl. the always-post arms and the orchestrator no-guess rule (R2-4)
packages/core/src/skills/bundled/review/references/posting.md The claim-line tag convention
packages/core/src/skills/bundled/review/DESIGN.md Why-axes section, all three closure-mint shapes named (R2-2), reconciled round counts
docs/design/2026-08-27-review-critical-axes.md Design doc: carriers table, licence, trust boundaries, three mint shapes, explicit non-goals
docs/users/configuration/settings.md review.severityFloor row names the axes exception

Testing

Evidence carried: the PR's own CI check results via the API (unattended run — PR code is never built or executed here). The unit suite is RUNNING on the reviewed head — past the gate that killed the previous one. The rebase onto current main did its job: Test (ubuntu-latest, Node 22.x) cleared #10149's check:tui-dep-direction step and is executing vitest as of this review; there is no conclusion to quote yet. Desktop Shell (both OSes), Secret scan (TruffleHog), Dependency CVE audit and Classify PR are green. Test (windows/macos) and Integration Tests (CLI, No Sandbox) are skipped on this event, as before.

The author reports local runs on the round-3 head — typecheck 0 errors after a full rebuild, review suites cli 1791 / core 120, eslint clean — that is the author's claim, not independently re-run here; the final test-only commit landed after those numbers.

Not verified: unit-suite results on the reviewed head (still in flight); end-to-end bundle behaviour on it (the author's shim E2E and the previous head's /verify 166/166 are their own runs, attributed as such).

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

Check Conclusion
Classify PR ✅ success
Dependency CVE audit ✅ success
Desktop Shell (ubuntu-22.04) ✅ success
Desktop Shell (windows-2022) ✅ success
Post Coverage Comment (ubuntu-latest, 22.x) ✅ success
Secret scan (TruffleHog) ✅ success
Test (ubuntu-latest, Node 22.x) ✅ success
web-shell E2E Smoke (ubuntu-latest, Node 22.x) ✅ success

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

Sandboxed verification would settle the remaining gap: @qwen-code /verify — the run in flight in this event was triggered against cbe83ba61d, one commit before the reviewed head; since the delta is test-only its verdict speaks to the same production surface, but a strict pass would re-trigger on the final head — that the round-2 fixes (derived axis vocabulary, single-tokeniser claim head, pinned no-guess rule) hold the central claim end to end, since the PR's own suite has not produced a result on the head yet. No TUI surface changed, so no /tmux lane applies.

中文说明

代码审查 —— 第三轮(5 条修复轮)

第二轮留下 5 条线程——R2-1(轴正则第四次手写)、R2-2(closure-mint 文档漏掉 discovery-deferral 形态)、R2-3(ClaimHead.fixInduced 只算不读、与 readClaim 暗中分歧)、R2-4(orchestrator 侧"不猜测"规则无测试钉守),外加设计文档中 R2-2 的孪生——以及按 code-age 规则推迟记录的两条。5 条全部解决;我在受审 head 的代码里逐条核实了修复本身,而不只是回复:

  • R2-1 从根上修复。 HEAD_AXIS_TAG_RE 现由 FINDING_DIRECTIONS/FINDING_BASELINES 构建——核心列表新增值不再会让头部扫描停在未知方括号上、遮挡其后的承载 id——且 inline-counts.test.ts 对两个列表的每个词逐词分词测试(id 前后皆测),旁边是未知方括号作为散文停止点。findings.ts 也是再导出核心列表而非复制,diff 中不存在第四份词汇表。
  • R2-3 以收敛方式修复,与 R1-19 同形。 readClaim 现在经由 readClaimHead 读取 id、(fix-induced) 标记与标题——两个读取方共用一个分词器,来源 tag 夹在 id 与标记之间(R3-2: [probe] (fix-induced) …)在 id 之后任何位置都计数,两条推导不再可能分歧。fixInduced 有了读取方;旧的锚定二次推导已移除。两侧钉守:compose-review.test 的 draftedFindingsOf and readClaimHead agree 与 inline-counts.test 的槽位测试。
  • R2-4 已钉住。 SKILL.test.ts 现断言 orchestrator 侧"不猜测"各句,与 agent-prompt.test.ts 中 verifier 侧孪生并列。
  • R2-2 两处文档均已写全。 DESIGN.md 许可一节与设计文档各自写明 closure-mint 三种形态——重发联结、发现即推迟、再推迟——并声明后两者是 mint 对无 id 推迟条目的既有教条,marker 携带推迟 id 的后续工作限定于再推迟。正是线程所求。

我对增量的独立复查,在线程之外:

  • 无状态正则隐患:LEDGER_ID_READBACKg 标志,新增头部槽位正则也都没有,共享 lastIndex 交替命中缺陷不可能发生在分词循环上。
  • 按严重度的接缝调整可靠:adjustedSeam...input 之上展开,未移动条目的严重度保留原计数,toCount 把缺失接缝读作零——省略与旧的原样透传语义等价。C 不再可能计入被移走的 Critical。
  • 被移 Critical 的记录剥离仍在 R1-29 窗口内:markerStrippedBody 先去掉严重度前缀再由 readClaimHead 分词,只剥头部槽位的轴 tag 与来源 token——正文散文里的方括号轴词保留在记录中。
  • 重路由条目的硬编码 fails-closed/new-surface 字段由准入检查本身守护;自相矛盾的 claim line(两个方向 tag)经单命中规则读作未分类并照常发布——逐臂追踪均保持"倾向发布"的失败方向。
  • 合入 main 已查:feat(review): make Step 4 verification execution-grade #9740 冲突(verifier 简报钉子、Step 4 "验证之后"段落)两侧均保留,无冲突标记落地,diff 中没有任何 feat(review): make Step 4 verification execution-grade #9740 内容读作删除。
  • 最后一个提交(09629536,运行中途落地——本审查钉在该 head 上)是纯测试且物有所值:它钉住"可推迟的轴绝不绕过 witness 规则"——无 witness 的 fails-closed/new-surface Critical 降为低置信(仅终端、永不进入推迟通道),轴作为事实保留而非许可;有 witness 的同一发现保持高置信与两轴。这正是推迟通道所依赖的顺序契约(Step 6 的 witness 扣留先于 compose-review 读工件),堵上了机制文案未在代码中监管的那扇门。

无新阻断、无规范违规、无范围蔓延:本轮只动了线程点名的内容、merge 本身与 witness 钉守测试。

测试

本次携带的证据:经 API 读取的 PR 自身 CI 检查结果(无人值守运行——此处从不构建或执行 PR 代码)。单测套件正在受审 head 上运行——已越过杀掉上一个 head 的门禁。 rebase 到当前 main 起了作用:Test (ubuntu-latest, Node 22.x) 通过了 #10149check:tui-dep-direction 步骤,截至本审查正在执行 vitest;尚无结论可引。Desktop Shell(双系统)、Secret scan (TruffleHog)Dependency CVE auditClassify PR 为绿。Test (windows/macos)Integration Tests (CLI, No Sandbox) 在本事件下跳过,与既往一致。

作者报告第三轮 head 上的本地运行——全量重建后 typecheck 0 错误、review 套件 cli 1791 / core 120、eslint 干净——此为作者声明,未在此独立复跑;最后的纯测试提交在这些数字之后落地。

未验证:受审 head 上的单测结果(仍在运行);其上的端到端 bundle 行为(作者的桩 E2E 与上一 head 的 /verify 166/166 均为其自跑结果,仅作声明引用)。

沙箱验证可以落定剩余缺口:@qwen-code /verify —— 本事件中在途的运行是对 cbe83ba61d 触发的,早于受审 head 一个提交;由于增量是纯测试,其结论对应同一生产面,但严格起见应在最终 head 上重新触发 —— 以确认第二轮修复(派生轴词汇表、单一分词器 claim 头部、钉住的不猜测规则)端到端守住中心论断,因为 PR 自己的套件尚未在该 head 上产出结果。无 TUI 界面改动,不涉及 /tmux

Qwen Code · qwen3.8-max

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

@qwen-code-ci-bot

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

Copy link
Copy Markdown
Collaborator

Confidence: 3/5 — clean review, all five round-2 threads verified fixed with no new findings, but the score stays capped by policy: a core-touching feat at ~866 production logic lines escalates to maintainer awareness, and the approval is a human's to make.

Stepping back over three rounds: this PR got better every fix round, not just bigger. Round 1's 21 threads collapsed four per-site tag strips into one head-slot grammar; round 2's five collapsed the last two derivations into it and derived the axis vocabulary from the core lists, so the mechanism now has exactly one statement of every grammar it reads — the claim head, the axis words, the deferral licence. My independent proposal for the round-2 set would have been narrower fixes (anchor the regex to the lists, delete the unread field); what landed is strictly stronger — one tokeniser shared by every reader, with the disagreement class removed rather than patched. The final commit closes the last unwritten contract: axes never bypass the witness rule — deferral is a posting decision about a confirmed blocker, not a second door past the witness hold. Every change traces to a named thread, the merge, or that pin; no drive-bys. If I have to maintain this in six months, the comment density is high but it is this module's register, and the one-statement-per-grammar discipline is exactly what keeps a machine-ledger pipeline honest.

Two honest reservations, unchanged from last round and disclosed rather than blocking:

  • The model-side half (the verifier stating the axes, the orchestrator copying tags onto the claim line) is pinned by brief and SKILL tests, not exercised end to end — the PR's own Risk section says as much.
  • On the reviewed head itself, the independent signals are still in flight: the unit suite is running (first head where it actually launched past the pre-test gate) and the sandboxed /verify is running — against cbe83ba61d, one commit earlier; the delta since is test-only, but a strict pass re-triggers on the final head. The previous head's /verify passed 166/166 — the author's run, attributed as such.

⏸️ Deferring to @wenshao — no code findings to fix; three things stand between this and a bot approval:

  1. Stage 0 policy: a core-touching feat at 500+ production logic lines escalates to maintainer awareness — the approval decision is a maintainer's, and this run's verdict is capped at 3/5 by that policy, not by doubt about the code.
  2. CI has not settled on the reviewed headTest (ubuntu-latest, Node 22.x) is in progress as of this review; the finalize job updates the table in place once it lands.
  3. The sandboxed /verify in flight targets the previous commit — its report lands in the thread; a maintainer may re-trigger on the final head for strictness.

One stale artifact to clear, same as last round: the bot's round-1 CHANGES_REQUESTED review (commit abe7f302) is fully addressed — all 21 threads resolved, every fix re-verified since — but this run does not dismiss reviews, so it still shows as the standing request. Dismissing or overriding it is a maintainer's one-click call.

中文说明

置信度:3/5 —— 审查干净,第二轮 5 条线程的修复全部核实、无新发现,但分数仍被策略封顶:触及核心、约 866 行生产逻辑的 feat 升级至维护者关注,批准应由人做出。

退一步看三轮全程:这个 PR 每一轮修复都变得更好,而不仅仅是变大。第一轮的 21 条线程把四处逐点剥离收敛为一个头部槽位文法;第二轮的 5 条把最后两条推导也并入其中,并把轴词汇表改为从核心列表派生——至此该机制对其读取的每个文法都恰好只有一处声明:claim 头部、轴词、推迟许可。我对第二轮各条的独立方案是更窄的修复(把正则锚定到列表、删掉未读字段);实际落地的方案严格更强——所有读取方共用一个分词器,分歧这一类问题被整体移除而非修补。最后一个提交钉上了最后一条未成文的契约:轴绝不绕过 witness 规则——推迟是对已确认阻断的发布决定,而不是绕过 witness 扣留的第二扇门。每一处改动都能追溯到点名的线程、merge 本身或该钉守;无夹带。若六个月后由我维护,注释密度虽高,却是该模块的水位;一处一文法的纪律正是机器 ledger 管线保持诚实所需。

两点坦率的保留意见,与上轮相同,是披露而非阻断:

  • 模型侧的一半(verifier 陈述两轴、orchestrator 把 tag 抄到 claim line)由简报与 SKILL 测试钉住,未端到端实跑——PR 自己的风险一节也这么说。
  • 在受审 head 本身,独立信号仍在途:单测套件正在运行(这是第一个真正越过测试前门禁的 head),沙箱 /verify 也在运行——但它针对的是早一个提交的 cbe83ba61d;此后的增量是纯测试,严格起见可在最终 head 上重新触发。上一 head 的 /verify 通过 166/166——作者的运行,仅作声明引用。

⏸️ 转交 @wenshao —— 没有需要修复的代码发现;三件事挡在机器人批准之前:

  1. Stage 0 策略:触及核心、500+ 生产行的 feat 升级至维护者关注——批准决定属于维护者,本次运行的判定因此封顶于 3/5,而非对代码有疑。
  2. CI 尚未在所审 head 上落定 —— 截至本审查 Test (ubuntu-latest, Node 22.x) 正在运行;落定后 finalize 任务会就地更新表格。
  3. 在途的沙箱 /verify 针对的是上一个提交 —— 报告会发布在本帖;维护者可为严格起见在最终 head 上重新触发。

另有一项过期状态需要清理,与上轮相同:机器人第一轮的 CHANGES_REQUESTED 评审(提交 abe7f302)已被完整处理——21 条线程全部解决,每条修复此后均经复核——但本次运行不执行 dismiss,它仍显示为未处理的修改请求。dismiss 或覆盖它是维护者一键即可完成的操作。

Qwen Code · qwen3.8-max

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

@github-actions

github-actions Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 85.66% 85.66% 91.07% 84.62%
Core 88.75% 88.75% 90.51% 87.2%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   85.66 |    84.62 |   91.07 |   85.66 |                   
 src               |   86.45 |    82.24 |   88.23 |   86.45 |                   
  cli.ts           |   95.68 |    84.11 |     100 |   95.68 | ...60-561,565-566 
  llm.tsx          |   73.22 |    77.73 |   80.76 |   73.22 | ...1345-1349,1476 
  ...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 |   74.57 |    77.36 |   93.65 |   74.57 |                   
  acpAgent.ts      |   73.63 |    77.23 |   92.93 |   73.63 | ...02,13080-13081 
  ...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 |    89.65 |     100 |     100 | 79,125,142        
  ...DirContext.ts |     100 |      100 |     100 |     100 |                   
  ...ersistence.ts |   94.95 |    92.24 |     100 |   94.95 | ...13-118,227-228 
  ...management.ts |   74.75 |     66.3 |     100 |   74.75 | ...92-496,505-509 
  ...e-download.ts |    64.7 |    62.24 |    87.5 |    64.7 | ...08-609,615-619 
 ...tegration/live |    97.5 |       88 |   92.85 |    97.5 |                   
  ...en-context.ts |   95.74 |    82.35 |     100 |   95.74 | ...0,66-67,99-100 
  ...structions.ts |     100 |      100 |     100 |     100 |                   
  ...ak-to-user.ts |   96.66 |      100 |    87.5 |   96.66 | 37-38             
  ...task-tools.ts |   98.97 |      100 |   88.88 |   98.97 | 201-202           
 ...ration/service |    97.1 |    95.89 |   93.75 |    97.1 |                   
  filesystem.ts    |    97.1 |    95.89 |   93.75 |    97.1 | ...22-123,246-247 
 ...ration/session |    90.9 |    86.48 |   95.67 |    90.9 |                   
  Session.ts       |   90.27 |    85.23 |   95.03 |   90.27 | ...85,13212-13216 
  ...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 |    94.3 |     87.5 |     100 |    94.3 | 65-71             
  ...on-tracker.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...ssion/emitters |   95.65 |    92.34 |   97.14 |   95.65 |                   
  ...ageEmitter.ts |   95.36 |    92.42 |     100 |   95.36 | ...16,129-130,223 
  PlanEmitter.ts   |     100 |       90 |     100 |     100 | 66                
  base-emitter.ts  |   78.26 |    77.77 |     100 |   78.26 | 23-24,26-28       
  index.ts         |       0 |        0 |       0 |       0 | 1-10              
  ...ll-emitter.ts |   98.57 |    94.84 |     100 |   98.57 | 75-76,394-395     
 ...ession/rewrite |   96.03 |    89.79 |   94.44 |   96.03 |                   
  LlmRewriter.ts   |   94.01 |    88.23 |     100 |   94.01 | 101-102,179-183   
  ...Middleware.ts |   96.99 |    88.37 |     100 |   96.99 | 145,153-155       
  TurnBuffer.ts    |     100 |      100 |     100 |     100 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 src/agent-view    |   86.63 |     80.8 |   94.01 |   86.63 |                   
  attach-lease.ts  |     100 |    97.05 |     100 |     100 | 173               
  ...t-cli-argv.ts |     100 |     92.3 |     100 |     100 | 15                
  ...ged-detach.ts |     100 |     90.9 |     100 |     100 | 40,64             
  presentation.ts  |   94.13 |    88.72 |   94.73 |   94.13 | ...57-358,382-384 
  protocol.ts      |     100 |      100 |     100 |     100 |                   
  pty-host-env.ts  |     100 |      100 |     100 |     100 |                   
  ...st-process.ts |   88.43 |    78.79 |   94.44 |   88.43 | ...1294,1384-1386 
  pty-host.ts      |   85.25 |    87.03 |   90.69 |   85.25 | ...22-524,539-540 
  ...sor-client.ts |   80.38 |    72.81 |   77.41 |   80.38 | ...22-626,652-656 
  ...r-dispatch.ts |      98 |    85.18 |     100 |      98 | 117,173,190       
  ...or-process.ts |    83.5 |     77.3 |   98.72 |    83.5 | ...4479-4482,4485 
  ...sor-runner.ts |   82.43 |    76.82 |   80.95 |   82.43 | ...69,493,496-506 
  ...sor-server.ts |   84.39 |    83.56 |    93.1 |   84.39 | ...67-568,571-588 
  ...isor-store.ts |   94.76 |    84.95 |     100 |   94.76 | ...,966,1008,1023 
  ...nal-bridge.ts |   93.98 |    91.54 |   83.33 |   93.98 | 228-238           
  ...r-sideband.ts |   94.91 |    89.36 |     100 |   94.91 | ...75-276,299-304 
 src/commands      |   90.69 |    78.53 |   65.62 |   90.69 |                   
  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.9 |      100 |      50 |    98.9 | 102               
  serve.ts         |   89.46 |    76.02 |     100 |   89.46 | ...12-915,927,938 
  sessions.ts      |     100 |      100 |      50 |     100 |                   
  update.ts        |   98.13 |    94.44 |   66.66 |   98.13 | 82-83             
 ...mmands/channel |   89.55 |    88.77 |   90.68 |   89.55 |                   
  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.84 |    96.22 |     100 |   96.84 | ...40-245,303-306 
  configure.ts     |    14.7 |      100 |       0 |    14.7 | 18-21,23-84       
  daemon-worker.ts |   94.07 |    86.01 |   94.33 |   94.07 | ...1292,1299-1300 
  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.7 |    83.63 |      88 |    87.7 | ...95,601-604,616 
  ...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 |   91.98 |    90.39 |    93.8 |   91.98 |                   
  ab-drive.ts      |   85.22 |    90.47 |   94.11 |   85.22 | ...50-926,969-972 
  agent-prompt.ts  |   94.89 |    92.99 |   97.95 |   94.89 | ...3289,3624-3704 
  base-tree.ts     |   77.02 |    80.76 |   77.77 |   77.02 | ...63-384,386-399 
  capture-local.ts |   94.72 |    97.61 |   94.11 |   94.72 | 271,1336-1374     
  ...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.37 |    94.02 |   98.73 |   97.37 | ...6486-6530,6790 
  cost-ledger.ts   |   94.58 |     94.4 |   81.25 |   94.58 | ...53-654,694-704 
  drive.ts         |   97.12 |    89.85 |     100 |   97.12 | ...83-985,990-992 
  extract-step.ts  |   91.36 |    90.62 |   88.88 |   91.36 | ...90-707,714-729 
  fetch-diff.ts    |   73.75 |      100 |   66.66 |   73.75 | 77-97             
  fetch-pr.ts      |   97.29 |    92.25 |     100 |   97.29 | ...1566,1724-1729 
  findings.ts      |    96.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.32 |    90.83 |   94.11 |   94.32 | ...1219,1254-1285 
  ...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.47 |    87.58 |   95.45 |   84.47 | ...00,816-870,884 
  save-artifact.ts |    94.2 |    92.46 |   94.11 |    94.2 | ...14-617,710-713 
  scratch-tree.ts  |   95.93 |       86 |     100 |   95.93 | ...91-392,461-464 
  script-lint.ts   |   83.78 |    78.57 |   88.88 |   83.78 | ...69-783,785-807 
  submit.ts        |   94.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 
 ...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.68 |   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.11 |     100 |   98.97 | ...1103,1648-1649 
  deadline.ts      |   98.03 |    91.66 |     100 |   98.03 | ...20,752,820,837 
  diff-flags.ts    |     100 |        0 |     100 |     100 | 75                
  diff-plan.ts     |   99.29 |    95.79 |     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.45 |     100 |     100 | 828               
  local-anchor.ts  |   93.78 |    88.75 |     100 |   93.78 | ...61,594-595,745 
  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.23 |    95.29 |     100 |   98.23 | ...,822,1203,1220 
  path-rules.ts    |     100 |      100 |     100 |     100 |                   
  paths.ts         |   98.05 |    88.57 |     100 |   98.05 | 33-34             
  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 | 36                
  ...boxed-exec.ts |   94.26 |    89.32 |   95.65 |   94.26 | ...49-550,728-729 
  shell-quote.ts   |     100 |      100 |     100 |     100 |                   
  stale-bundle.ts  |   98.18 |    94.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.26 |    90.56 |   95.02 |   94.26 |                   
  ...l-fallback.ts |     100 |      100 |     100 |     100 |                   
  auth.ts          |   93.36 |    88.37 |     100 |   93.36 | ...06-307,330-331 
  ...eMcpImport.ts |   87.91 |    81.52 |     100 |   87.91 | ...63-371,453-454 
  compile-cache.ts |     100 |      100 |     100 |     100 |                   
  config.ts        |   89.62 |    91.05 |   83.78 |   89.62 | ...2515,2517-2525 
  ...cy-monitor.ts |      90 |    77.27 |     100 |      90 | ...72-73,90-92,98 
  ...ust-policy.ts |   83.02 |    88.88 |     100 |   83.02 | ...02-209,232-240 
  ...heme-names.ts |     100 |      100 |     100 |     100 |                   
  ...ScopeUtils.ts |   97.56 |    88.88 |     100 |   97.56 | 67                
  environment.ts   |   94.51 |    92.55 |   95.23 |   94.51 | ...24-625,679-680 
  ...le-watcher.ts |   90.86 |    83.65 |   95.83 |   90.86 | ...23-325,370,418 
  ...resh-state.ts |   90.57 |    97.29 |   93.75 |   90.57 | 137-142,146-152   
  ...ime-reload.ts |     100 |    69.69 |     100 |     100 | ...12-113,122-123 
  hot-reload.ts    |     100 |    89.13 |     100 |     100 | 47,172-178,238    
  keyBindings.ts   |    97.4 |       50 |     100 |    97.4 | 240-243           
  ...ngsAdapter.ts |     100 |    94.11 |     100 |     100 | 64                
  ...ig-watcher.ts |   95.17 |    83.05 |     100 |   95.17 | ...78,200,292-293 
  ...er-secrets.ts |   98.97 |    96.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.16 |    93.02 |      90 |   91.16 | ...1026,1028-1029 
  ...ingsSchema.ts |     100 |      100 |     100 |     100 |                   
  settingsUtils.ts |   80.92 |     89.2 |   85.18 |   80.92 | ...87-605,612-620 
  ...ngsWatcher.ts |   95.54 |    88.34 |     100 |   95.54 | ...28,277-278,293 
  ...d-env-keys.ts |     100 |      100 |     100 |     100 |                   
  ...l-settings.ts |     100 |      100 |     100 |     100 |                   
  ...paths-lite.ts |   89.47 |       88 |     100 |   89.47 | 43-44,53-54,56-57 
  ...precedence.ts |   98.79 |     92.3 |     100 |   98.79 | 62                
  ...tedFolders.ts |   92.53 |    93.54 |     100 |   92.53 | ...36-337,373-384 
 ...nfig/migration |   95.23 |    78.94 |   85.71 |   95.23 |                   
  index.ts         |   95.65 |     87.5 |     100 |   95.65 | 117-118           
  scheduler.ts     |   96.55 |       80 |     100 |   96.55 | 19-20             
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...ation/versions |   94.91 |      100 |     100 |   94.91 |                   
  ...-v2-shared.ts |     100 |      100 |     100 |     100 |                   
  v1-to-v2.ts      |   81.75 |      100 |     100 |   81.75 | ...28-229,231-247 
  v2-to-v3.ts      |     100 |      100 |     100 |     100 |                   
  v3-to-v4.ts      |     100 |      100 |     100 |     100 |                   
  v5-to-v4.ts      |      96 |      100 |     100 |      96 | 94-95,99          
 src/core          |     100 |      100 |     100 |     100 |                   
  auth.ts          |     100 |      100 |     100 |     100 |                   
  initializer.ts   |     100 |      100 |     100 |     100 |                   
  theme.ts         |     100 |      100 |     100 |     100 |                   
 src/dualOutput    |   75.08 |    67.64 |   71.42 |   75.08 |                   
  ...tputBridge.ts |   75.33 |    68.18 |   73.68 |   75.33 | ...09-410,418-421 
  ...utContext.tsx |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-8               
 src/export        |       0 |        0 |       0 |       0 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-7               
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 src/hooks         |     100 |      100 |     100 |     100 |                   
  ...elete-hook.ts |     100 |      100 |     100 |     100 |                   
 src/i18n          |   89.68 |    88.66 |   93.02 |   89.68 |                   
  index.ts         |   73.45 |    77.77 |      90 |   73.45 | ...70-271,294-299 
  languageUtils.ts |   98.88 |    97.01 |     100 |   98.88 | 184-185           
  languages.ts     |   93.07 |     92.3 |   85.71 |   93.07 | ...35,164-169,184 
  ...nslateKeys.ts |     100 |      100 |     100 |     100 |                   
  ...lationDict.ts |   93.33 |    66.66 |     100 |   93.33 | 15                
 src/i18n/locales  |     100 |      100 |     100 |     100 |                   
  ca.js            |     100 |      100 |     100 |     100 |                   
  de.js            |     100 |      100 |     100 |     100 |                   
  en.js            |     100 |      100 |     100 |     100 |                   
  fr.js            |     100 |      100 |     100 |     100 |                   
  ja.js            |     100 |      100 |     100 |     100 |                   
  pt.js            |     100 |      100 |     100 |     100 |                   
  ru.js            |     100 |      100 |     100 |     100 |                   
  zh-TW.js         |     100 |      100 |     100 |     100 |                   
  zh.js            |     100 |      100 |     100 |     100 |                   
 ...nonInteractive |   87.37 |    83.73 |   89.32 |   87.37 |                   
  ...ng-failure.ts |     100 |      100 |     100 |     100 |                   
  ...iveHelpers.ts |   94.95 |    91.05 |     100 |   94.95 | ...30-431,529,542 
  ...uggestions.ts |   84.29 |    70.83 |     100 |   84.29 | 70-76,92-103      
  session.ts       |   84.97 |    76.31 |   96.07 |   84.97 | ...1048,1057-1067 
  ...iagnostics.ts |    95.8 |     87.5 |   93.75 |    95.8 | ...03,277-278,289 
  types.ts         |    42.5 |      100 |   33.33 |    42.5 | ...33-634,637-638 
 ...active/control |   75.54 |    89.83 |      80 |   75.54 |                   
  ...rolContext.ts |    6.06 |        0 |       0 |    6.06 | 57-99             
  ...Dispatcher.ts |   91.95 |    92.98 |   88.88 |   91.95 | ...54-372,392,395 
  ...rolService.ts |    6.89 |        0 |       0 |    6.89 | 46-188            
 ...ol/controllers |   57.47 |     66.3 |   73.68 |   57.47 |                   
  ...Controller.ts |    42.4 |      100 |   83.33 |    42.4 | 101-105,140-223   
  ...Controller.ts |       0 |        0 |       0 |       0 | 1-56              
  ...Controller.ts |   70.04 |    62.92 |   91.66 |   70.04 | ...11-620,635-640 
  ...Controller.ts |   49.23 |       60 |      50 |   49.23 | ...07-108,111-121 
  ...Controller.ts |   53.96 |    67.08 |   66.66 |   53.96 | ...78-690,699-728 
 .../control/types |       0 |        0 |       0 |       0 |                   
  serviceAPIs.ts   |       0 |        0 |       0 |       0 | 1                 
 ...Interactive/io |   98.18 |    94.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 |   90.64 |    85.29 |      96 |   90.64 |                   
  ...ngContext.tsx |     100 |      100 |     100 |     100 |                   
  ...-messaging.ts |   90.45 |    85.07 |   95.83 |   90.45 | ...01-306,347-352 
 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.7 |    96.32 |     100 |    99.7 |                   
  ...livery-ipc.ts |     100 |    91.17 |     100 |     100 | 94,106,134        
  ...l-delivery.ts |     100 |      100 |     100 |     100 |                   
  cpu-percent.ts   |     100 |      100 |     100 |     100 |                   
  ...ion-source.ts |     100 |      100 |     100 |     100 |                   
  ...erver-name.ts |     100 |      100 |     100 |     100 |                   
  ...-constants.ts |     100 |      100 |     100 |     100 |                   
  ...-summaries.ts |   86.66 |       50 |     100 |   86.66 | 11,19             
  ...ber-errors.ts |     100 |    95.32 |     100 |     100 | 53,93-94,172,192  
  ...ls-mapping.ts |     100 |      100 |     100 |     100 |                   
 src/serve         |   87.42 |    84.98 |   90.73 |   87.42 |                   
  ...extra-args.ts |     100 |      100 |     100 |     100 |                   
  ...tp-enabled.ts |     100 |      100 |     100 |     100 |                   
  ...ion-bridge.ts |     100 |      100 |     100 |     100 |                   
  auth.ts          |   93.99 |     91.5 |     100 |   93.99 | ...29-430,433-435 
  ...em-adapter.ts |     100 |      100 |     100 |     100 |                   
  capabilities.ts  |     100 |    98.18 |     100 |     100 | 717               
  ...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 |   90.75 |    80.47 |   94.73 |   90.75 | ...1091,1112-1117 
  ...tree-guard.ts |   93.87 |    89.81 |     100 |   93.87 | ...3227,3297-3301 
  daemon-logger.ts |   82.82 |    78.68 |   92.04 |   82.82 | ...1775,1802-1808 
  ...y-pressure.ts |     100 |    96.96 |     100 |     100 | 135               
  ...trics-ring.ts |     100 |      100 |     100 |     100 |                   
  ...s-provider.ts |   68.04 |    52.77 |     100 |   68.04 | ...44-249,282-290 
  daemon-status.ts |   98.69 |    91.96 |     100 |   98.69 | ...1590,1592-1593 
  debug-mode.ts    |     100 |      100 |     100 |     100 |                   
  env-snapshot.ts  |   93.37 |    85.18 |     100 |   93.37 | 114-117,195-202   
  ...-scheduler.ts |   87.34 |    83.87 |     100 |   87.34 | 33-36,48-50,79-81 
  ...d-provider.ts |   92.06 |    87.09 |     100 |   92.06 | ...72,287-293,316 
  ...h-settings.ts |   94.94 |    90.45 |     100 |   94.94 | ...30,708,724,734 
  fast-path.ts     |   91.38 |       82 |   95.45 |   91.38 | ...46-555,633-634 
  ...ration-sse.ts |   42.55 |    33.33 |     100 |   42.55 | 23-24,30,33-56    
  health-query.ts  |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-149             
  ...e-observer.ts |   89.89 |    83.24 |      96 |   89.89 | ...11-512,541-543 
  ...back-binds.ts |     100 |    88.88 |     100 |     100 | 32                
  ...-workspace.ts |   91.58 |    86.48 |     100 |   91.58 | ...44-145,156-157 
  ...pp-sandbox.ts |   96.72 |    95.23 |     100 |   96.72 | 41-42             
  ...iders-edit.ts |     100 |    82.14 |     100 |     100 | 58-60,65,81       
  ...ory-picker.ts |     100 |    86.95 |     100 |     100 | 36,66,92          
  ...-with-auth.ts |     100 |      100 |     100 |     100 |                   
  ...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.78 |     100 |    94.9 | ...81,302,361-362 
  rate-limit.ts    |   92.68 |    88.29 |     100 |   92.68 | ...89-291,303-305 
  ...qwen-serve.ts |   84.69 |    81.38 |   76.99 |   84.69 | ...9116,9134-9138 
  ...tup-errors.ts |     100 |      100 |     100 |     100 |                   
  sandbox.ts       |   45.52 |    59.42 |   76.92 |   45.52 | ...1050,1062-1085 
  ...-keepalive.ts |   94.31 |    89.28 |     100 |   94.31 | ...37,541-542,581 
  ...-lifecycle.ts |     100 |      100 |     100 |     100 |                   
  ...-lifecycle.ts |   89.16 |    90.29 |   86.95 |   89.16 | ...24-325,330-334 
  serve-token.ts   |     100 |      100 |     100 |     100 |                   
  server.ts        |   89.07 |    91.03 |   70.31 |   89.07 | ...3165,3196-3197 
  ...-admission.ts |   99.13 |    95.94 |     100 |   99.13 | 308-309           
  ...on-helpers.ts |     100 |      100 |     100 |     100 |                   
  ...-redaction.ts |     100 |      100 |     100 |     100 |                   
  ...t-event-id.ts |     100 |    95.23 |     100 |     100 | 12                
  ...-admission.ts |   98.71 |    89.65 |     100 |   98.71 | 68                
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...ion-limits.ts |     100 |      100 |     100 |     100 |                   
  ...t-sessions.ts |   93.72 |    77.93 |     100 |   93.72 | ...51,854,867-869 
  ...l-resolver.ts |   90.32 |    66.66 |     100 |   90.32 | 16,45-46          
  ...ell-static.ts |   93.45 |    86.88 |     100 |   93.45 | ...77-280,323-326 
  ...ace-agents.ts |   66.13 |    70.57 |   92.68 |   66.13 | ...2246,2256-2266 
  ...generation.ts |    95.4 |    82.35 |   66.66 |    95.4 | 55-56,78,92       
  ...-git-state.ts |     100 |    91.93 |    90.9 |     100 | 161,172,202,265   
  ...ace-inputs.ts |     100 |      100 |     100 |     100 |                   
  ...ace-memory.ts |      83 |    74.54 |     100 |      83 | ...30-537,597-604 
  ...ers-status.ts |   98.63 |       80 |     100 |   98.63 | 108,136,186,189   
  ...tion-store.ts |   89.67 |    88.27 |   92.59 |   89.67 | ...91-400,411-414 
  ...e-registry.ts |   94.09 |    90.57 |     100 |   94.09 | ...90-591,598-599 
  ...e-remember.ts |   98.23 |    92.56 |     100 |   98.23 | ...36,340-345,386 
  ...te-runtime.ts |   89.88 |     90.9 |     100 |   89.88 | ...05-206,274-295 
  ...me-storage.ts |     100 |      100 |     100 |     100 |                   
  ...visibility.ts |     100 |      100 |     100 |     100 |                   
  ...management.ts |   72.63 |    72.83 |   96.15 |   72.63 | ...88-889,896-900 
  ...lls-status.ts |     100 |    95.45 |     100 |     100 | 152               
  ...reconciler.ts |   91.63 |    84.09 |     100 |   91.63 | ...71-273,306-307 
 ...serve/acp-http |    80.4 |    80.03 |   94.53 |    80.4 |                   
  ...r-registry.ts |   96.92 |    94.87 |     100 |   96.92 | 184-187           
  client-mcp-ws.ts |   54.85 |    58.62 |   72.72 |   54.85 | ...99-300,304-305 
  ...n-registry.ts |   93.03 |    84.13 |   98.52 |   93.03 | ...1624,1671-1682 
  dispatch.ts      |   75.71 |    76.82 |   93.44 |   75.71 | ...5649,5706-5712 
  index.ts         |   82.81 |    79.92 |   91.22 |   82.81 | ...2434,2520-2521 
  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.32 |    78.72 |   93.33 |   86.32 |                   
  ...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 |   89.21 |    76.37 |     100 |   89.21 | ...52-554,568-572 
  ...on-journal.ts |   91.69 |    80.86 |     100 |   91.69 | ...46-747,753-755 
  ...on-service.ts |   83.22 |    75.11 |   89.01 |   83.22 | ...3014,3023-3025 
 src/serve/fs      |   87.77 |    82.34 |     100 |   87.77 |                   
  audit.ts         |     100 |    96.29 |     100 |     100 | 211               
  errors.ts        |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...x-registry.ts |     100 |      100 |     100 |     100 |                   
  paths.ts         |   77.64 |    74.01 |     100 |   77.64 | ...65,594-598,611 
  policy.ts        |   90.52 |    89.18 |     100 |   90.52 | 172-180           
  text-cursor.ts   |   88.23 |       90 |     100 |   88.23 | 74-77,92-95       
  ...ile-system.ts |   88.02 |    81.85 |     100 |   88.02 | ...3027,3037-3038 
 src/serve/live    |    76.6 |    70.53 |    90.2 |    76.6 |                   
  discovery.ts     |   85.89 |    82.05 |    91.3 |   85.89 | ...73-579,592-593 
  ...oordinator.ts |   82.67 |    76.63 |   97.01 |   82.67 | ...1319,1351-1353 
  ...-installer.ts |    64.3 |    82.35 |   80.76 |    64.3 | ...45-446,460-472 
  ...oordinator.ts |    76.7 |    67.47 |   85.71 |    76.7 | ...1885,1976-1977 
  ...controller.ts |   67.82 |    79.66 |      75 |   67.82 | ...66-278,287-295 
  ...sk-service.ts |   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 |    88.77 |      90 |   82.89 |                   
  credentials.ts   |   96.42 |    95.45 |     100 |   96.42 | 109-110           
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...interfaces.ts |   43.58 |    82.75 |   42.85 |   43.58 | ...09-117,130-142 
  ...r-identity.ts |     100 |    85.71 |     100 |     100 | 61                
  service.ts       |    93.4 |       90 |     100 |    93.4 | ...20-222,313-315 
 src/serve/routes  |   86.39 |    81.71 |   95.73 |   86.39 |                   
  a2ui-action.ts   |   96.84 |     88.5 |    87.5 |   96.84 | ...70-272,309-311 
  capabilities.ts  |   98.73 |    96.15 |     100 |   98.73 | 82                
  ...nel-notify.ts |   79.16 |    85.18 |     100 |   79.16 | ...03-104,120-126 
  ...l-webhooks.ts |   93.56 |    84.09 |     100 |   93.56 | ...42,292,332,334 
  daemon-status.ts |   85.71 |    83.33 |     100 |   85.71 | 101-108           
  goals.ts         |   98.94 |    91.17 |     100 |   98.94 | 143               
  health.ts        |   99.09 |    91.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.95 |    84.38 |   94.59 |   87.95 | ...1730,1775-1776 
  ...r-backfill.ts |   98.53 |    94.51 |     100 |   98.53 | ...48-249,616-617 
  ...on-runtime.ts |   91.42 |       90 |     100 |   91.42 | 56-64             
  session.ts       |   86.69 |    83.06 |    94.3 |   86.69 | ...7149,7151-7152 
  sse-events.ts    |   87.01 |    84.95 |   94.44 |   87.01 | ...40-951,954,961 
  ...e-sessions.ts |    86.9 |    80.57 |     100 |    86.9 | ...81-483,486-491 
  terminal.ts      |   92.81 |    90.35 |     100 |   92.81 | ...10-313,332-335 
  usage-stats.ts   |     100 |    95.45 |     100 |     100 | 118               
  ...space-auth.ts |   85.55 |    75.64 |     100 |   85.55 | ...21-326,331,345 
  ...el-control.ts |   86.26 |    78.94 |     100 |   86.26 | ...17-318,339-347 
  ...management.ts |   90.35 |    78.94 |     100 |   90.35 | ...52-553,576-577 
  ...d-contacts.ts |   83.62 |    94.59 |     100 |   83.62 | 123,125-142       
  ...controller.ts |   83.33 |    80.47 |      90 |   83.33 | ...1056,1061,1068 
  ...extensions.ts |    89.9 |    79.35 |   93.93 |    89.9 | ...2348,2393-2394 
  ...-file-read.ts |      91 |    80.91 |     100 |      91 | ...20-621,624-625 
  ...file-write.ts |   89.72 |    79.35 |     100 |   89.72 | ...05,719-726,807 
  ...t-branches.ts |   75.04 |     66.4 |     100 |   75.04 | ...99-604,613-620 
  ...e-git-diff.ts |   97.19 |    89.58 |     100 |   97.19 | 157-158,185-187   
  ...ce-git-log.ts |     100 |       95 |     100 |     100 | 48,73             
  workspace-git.ts |   74.71 |     87.5 |     100 |   74.71 | 83-104            
  ...github-prs.ts |   88.26 |    63.46 |     100 |   88.26 | ...38-239,264-265 
  ...-lifecycle.ts |   95.23 |    75.75 |     100 |   95.23 | ...50-151,186-187 
  ...al-control.ts |   74.17 |    69.23 |     100 |   74.17 | ...18,220-226,231 
  ...management.ts |   87.14 |    84.21 |     100 |   87.14 | ...1802,1812-1817 
  ...cp-control.ts |    73.2 |    67.54 |   85.71 |    73.2 | ...27-633,644-645 
  ...ace-models.ts |   95.53 |    89.74 |     100 |   95.53 | ...52-157,296-297 
  ...ermissions.ts |    77.9 |    72.41 |     100 |    77.9 | ...69-277,298-316 
  ...e-settings.ts |   75.67 |       75 |     100 |   75.67 | ...15-726,732-733 
  ...tup-github.ts |   77.97 |    70.58 |   84.21 |   77.97 | ...46-352,397-398 
  ...ace-skills.ts |   76.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.06 |    91.22 |   97.39 |   93.06 |                   
  access-log.ts    |   98.73 |    97.26 |     100 |   98.73 | 119,196           
  ...-timestamp.ts |     100 |      100 |     100 |     100 |                   
  ...er-helpers.ts |   63.82 |    78.15 |   81.81 |   63.82 | ...16,330,332-347 
  ...w-registry.ts |    98.8 |    81.81 |     100 |    98.8 | 107               
  ...r-handlers.ts |   97.87 |       80 |     100 |   97.87 | 27                
  ...r-response.ts |   88.75 |    82.25 |     100 |   88.75 | ...61,878,941-950 
  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.14 |     100 |   95.13 | ...66-168,423-428 
  self-origin.ts   |   76.19 |       80 |     100 |   76.19 | 45-54             
  ...e-features.ts |   95.13 |     87.5 |     100 |   95.13 | 188-194           
  ...on-archive.ts |   91.29 |    89.33 |   97.61 |   91.29 | ...1133,1196-1197 
  ...ion-export.ts |   98.57 |    90.47 |     100 |   98.57 | 85                
  session-list.ts  |   97.27 |    93.89 |     100 |   97.27 | ...1183,1392-1396 
  ...pr-refresh.ts |   98.71 |    98.57 |     100 |   98.71 | 267-270           
  ...ry-context.ts |    87.5 |       50 |     100 |    87.5 | 49-50             
  telemetry.ts     |   99.06 |    97.26 |     100 |   99.06 | ...04,873,952-954 
 src/serve/voice   |    92.7 |    91.53 |   97.72 |    92.7 |                   
  ...ice-config.ts |   84.81 |       30 |     100 |   84.81 | 91-100,104-105    
  voice-ws.ts      |   91.58 |    93.44 |      96 |   91.58 | ...68,483,521-523 
  ...oordinator.ts |     100 |    98.24 |     100 |     100 | 176               
 ...kspace-service |   89.85 |    86.73 |    91.3 |   89.85 |                   
  index.ts         |   89.49 |    86.34 |      90 |   89.49 | ...1393-1397,1400 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/services      |    92.7 |    89.68 |   98.13 |    92.7 |                   
  ...mandLoader.ts |     100 |       95 |     100 |     100 | 107               
  ...killLoader.ts |   97.19 |    85.71 |     100 |   97.19 | 142,153-154       
  ...andService.ts |   98.73 |      100 |     100 |   98.73 | 107               
  ...mandLoader.ts |   87.09 |    83.07 |     100 |   87.09 | ...35-340,345-350 
  ...omptLoader.ts |   79.55 |    88.42 |   85.71 |   79.55 | ...48,178,245-246 
  ...mandLoader.ts |   97.77 |    92.45 |     100 |   97.77 | 176,183-184       
  ...nd-factory.ts |   91.42 |    91.66 |     100 |   91.42 | 128,137-144       
  ...ation-tool.ts |     100 |    95.45 |     100 |     100 | 125               
  ...ndMetadata.ts |   98.23 |    96.72 |     100 |   98.23 | 83,87             
  commandUtils.ts  |      96 |     90.9 |     100 |      96 | 48                
  ...and-parser.ts |   90.69 |    85.71 |     100 |   90.69 | 63-66             
  ...ionService.ts |     100 |      100 |     100 |     100 |                   
  prompt-stash.ts  |   96.66 |    92.85 |     100 |   96.66 | 34-35             
  ...tree-lease.ts |   92.14 |    92.42 |     100 |   92.14 | ...91-296,329-330 
  ...low-loader.ts |     100 |    96.29 |     100 |     100 | 88                
  setup-github.ts  |    90.8 |    80.95 |     100 |    90.8 | ...49-450,457-458 
  ...-args-file.ts |   93.93 |    91.66 |    87.5 |   93.93 | 208-210,224-230   
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...e-keyterms.ts |   98.64 |    95.77 |     100 |   98.64 | 116,142-143       
  voice-model.ts   |     100 |      100 |     100 |     100 |                   
  voice-service.ts |    90.4 |    87.87 |     100 |    90.4 | ...81,288,353-358 
  ...e-settings.ts |     100 |    95.23 |     100 |     100 | 19                
  ...ranscriber.ts |   91.77 |    87.11 |   97.22 |   91.77 | ...96-898,901-903 
 ...s/housekeeping |      93 |    88.34 |      95 |      93 |                   
  scheduler.ts     |      93 |    88.34 |      95 |      93 | ...57-359,411-415 
 ...rvices/insight |     100 |      100 |     100 |     100 |                   
  dates.ts         |     100 |      100 |     100 |     100 |                   
 ...ght/generators |   88.94 |    86.86 |   96.29 |   88.94 |                   
  DataProcessor.ts |   88.31 |    86.84 |      95 |   88.31 | ...1368,1372-1379 
  ...tGenerator.ts |   98.24 |    85.71 |     100 |   98.24 | 47                
  ...teRenderer.ts |     100 |      100 |     100 |     100 |                   
 .../insight/types |       0 |       50 |      50 |       0 |                   
  ...sightTypes.ts |       0 |        0 |       0 |       0 |                   
  ...sightTypes.ts |       0 |        0 |       0 |       0 | 1                 
 ...mpt-processors |   97.27 |    94.25 |     100 |   97.27 |                   
  ...tProcessor.ts |     100 |      100 |     100 |     100 |                   
  ...eProcessor.ts |   94.52 |       85 |     100 |   94.52 | 46-47,93-94       
  ...tionParser.ts |     100 |      100 |     100 |     100 |                   
  ...lProcessor.ts |   97.41 |    95.83 |     100 |   97.41 | 96-99             
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/services/tips |   97.27 |    84.61 |     100 |   97.27 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  tipHistory.ts    |   92.59 |       70 |     100 |   92.59 | ...24,146,153,162 
  tipRegistry.ts   |     100 |      100 |     100 |     100 |                   
  tipScheduler.ts  |     100 |    91.66 |     100 |     100 | 55                
 src/startup       |   88.99 |    83.47 |    90.9 |   88.99 |                   
  ...p-prefetch.ts |   98.09 |    94.23 |    87.5 |   98.09 | 50,209,225-226    
  ...reeStartup.ts |   80.53 |     74.6 |     100 |   80.53 | ...94,403,409-412 
 src/test-utils    |    94.6 |    76.66 |      80 |    94.6 |                   
  ci-env.ts        |      88 |     62.5 |     100 |      88 | 22-23,28          
  ...omMatchers.ts |   69.69 |       50 |      50 |   69.69 | 32-35,37-39,45-47 
  ...mised-lock.ts |     100 |      100 |   66.66 |     100 |                   
  ...lot-client.ts |     100 |    66.66 |     100 |     100 | 31,39             
  ...andContext.ts |     100 |      100 |     100 |     100 |                   
  render.tsx       |     100 |      100 |     100 |     100 |                   
 src/ui            |   71.09 |    78.17 |   70.65 |   71.09 |                   
  App.tsx          |   33.33 |       75 |   33.33 |   33.33 | 32-86             
  AppContainer.tsx |   76.62 |    73.37 |   71.05 |   76.62 | ...4465,4581-4587 
  ...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.33 |    77.27 |   41.66 |   68.33 | ...63-465,495-500 
  ...inePresets.ts |   96.27 |    83.87 |     100 |   96.27 | ...97,402,410-412 
  systemInfo.ts    |   95.09 |    90.27 |     100 |   95.09 | ...54-255,260-264 
  ...InfoFields.ts |    87.5 |    65.85 |     100 |    87.5 | ...24-125,146-147 
  textConstants.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...e-relaunch.ts |   89.61 |    86.66 |      50 |   89.61 | 56-61,83-84       
 src/ui/auth       |   69.23 |    72.03 |   61.22 |   69.23 |                   
  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 |     100 |   94.83 | ...33-234,253-259 
  ...rSetupFlow.ts |   59.79 |    58.33 |     100 |   59.79 | ...82-403,420-463 
 src/ui/commands   |    84.6 |    84.46 |   91.68 |    84.6 |                   
  aboutCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...or-command.ts |     100 |    95.65 |     100 |     100 | 104,182           
  agentsCommand.ts |   83.78 |      100 |      60 |   83.78 | 30-32,42-44       
  ...odeCommand.ts |    93.1 |    95.23 |     100 |    93.1 | 77-82             
  arenaCommand.ts  |   63.89 |    65.71 |   65.21 |   63.89 | ...01-606,691-699 
  authCommand.ts   |     100 |      100 |     100 |     100 |                   
  branchCommand.ts |     100 |      100 |     100 |     100 |                   
  btwCommand.ts    |   94.32 |    77.41 |     100 |   94.32 | 35-36,114-119     
  bugCommand.ts    |     100 |    77.77 |     100 |     100 | 28,62             
  cdCommand.ts     |    92.3 |    82.75 |     100 |    92.3 | ...,94-99,178,187 
  clearCommand.ts  |    80.9 |    70.83 |     100 |    80.9 | ...28-129,137-146 
  commands.ts      |   97.45 |    96.66 |     100 |   97.45 | 153-155           
  ...essCommand.ts |   80.71 |     64.7 |     100 |   80.71 | ...05-206,220-223 
  ...astCommand.ts |   84.75 |    76.47 |     100 |   84.75 | ...96-102,130-135 
  ...ig-command.ts |   93.12 |    88.42 |     100 |   93.12 | ...07-315,321-323 
  ...extCommand.ts |   73.75 |    74.02 |   83.33 |   73.75 | ...72-605,616-617 
  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 
  peers-command.ts |     100 |    94.36 |     100 |     100 | 59,70,223,228     
  ...onsCommand.ts |     100 |      100 |     100 |     100 |                   
  planCommand.ts   |   78.82 |    76.92 |     100 |   78.82 | 30-35,51-56,68-73 
  quitCommand.ts   |     100 |      100 |     100 |     100 |                   
  recapCommand.ts  |   21.81 |      100 |      50 |   21.81 | 24-73             
  ...ns-command.ts |   98.83 |    81.81 |     100 |   98.83 | 100               
  ...berCommand.ts |     100 |     87.5 |     100 |     100 | 46                
  renameCommand.ts |    89.6 |       90 |     100 |    89.6 | ...72-176,212-219 
  ...oreCommand.ts |   90.96 |    86.04 |     100 |   90.96 | ...41-146,177-178 
  resumeCommand.ts |     100 |      100 |     100 |     100 |                   
  rewindCommand.ts |   81.25 |      100 |      50 |   81.25 | 20-22             
  ...ngsCommand.ts |     100 |      100 |     100 |     100 |                   
  ...hubCommand.ts |   89.47 |       75 |      80 |   89.47 | 54-59             
  skillsCommand.ts |   78.82 |    81.81 |     100 |   78.82 | 37-52,78,97       
  statsCommand.ts  |   90.65 |    76.73 |     100 |   90.65 | ...30-733,825-832 
  ...ineCommand.ts |     100 |      100 |     100 |     100 |                   
  ...aryCommand.ts |   73.04 |     82.3 |      90 |   73.04 | ...20-547,561-565 
  tasksCommand.ts  |   77.33 |    72.13 |     100 |   77.33 | ...46-150,173-178 
  ...tupCommand.ts |     100 |      100 |     100 |     100 |                   
  themeCommand.ts  |     100 |      100 |     100 |     100 |                   
  toolsCommand.ts  |     100 |      100 |     100 |     100 |                   
  trustCommand.ts  |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...te-command.ts |     100 |    94.11 |     100 |     100 | 74,148            
  vimCommand.ts    |     100 |      100 |     100 |     100 |                   
  voice-command.ts |   93.63 |       88 |     100 |   93.63 | 36,98-103         
  ...owsCommand.ts |   94.38 |    85.29 |     100 |   94.38 | ...78-183,282-287 
 src/ui/components |   73.25 |    80.22 |    77.7 |   73.25 |                   
  AboutBox.tsx     |     100 |      100 |     100 |     100 |                   
  AnsiOutput.tsx   |   65.57 |      100 |      50 |   65.57 | 69-90             
  ApiKeyInput.tsx  |       0 |        0 |       0 |       0 | 1-97              
  AppHeader.tsx    |    88.7 |       75 |     100 |    88.7 | 36,38-43,45       
  ...odeDialog.tsx |   87.24 |    72.22 |   33.33 |   87.24 | ...85,233-238,245 
  AsciiArt.ts      |     100 |      100 |     100 |     100 |                   
  ...Indicator.tsx |   95.65 |    66.66 |     100 |   95.65 | 27,52             
  ...TextInput.tsx |   89.06 |    90.78 |     100 |   89.06 | ...87-289,303-305 
  Composer.tsx     |   94.54 |    66.66 |     100 |   94.54 | ...-76,88,143,158 
  ...entPrompt.tsx |     100 |      100 |     100 |     100 |                   
  ...ryDisplay.tsx |   75.89 |    62.06 |     100 |   75.89 | ...,88,93-108,113 
  ...geDisplay.tsx |   68.42 |    57.14 |     100 |   68.42 | 16-17,31-32,42-50 
  CronPill.tsx     |     100 |    93.75 |     100 |     100 | 19                
  ...ification.tsx |      84 |       60 |     100 |      84 | 23-24,40-42       
  ...gProfiler.tsx |       0 |        0 |       0 |       0 | 1-36              
  ...ogManager.tsx |   11.28 |      100 |       0 |   11.28 | 71-598            
  DiffDialog.tsx   |    53.5 |     37.5 |   69.23 |    53.5 | ...32-737,747-760 
  ...ngsDialog.tsx |    8.44 |      100 |       0 |    8.44 | 37-195            
  EffortDialog.tsx |   97.36 |      100 |     100 |   97.36 | 55-56             
  ExitWarning.tsx  |     100 |      100 |     100 |     100 |                   
  ...hProgress.tsx |    87.8 |    33.33 |     100 |    87.8 | 28-31,56          
  ...gsDisplay.tsx |     100 |    96.87 |   83.33 |     100 | 69                
  ...ustDialog.tsx |     100 |      100 |     100 |     100 |                   
  Footer.tsx       |   81.27 |    69.23 |      50 |   81.27 | ...06,245,267-272 
  GoalPill.tsx     |   93.51 |    81.81 |     100 |   93.51 | 37-38,106-109,123 
  Header.tsx       |   98.65 |    94.73 |     100 |   98.65 | 173,175           
  Help.tsx         |   98.33 |       90 |     100 |   98.33 | ...25,382,448-449 
  ...emDisplay.tsx |   79.69 |    67.61 |     100 |   79.69 | ...17,520,523-529 
  ...ngeDialog.tsx |     100 |      100 |     100 |     100 |                   
  InputPrompt.tsx  |   86.26 |     83.3 |      80 |   86.26 | ...2231,2252,2348 
  ...Shortcuts.tsx |     100 |       88 |     100 |     100 | 98,119            
  ...Indicator.tsx |   98.18 |    97.82 |     100 |   98.18 | 161-162           
  ...firmation.tsx |   91.42 |      100 |      50 |   91.42 | 26-31             
  MainContent.tsx  |   95.88 |    96.03 |   46.15 |   95.88 | ...20,523-527,530 
  MemoryDialog.tsx |   86.59 |    80.15 |     100 |   86.59 | ...34-435,485,553 
  ...geDisplay.tsx |       0 |        0 |       0 |       0 | 1-41              
  ModelDialog.tsx  |   85.22 |    74.17 |     100 |   85.22 | ...1042,1098,1100 
  ...tsDisplay.tsx |     100 |    97.22 |     100 |     100 | 270               
  ...fications.tsx |   16.66 |      100 |       0 |   16.66 | 14-56             
  ...onsDialog.tsx |    2.13 |      100 |       0 |    2.13 | 62-133,148-1004   
  ...ryDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...icePrompt.tsx |   92.64 |    85.71 |     100 |   92.64 | 102-106,134-139   
  PrepareLabel.tsx |   91.66 |    77.27 |     100 |   91.66 | 73-75,77-79,110   
  ...atePrompt.tsx |    8.57 |      100 |       0 |    8.57 | 24-55,58-134      
  ...geDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...ngDisplay.tsx |   21.42 |      100 |       0 |   21.42 | 13-39             
  ...hProgress.tsx |   85.25 |    88.46 |     100 |   85.25 | 121-147           
  ...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 |   83.66 |    72.13 |     100 |   83.66 | ...96,402,444-466 
  ...onPreview.tsx |   93.58 |    83.78 |     100 |   93.58 | ...,70-71,195-197 
  ...ryDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...putPrompt.tsx |   92.06 |    86.36 |   83.33 |   92.06 | ...,70-72,120-123 
  ...tedDialog.tsx |     100 |      100 |     100 |     100 |                   
  ...ngsDialog.tsx |   71.55 |    73.89 |   69.23 |   71.55 | ...1252,1258-1259 
  ...ionDialog.tsx |    92.3 |    96.15 |   33.33 |    92.3 | 60-63,68-75,164   
  ...putPrompt.tsx |    15.9 |      100 |       0 |    15.9 | 20-63             
  ...Indicator.tsx |   57.14 |      100 |       0 |   57.14 | 12-15             
  ...MoreLines.tsx |      28 |      100 |       0 |      28 | 18-40             
  ...iewDialog.tsx |   97.77 |    87.67 |     100 |   97.77 | ...97,305-307,324 
  ...tsDisplay.tsx |   95.86 |       75 |     100 |   95.86 | 67-71             
  ...ionPicker.tsx |       0 |        0 |       0 |       0 | 1-171             
  ...tivityTab.tsx |    3.94 |      100 |       0 |    3.94 | 27-275            
  StatsDialog.tsx  |    8.64 |      100 |       0 |    8.64 | ...76-111,130-322 
  StatsDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...ciencyTab.tsx |    78.9 |    56.52 |     100 |    78.9 | ...26,213,262-288 
  ...atmapView.tsx |    8.98 |      100 |       0 |    8.98 | 20-107            
  ...essionTab.tsx |      80 |    66.66 |     100 |      80 | ...70-277,283-300 
  ...ineDialog.tsx |    93.9 |    86.88 |     100 |    93.9 | ...20,282,302-304 
  ...yTodoList.tsx |   96.36 |    88.23 |     100 |   96.36 | 138-141           
  ...nsDisplay.tsx |   95.62 |    87.09 |     100 |   95.62 | ...24-125,273-275 
  ...inalImage.tsx |     100 |    93.93 |     100 |     100 | 75,129            
  ThemeDialog.tsx  |   89.95 |    46.15 |      75 |   89.95 | ...71-173,243-245 
  Tips.tsx         |   93.54 |       75 |     100 |   93.54 | 39-40             
  TodoDisplay.tsx  |     100 |      100 |     100 |     100 |                   
  ...tsDisplay.tsx |     100 |     87.5 |     100 |     100 | 31-32             
  TrustDialog.tsx  |     100 |    83.33 |     100 |     100 | 72-87             
  ...ification.tsx |   36.36 |      100 |       0 |   36.36 | 15-22             
  ...Indicator.tsx |    92.5 |     87.5 |     100 |    92.5 | 50-53             
  ...ackDialog.tsx |    7.84 |      100 |       0 |    7.84 | 24-134            
  ...xitDialog.tsx |   80.36 |    43.47 |      60 |   80.36 | ...24-238,248-251 
  ...odeVisuals.ts |   97.22 |    85.71 |     100 |   97.22 | 25                
  ...s-helpers.tsx |   66.25 |    81.25 |      50 |   66.25 | 25-32,46-53,62-72 
 ...nts/agent-view |    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.78 |    87.65 |   86.79 |   90.78 |                   
  ...orMessage.tsx |     100 |      100 |     100 |     100 |                   
  ...ionDialog.tsx |   89.23 |     84.9 |   81.81 |   89.23 | ...75,593,611-613 
  BtwMessage.tsx   |     100 |      100 |     100 |     100 |                   
  ...upDisplay.tsx |     100 |    94.73 |     100 |     100 | ...43,289,402,432 
  ...onMessage.tsx |   93.24 |       85 |     100 |   93.24 | 73-75,77,79       
  ...nMessages.tsx |   94.11 |    95.91 |   76.92 |   94.11 | ...47-349,352-355 
  DiffRenderer.tsx |   93.17 |    86.02 |     100 |   93.17 | ...07,235-236,302 
  ...tsDisplay.tsx |   97.08 |    77.77 |     100 |   97.08 | 95,97,106         
  ...usMessage.tsx |   81.73 |     65.9 |      75 |   81.73 | ...10-214,222,245 
  ...tsDisplay.tsx |   95.52 |    88.31 |     100 |   95.52 | ...40,142,175-180 
  ...ssMessage.tsx |    12.5 |      100 |       0 |    12.5 | 18-59             
  ...edMessage.tsx |   21.05 |      100 |       0 |   21.05 | 23-39             
  ...sMessages.tsx |   59.04 |       50 |    37.5 |   59.04 | ...21-126,147-159 
  ...ryMessage.tsx |   13.63 |      100 |       0 |   13.63 | 23-64             
  ...onMessage.tsx |   91.87 |    82.51 |     100 |   91.87 | ...49-651,658-660 
  ...upMessage.tsx |   98.38 |    95.38 |     100 |   98.38 | 188-191,422       
  ToolMessage.tsx  |   95.04 |    89.55 |     100 |   95.04 | ...1075,1120-1122 
 ...ponents/shared |    86.4 |    82.05 |    86.6 |    86.4 |                   
  ...ctionList.tsx |     100 |      100 |      75 |     100 |                   
  ...tonSelect.tsx |     100 |      100 |     100 |     100 |                   
  ...rBoundary.tsx |     100 |      100 |     100 |     100 |                   
  MaxSizedBox.tsx  |   84.71 |    86.95 |      90 |   84.71 | ...67-568,685-686 
  MultiSelect.tsx  |   93.58 |       75 |     100 |   93.58 | ...43,199-201,211 
  ...tonSelect.tsx |     100 |      100 |     100 |     100 |                   
  ...ontroller.tsx |     100 |    83.33 |     100 |     100 | 73,93-95          
  ...eSelector.tsx |     100 |       60 |     100 |     100 | 40-45             
  ...lableList.tsx |   90.37 |    82.85 |   18.18 |   90.37 | ...60-63,65,73-76 
  StaticRender.tsx |     100 |      100 |     100 |     100 |                   
  TextInput.tsx    |    80.8 |    67.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 |    3.99 |      100 |       0 |    3.99 |                   
  ...gerDialog.tsx |    3.99 |      100 |       0 |    3.99 | 79-137,140-678    
 ...ents/subagents |   30.87 |        0 |       0 |   30.87 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-11              
  reducers.tsx     |    12.1 |      100 |       0 |    12.1 | 33-190            
  types.ts         |     100 |      100 |     100 |     100 |                   
  utils.ts         |   10.95 |      100 |       0 |   10.95 | ...1,56-57,60-102 
 ...bagents/create |    9.13 |      100 |       0 |    9.13 |                   
  ...ionWizard.tsx |    7.28 |      100 |       0 |    7.28 | 34-299            
  ...rSelector.tsx |   14.75 |      100 |       0 |   14.75 | 26-85             
  ...onSummary.tsx |    4.26 |      100 |       0 |    4.26 | 27-331            
  ...tionInput.tsx |    8.63 |      100 |       0 |    8.63 | 23-177            
  ...dSelector.tsx |   33.33 |      100 |       0 |   33.33 | 20-21,26-27,36-63 
  ...nSelector.tsx |    37.5 |      100 |       0 |    37.5 | 20-21,26-27,36-58 
  ...EntryStep.tsx |   12.76 |      100 |       0 |   12.76 | 34-78             
  ToolSelector.tsx |    4.16 |      100 |       0 |    4.16 | 31-253            
 ...bagents/manage |    21.6 |    59.52 |   27.27 |    21.6 |                   
  ...ctionStep.tsx |   10.25 |      100 |       0 |   10.25 | 21-103            
  ...eleteStep.tsx |   20.93 |      100 |       0 |   20.93 | 23-62             
  ...tEditStep.tsx |   25.53 |      100 |       0 |   25.53 | ...2,37-38,51-124 
  ...ctionStep.tsx |   35.61 |    59.52 |     100 |   35.61 | ...21-433,438-440 
  ...iewerStep.tsx |   13.72 |      100 |       0 |   13.72 | 18-73             
  ...gerDialog.tsx |    6.74 |      100 |       0 |    6.74 | 35-341            
 ...mponents/views |    70.1 |    72.89 |   61.11 |    70.1 |                   
  ContextUsage.tsx |   71.49 |    64.86 |      80 |   71.49 | ...30-436,473-567 
  DoctorReport.tsx |     9.8 |      100 |       0 |     9.8 | 25-54,57-131      
  ...sionsList.tsx |   88.05 |       75 |     100 |   88.05 | 70-77             
  McpStatus.tsx    |   92.01 |     73.8 |     100 |   92.01 | ...36,175-177,262 
  SkillsList.tsx   |   20.51 |      100 |       0 |   20.51 | 17-20,27-57       
  ToolsList.tsx    |     100 |      100 |     100 |     100 |                   
 src/ui/contexts   |   86.47 |    82.27 |   86.48 |   86.47 |                   
  ...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 |   91.07 |    81.81 |     100 |   91.07 | 47-48,60-62       
  ...deContext.tsx |     100 |      100 |      50 |     100 |                   
  ...onContext.tsx |   80.77 |    79.56 |    92.3 |   80.77 | ...31-434,443-446 
  ...gsContext.tsx |     100 |      100 |     100 |     100 |                   
  ...usContext.tsx |     100 |      100 |     100 |     100 |                   
  ...ngContext.tsx |   71.42 |       50 |     100 |   71.42 | 17-20             
  ...utContext.tsx |   85.71 |      100 |   66.66 |   85.71 | 13-14             
  ...edContext.tsx |     100 |      100 |      50 |     100 |                   
  ...nsContext.tsx |   88.88 |       50 |     100 |   88.88 | 156-157           
  ...teContext.tsx |   86.66 |       50 |     100 |   86.66 | 237-238           
  ...deContext.tsx |      80 |     87.5 |      75 |      80 | ...11-112,118-120 
  ...rtContext.tsx |     100 |      100 |     100 |     100 |                   
 src/ui/daemon     |   89.51 |    76.92 |   95.65 |   89.51 |                   
  ...ui-adapter.ts |   89.51 |    76.92 |   95.65 |   89.51 | ...59,877-878,964 
 src/ui/editors    |   93.33 |    85.71 |   66.66 |   93.33 |                   
  ...ngsManager.ts |   93.33 |    85.71 |   66.66 |   93.33 | 49,63-64          
 src/ui/hooks      |   86.07 |     84.2 |   87.81 |   86.07 |                   
  ...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.55 |    73.58 |     100 |   94.55 | ...87-288,293-294 
  ...dProcessor.ts |   86.83 |    71.86 |   83.33 |   86.83 | ...1536,1565-1569 
  ...rt-command.ts |     100 |      100 |     100 |     100 |                   
  ...sced-flush.ts |     100 |      100 |     100 |     100 |                   
  ...llm-stream.ts |   87.63 |    84.43 |   78.72 |   87.63 | ...5813-5815,5817 
  ...ng-enabled.ts |     100 |      100 |     100 |     100 |                   
  ...oice-input.ts |   92.41 |    82.08 |   66.66 |   92.41 | ...12,514-515,670 
  ...ke-repaint.ts |     100 |      100 |     100 |     100 |                   
  ...amingState.ts |   12.22 |      100 |       0 |   12.22 | 54-157            
  ...agerDialog.ts |   88.23 |      100 |     100 |   88.23 | 20,24             
  ...dScrollbar.ts |     100 |      100 |     100 |     100 |                   
  ...ationFrame.ts |      42 |       75 |     100 |      42 | 42-44,53-59,62-87 
  ...odeCommand.ts |   58.82 |      100 |     100 |   58.82 | 28,33-48          
  ...enaCommand.ts |      85 |      100 |     100 |      85 | 23-24,29          
  ...aInProcess.ts |   27.92 |       80 |      25 |   27.92 | ...69-170,173-175 
  ...Completion.ts |   86.44 |    88.48 |     100 |   86.44 | ...14-515,525-541 
  ...ifications.ts |   87.82 |    96.77 |     100 |   87.82 | 138-152           
  ...tIndicator.ts |   88.28 |    81.57 |     100 |   88.28 | ...66,175,179-187 
  ...waySummary.ts |   96.26 |       75 |     100 |   96.26 | 126-128,170       
  ...ndTaskView.ts |   94.89 |    77.55 |     100 |   94.89 | 164-168,257,263   
  ...chedScroll.ts |     100 |      100 |     100 |     100 |                   
  ...ketedPaste.ts |    23.8 |      100 |       0 |    23.8 | 19-37             
  ...nchCommand.ts |   96.03 |    88.75 |     100 |   96.03 | ...04-205,362-365 
  ...ompletion.tsx |   97.09 |    87.23 |     100 |   97.09 | ...23-324,334-335 
  ...dMigration.ts |    92.1 |    88.88 |     100 |    92.1 | 42-44             
  useCompletion.ts |   96.29 |    90.56 |     100 |   96.29 | ...17-218,222-223 
  ...nitMessage.ts |     100 |      100 |     100 |     100 |                   
  ...extualTips.ts |   78.26 |       50 |     100 |   78.26 | ...2,75-79,96-104 
  ...eteCommand.ts |   89.52 |    90.69 |     100 |   89.52 | ...98-106,114-115 
  ...ialogClose.ts |   36.11 |       10 |     100 |   36.11 | ...89-195,202-207 
  useDiffData.ts   |   11.62 |      100 |       0 |   11.62 | 44-87             
  ...oublePress.ts |   53.12 |       75 |     100 |   53.12 | 33-35,41-54       
  ...orSettings.ts |     100 |      100 |     100 |     100 |                   
  ...Completion.ts |   99.12 |    97.67 |     100 |   99.12 | 182-183           
  ...ionUpdates.ts |   93.72 |    92.98 |     100 |   93.72 | ...87-291,314-320 
  ...agerDialog.ts |   88.88 |      100 |     100 |   88.88 | 21,25             
  ...backDialog.ts |    63.9 |    76.47 |   66.66 |    63.9 | ...66-168,190-191 
  useFocus.ts      |     100 |      100 |     100 |     100 |                   
  ...olderTrust.ts |     100 |    93.33 |     100 |     100 | 62                
  ...ggestions.tsx |   96.47 |    78.94 |     100 |   96.47 | 121,155-156       
  ...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 |    94.94 |     100 |     100 | ...43,279,349,359 
  ...delCommand.ts |     100 |       96 |     100 |     100 | 61                
  ...ouseEvents.ts |   94.89 |       95 |   83.33 |   94.89 | 78-82             
  ...raseCycler.ts |   84.74 |    76.47 |     100 |   84.74 | ...49,52-53,69-71 
  ...rredEditor.ts |   58.33 |    22.22 |     100 |   58.33 | 23-27,29-33       
  ...derUpdates.ts |   85.29 |    80.28 |    92.3 |   85.29 | ...36,351-361,441 
  useQwenAuth.ts   |     100 |      100 |     100 |     100 |                   
  ...lScheduler.ts |   89.13 |     86.9 |     100 |   89.13 | ...61-463,496-506 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-7               
  ...umeCommand.ts |   96.51 |    90.19 |     100 |   96.51 | 279,306-311       
  ...ompletion.tsx |   90.67 |    83.33 |     100 |   90.67 | ...02,105,138-141 
  ...ectionList.ts |   97.12 |    96.19 |     100 |   97.12 | ...92-193,247-250 
  ...sionPicker.ts |   92.87 |    90.35 |     100 |   92.87 | ...99-501,503-505 
  ...earchInput.ts |     100 |    97.29 |     100 |     100 | 82                
  ...ngsCommand.ts |   18.75 |      100 |       0 |   18.75 | 10-25             
  ...ellHistory.ts |   93.28 |    80.95 |     100 |   93.28 | ...96,153-154,164 
  ...oryCommand.ts |   85.48 |    58.33 |     100 |   85.48 | 22-28,40,71       
  ...agerDialog.ts |   88.23 |      100 |     100 |   88.23 | 20,24             
  ...Completion.ts |   82.79 |    85.33 |   94.73 |   82.79 | ...86-688,696-732 
  ...tateAndRef.ts |     100 |      100 |     100 |     100 |                   
  ...tatsDialog.ts |     100 |      100 |     100 |     100 |                   
  useStatusLine.ts |   97.32 |    93.93 |     100 |   97.32 | ...18-422,518-525 
  ...eateDialog.ts |   88.23 |      100 |     100 |   88.23 | 14,18             
  ...mInProcess.ts |   27.35 |       80 |      25 |   27.35 | ...82-183,186-188 
  ...tification.ts |     100 |     87.5 |     100 |     100 | 50                
  ...alProgress.ts |   67.34 |    58.82 |   66.66 |   67.34 | 52-53,61-68,79-85 
  ...rminalSize.ts |     100 |      100 |     100 |     100 |                   
  ...emeCommand.ts |    79.2 |    35.29 |     100 |    79.2 | ...15-116,120-121 
  useTimer.ts      |   97.59 |    94.73 |     100 |   97.59 | 17-18             
  ...lMigration.ts |       0 |        0 |       0 |       0 |                   
  ...rustModify.ts |     100 |    90.47 |     100 |     100 | 112,134           
  useTurnDiffs.ts  |   95.12 |    78.57 |     100 |   95.12 | 133-134,156-157   
  ...elcomeBack.ts |   87.36 |     90.9 |     100 |   87.36 | ...,94-96,114-115 
  ...reeSession.ts |   93.75 |       70 |     100 |   93.75 | 47-48,72          
  vim.ts           |      74 |    67.56 |   69.23 |      74 | ...1854-1861,1869 
 src/ui/layouts    |   91.25 |    89.47 |     100 |   91.25 |                   
  ...AppLayout.tsx |   90.99 |     87.5 |     100 |   90.99 | 61-63,111-116,152 
  ...AppLayout.tsx |   91.66 |    92.85 |     100 |   91.66 | 75-80             
 src/ui/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/selection  |   93.56 |    86.19 |     100 |   93.56 |                   
  screen-buffer.ts |   94.73 |    66.66 |     100 |   94.73 | 51-52             
  ...ion-coords.ts |     100 |      100 |     100 |     100 |                   
  ...ction-span.ts |   93.81 |     92.1 |     100 |   93.81 | ...1,45-46,99-100 
  ...tion-state.ts |     100 |      100 |     100 |     100 |                   
  ...ction-text.ts |   93.85 |    93.44 |     100 |   93.85 | 30-34,130-131     
  ...selection.tsx |   91.88 |    78.57 |     100 |   91.88 | ...16-417,446-447 
 src/ui/state      |      95 |    81.81 |     100 |      95 |                   
  extensions.ts    |      95 |    81.81 |     100 |      95 | 69-70,89          
 src/ui/themes     |    98.5 |    73.17 |     100 |    98.5 |                   
  ansi-light.ts    |     100 |      100 |     100 |     100 |                   
  ansi.ts          |     100 |      100 |     100 |     100 |                   
  atom-one-dark.ts |     100 |      100 |     100 |     100 |                   
  ayu-light.ts     |     100 |      100 |     100 |     100 |                   
  ayu.ts           |     100 |      100 |     100 |     100 |                   
  color-utils.ts   |   99.23 |    97.05 |     100 |   99.23 | 277-278           
  default-light.ts |     100 |      100 |     100 |     100 |                   
  default.ts       |     100 |      100 |     100 |     100 |                   
  ...inal-theme.ts |   88.59 |    85.96 |     100 |   88.59 | ...57-261,266-270 
  dracula.ts       |     100 |      100 |     100 |     100 |                   
  github-dark.ts   |     100 |      100 |     100 |     100 |                   
  github-light.ts  |     100 |      100 |     100 |     100 |                   
  googlecode.ts    |     100 |      100 |     100 |     100 |                   
  no-color.ts      |     100 |      100 |     100 |     100 |                   
  qwen-dark.ts     |     100 |      100 |     100 |     100 |                   
  qwen-light.ts    |     100 |      100 |     100 |     100 |                   
  ...tic-tokens.ts |     100 |      100 |     100 |     100 |                   
  ...-of-purple.ts |     100 |      100 |     100 |     100 |                   
  theme-manager.ts |   88.68 |    84.52 |     100 |   88.68 | ...83-392,397-398 
  theme.ts         |     100 |    38.02 |     100 |     100 | ...34-449,457-461 
  xcode.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/utils      |   87.98 |    86.07 |    96.1 |   87.98 |                   
  ...Colorizer.tsx |   80.31 |    85.41 |     100 |   80.31 | ...00-201,313-339 
  ...nRenderer.tsx |   80.07 |     75.6 |     100 |   80.07 | ...70,274,332-333 
  ...wnDisplay.tsx |   92.87 |     93.5 |     100 |   92.87 | ...,955,1002-1020 
  ...idDiagram.tsx |   87.79 |    95.34 |     100 |   87.79 | 156-179           
  ...eRenderer.tsx |   93.63 |    81.77 |   95.23 |   93.63 | ...47-750,803-808 
  ...odeDisplay.ts |   94.28 |    85.71 |     100 |   94.28 | 23,40             
  asciiCharts.ts   |    96.7 |     87.5 |     100 |    96.7 | 170-177,278       
  ...dWorkUtils.ts |     100 |      100 |     100 |     100 |                   
  ...boardUtils.ts |    52.9 |    74.15 |    92.3 |    52.9 | ...29,632-641,644 
  commandUtils.ts  |   98.61 |    93.27 |     100 |   98.61 | 189,217-218,424   
  computeStats.ts  |     100 |      100 |     100 |     100 |                   
  customBanner.ts  |   90.68 |    91.22 |     100 |   90.68 | ...13,324-327,334 
  displayUtils.ts  |   73.84 |    73.91 |     100 |   73.84 | ...34,36-40,42-46 
  ...coalescing.ts |     100 |      100 |     100 |     100 |                   
  formatters.ts    |   94.87 |    98.24 |     100 |   94.87 | 116-119           
  goal-runtime.ts  |   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.1 |     100 |   96.07 | 104-107           
  ...mage-parts.ts |   97.75 |       95 |     100 |   97.75 | 82-83             
  inline-math.ts   |   98.48 |    95.23 |     100 |   98.48 | 129-130           
  input-mouse.ts   |     100 |    85.71 |     100 |     100 | 48,93             
  isNarrowWidth.ts |     100 |      100 |     100 |     100 |                   
  ...olDetector.ts |   68.81 |       75 |   66.66 |   68.81 | ...27-132,160-161 
  latexRenderer.ts |   94.95 |     73.8 |     100 |   94.95 | ...76-178,184-187 
  layoutUtils.ts   |     100 |      100 |     100 |     100 |                   
  list-mouse.ts    |     100 |      100 |     100 |     100 |                   
  ...ightLoader.ts |     100 |       95 |     100 |     100 | 81                
  ...nUtilities.ts |   98.72 |    94.36 |     100 |   98.72 | 145-146           
  ...t-position.ts |     100 |     87.5 |     100 |     100 | 85                
  ...geRenderer.ts |   86.51 |    70.16 |   95.12 |   86.51 | ...1286,1326-1332 
  ...alRenderer.ts |   86.69 |     71.9 |     100 |   86.69 | ...1476,1513-1519 
  ...lsBySource.ts |     100 |    95.23 |     100 |     100 | 84                
  mouse.ts         |   92.85 |    74.19 |     100 |   92.85 | ...38,145,149-152 
  osc8.ts          |   91.33 |    79.03 |     100 |   91.33 | ...73,273,277-278 
  ...red-height.ts |   98.38 |    97.14 |     100 |   98.38 | 195-197           
  ...mConstants.ts |     100 |      100 |     100 |     100 |                   
  restoreGoal.ts   |     100 |      100 |     100 |     100 |                   
  ...storyUtils.ts |   84.37 |    81.09 |     100 |   84.37 | ...03-625,759-760 
  ...ickerUtils.ts |     100 |      100 |     100 |     100 |                   
  ...evel-label.ts |   77.77 |    66.66 |     100 |   77.77 | 18,22-24          
  ...are-cursor.ts |   89.47 |    85.71 |     100 |   89.47 | 39-44             
  ...ataService.ts |   93.17 |     79.1 |     100 |   93.17 | ...14,227,254-256 
  suggestions.ts   |     100 |      100 |     100 |     100 |                   
  ...izedOutput.ts |   95.19 |      100 |   88.88 |   95.19 | 121-126           
  ...nal-buffer.ts |     100 |      100 |     100 |     100 |                   
  ...e-renderer.ts |   90.61 |    83.44 |     100 |   90.61 | ...80,482-484,607 
  ...ize-reflow.ts |     100 |     92.3 |     100 |     100 | 57,62,209,217,347 
  ...wOptimizer.ts |     100 |    94.73 |     100 |     100 | 35,78             
  terminalSetup.ts |    4.37 |      100 |       0 |    4.37 | 44-393            
  textUtils.ts     |   98.71 |    95.72 |     100 |   98.71 | 292-293,478-479   
  ...background.ts |     100 |      100 |     100 |     100 |                   
  todoSnapshot.ts  |   95.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.23 |    89.82 |   96.12 |   92.23 |                   
  ...p-profiler.ts |   98.39 |    92.59 |     100 |   98.39 | 141,185,235       
  acpModelUtils.ts |   97.36 |    95.09 |     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.22 |    85.18 |     100 |   89.22 | ...23-424,431-432 
  ...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 
  ...arResolver.ts |   97.14 |    96.55 |     100 |   97.14 | 125-126           
  errors.ts        |   97.56 |    94.64 |     100 |   97.56 | 69-70,304-305     
  events.ts        |     100 |      100 |     100 |     100 |                   
  ...on-mention.ts |   88.48 |     82.6 |     100 |   88.48 | ...56-160,164-168 
  gitUtils.ts      |   92.85 |    86.66 |     100 |   92.85 | ...13-116,164-167 
  ...tyWarnings.ts |     100 |      100 |     100 |     100 |                   
  ...lationInfo.ts |   97.81 |    94.69 |     100 |   97.81 | ...03,420-421,466 
  ...projection.ts |   95.27 |    95.58 |     100 |   95.27 | 140-145           
  jsonc-editor.ts  |   93.18 |    92.66 |     100 |   93.18 | ...80-381,384-385 
  load-undici.ts   |     100 |      100 |     100 |     100 |                   
  ...npm-update.ts |   86.64 |    77.02 |     100 |   86.64 | ...03-304,335-345 
  math.ts          |       0 |        0 |       0 |       0 | 1-15              
  ...er-mention.ts |     100 |    66.66 |     100 |     100 | 14,30,44-46       
  ...iagnostics.ts |   94.57 |    83.01 |   88.88 |   94.57 | ...05,311,315-317 
  ...serMessage.ts |     100 |      100 |     100 |     100 |                   
  ...onfigUtils.ts |   94.25 |    91.17 |     100 |   94.25 | ...30,436,439-443 
  ...-part-list.ts |     100 |      100 |     100 |     100 |                   
  osc.ts           |   97.18 |      100 |    87.5 |   97.18 | 182-183           
  package.ts       |   88.88 |    85.71 |     100 |   88.88 | 31-32             
  paths.ts         |     100 |      100 |     100 |     100 |                   
  processUtils.ts  |    92.3 |       80 |     100 |    92.3 | 45-46             
  readStdin.ts     |   93.67 |    94.11 |   85.71 |   93.67 | 79-83             
  relaunch.ts      |   95.87 |    89.28 |     100 |   95.87 | 103-105,131       
  resolvePath.ts   |     100 |      100 |     100 |     100 |                   
  runBudget.ts     |   99.35 |    96.77 |     100 |   99.35 | 119               
  sandbox-path.ts  |     100 |      100 |     100 |     100 |                   
  ...xImageName.ts |     100 |    77.77 |     100 |     100 | 10,18             
  sandboxMounts.ts |     100 |      100 |     100 |     100 |                   
  ...-path-argv.ts |     100 |      100 |     100 |     100 |                   
  sessionPaths.ts  |   90.84 |    90.56 |     100 |   90.84 | ...81-182,185-186 
  shell-args.ts    |     100 |      100 |     100 |     100 |                   
  spawnWrapper.ts  |     100 |      100 |     100 |     100 |                   
  ...ate-verify.ts |     100 |      100 |     100 |     100 |                   
  ...upProfiler.ts |   98.47 |    94.66 |     100 |   98.47 | 132-133,308       
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  stdioHelpers.ts  |   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          |   88.75 |     87.2 |   90.51 |   88.75 |                   
 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.26 |    84.51 |   94.55 |   90.26 |                   
  ...transcript.ts |   88.49 |    84.09 |     100 |   88.49 | ...32,640,646-650 
  ...ent-resume.ts |   85.74 |       78 |    85.1 |   85.74 | ...1803-1807,1810 
  ...ound-tasks.ts |   95.19 |    90.75 |   96.42 |   95.19 | ...1889,1897-1898 
  forkedAgent.ts   |   93.21 |    83.47 |   94.44 |   93.21 | ...94,702,707-714 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...ent-result.ts |    96.8 |    92.68 |     100 |    96.8 | 106,129-131       
  ...n-registry.ts |   95.27 |    88.23 |   98.33 |   95.27 | ...1478,1492-1494 
  ...w-snapshot.ts |   75.73 |    72.22 |    87.5 |   75.73 | ...21,445,452-454 
  worktree-pin.ts  |     100 |    88.23 |     100 |     100 | 78,99             
 src/agents/arena  |   76.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.32 |    86.38 |   75.52 |   77.32 |                   
  ITermBackend.ts  |   97.97 |    93.93 |     100 |   97.97 | ...78-180,255,307 
  ...essBackend.ts |   91.45 |    90.21 |   96.87 |   91.45 | ...66-467,586-592 
  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.37 |    87.56 |   92.44 |   93.37 |                   
  agent-context.ts |     100 |      100 |     100 |     100 |                   
  agent-core.ts    |   90.39 |    80.91 |   81.25 |   90.39 | ...2551,2597-2599 
  agent-events.ts  |     100 |      100 |     100 |     100 |                   
  ...t-headless.ts |   93.57 |    89.41 |   83.33 |   93.57 | ...04-505,508-509 
  ...nteractive.ts |   81.01 |    82.35 |   76.66 |   81.01 | ...33,535-538,541 
  ...statistics.ts |   98.29 |    82.55 |     100 |   98.29 | 141,165,206,239   
  agent-types.ts   |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...ool-policy.ts |   98.38 |      100 |    92.3 |   98.38 | 85-86             
  ...low-budget.ts |     100 |      100 |     100 |     100 |                   
  ...-scheduler.ts |   97.43 |    96.36 |     100 |   97.43 | 128-130           
  ...ow-journal.ts |   92.78 |    78.12 |     100 |   92.78 | ...49-150,192-194 
  ...ta-literal.ts |   95.96 |    92.68 |     100 |   95.96 | ...78-379,395-396 
  ...chestrator.ts |   93.85 |    90.47 |     100 |   93.85 | ...2206,2299-2302 
  ...ow-prompts.ts |     100 |      100 |     100 |     100 |                   
  ...low-runner.ts |   95.77 |    84.16 |      95 |   95.77 | ...88,356,376-379 
  ...ow-sandbox.ts |   97.29 |    88.84 |     100 |   97.29 | ...1835,1841-1842 
  ...flow-saved.ts |    96.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   |   84.84 |    85.82 |   91.09 |   84.84 |                   
  TeamManager.ts   |   78.24 |    83.83 |   84.12 |   78.24 | ...1907,1930-1931 
  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.29 |       83 |     100 |   89.29 | ...1000,1044-1045 
  team-events.ts   |   73.68 |      100 |   66.66 |   73.68 | 140-144,151-155   
  teamHelpers.ts   |    92.5 |    95.45 |      95 |    92.5 | ...29-330,393-403 
  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.21 |    88.39 |   78.34 |   86.21 |                   
  approval-mode.ts |     100 |      100 |     100 |     100 |                   
  ...xtDefaults.ts |     100 |      100 |     100 |     100 |                   
  config.ts        |   84.91 |    87.81 |   76.32 |   84.91 | ...9653,9657-9659 
  ...ionManager.ts |     100 |     90.9 |     100 |     100 | 27                
  models.ts        |     100 |      100 |     100 |     100 |                   
  ...sDiscovery.ts |   97.46 |    93.05 |     100 |   97.46 | ...04,182-183,202 
  storage.ts       |   96.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.83 |    88.65 |   93.87 |   92.83 |                   
  ...on-restore.ts |   88.23 |    85.41 |     100 |   88.23 | ...60,63-64,67-68 
  baseLlmClient.ts |    88.4 |    83.68 |   81.81 |    88.4 | ...59,672,678-680 
  client.ts        |   92.36 |    88.22 |   91.83 |   92.36 | ...4537,4635-4636 
  ...tGenerator.ts |   87.45 |    88.09 |   88.88 |   87.45 | ...08-509,554-560 
  ...lScheduler.ts |   90.23 |    85.01 |   94.73 |   90.23 | ...6512,6540-6556 
  ...entContext.ts |   96.63 |    90.13 |   96.66 |   96.63 | ...42,444-445,512 
  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.21 |    90.81 |   96.69 |   95.21 | ...5744,5789-5790 
  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       |   93.89 |    91.12 |      85 |   93.89 | ...1272,1475-1476 
  ...ing-effort.ts |     100 |      100 |     100 |     100 |                   
  ...n-recovery.ts |   95.13 |       80 |     100 |   95.13 | ...06-107,142-144 
  ...t-profiler.ts |    97.9 |    81.15 |   88.23 |    97.9 | 117,124-125,130   
  ...port-retry.ts |     100 |      100 |     100 |     100 |                   
  tokenLimits.ts   |     100 |    91.89 |     100 |     100 | 87,122-139        
  ...-arguments.ts |     100 |      100 |     100 |     100 |                   
  ...reparation.ts |     100 |      100 |     100 |     100 |                   
  ...tion-guard.ts |   90.38 |    94.73 |     100 |   90.38 | 83-87             
  ...allIdUtils.ts |   98.81 |    91.22 |     100 |   98.81 | 43,52             
  ...okTriggers.ts |   99.45 |     92.5 |     100 |   99.45 | 182,193           
  ...terruption.ts |     100 |     92.3 |     100 |     100 | 86,104            
  turn.ts          |   99.19 |    94.48 |     100 |   99.19 | 765-766,835       
  ...l-fallback.ts |     100 |      100 |     100 |     100 |                   
 ...ntentGenerator |   96.58 |    89.11 |   97.43 |   96.58 |                   
  ...tGenerator.ts |   97.66 |    88.91 |   97.43 |   97.66 | ...1494,1523,1534 
  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.33 |    90.93 |   96.58 |   92.33 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  converter.ts     |   91.25 |    89.66 |   96.87 |   91.25 | ...1946,2115-2130 
  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      |   95.38 |    91.56 |     100 |   95.38 | ...1461-1462,1569 
  ...ix-caching.ts |   95.23 |    92.85 |     100 |   95.23 | 45-46,69-70       
  ...ureContext.ts |     100 |      100 |     100 |     100 |                   
  ...ingOptions.ts |       0 |        0 |       0 |       0 | 1                 
  ...CallParser.ts |   92.11 |    92.25 |     100 |   92.11 | ...21-522,542-545 
  ...kingParser.ts |     100 |    96.87 |     100 |     100 | 42                
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...rator/provider |   97.24 |       92 |   98.64 |   97.24 |                   
  dashscope.ts     |   98.42 |    95.27 |   96.55 |   98.42 | ...51-752,894-895 
  deepseek.ts      |   95.34 |    90.56 |     100 |   95.34 | ...54-155,168-169 
  default.ts       |   98.87 |       96 |     100 |   98.87 | 178,304           
  index.ts         |     100 |      100 |     100 |     100 |                   
  mimo.ts          |   94.11 |    66.66 |     100 |   94.11 | 29,52-53          
  minimax.ts       |     100 |      100 |     100 |     100 |                   
  mistral.ts       |   96.07 |    73.33 |     100 |   96.07 | 32-33             
  modelscope.ts    |     100 |      100 |     100 |     100 |                   
  openrouter.ts    |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 |                   
  utils.ts         |     100 |      100 |     100 |     100 |                   
  zai.ts           |      90 |    76.31 |     100 |      90 | ...,72-73,173-175 
 src/extension     |   88.79 |    86.22 |   93.46 |   88.79 |                   
  ...ive-safety.ts |   97.77 |    93.75 |     100 |   97.77 | 100-101           
  ...-converter.ts |   80.55 |    73.66 |     100 |   80.55 | ...1133,1179-1180 
  corruptFile.ts   |     100 |       50 |     100 |     100 | 40-45             
  ...-converter.ts |     100 |      100 |     100 |     100 |                   
  ...git-client.ts |     100 |      100 |     100 |     100 |                   
  ...redentials.ts |   95.33 |    89.47 |     100 |   95.33 | ...21-122,173-175 
  ...me-refresh.ts |     100 |      100 |     100 |     100 |                   
  ...sion-store.ts |   92.82 |    89.27 |    98.3 |   92.82 | ...1641-1647,1691 
  ...ionManager.ts |   84.52 |    83.52 |      83 |   84.52 | ...3139,3177-3178 
  ...references.ts |     100 |     90.9 |     100 |     100 | ...05,129,197,200 
  ...onSettings.ts |    92.3 |     94.4 |     100 |    92.3 | ...98-501,570-571 
  ...-converter.ts |    75.9 |    85.71 |   85.71 |    75.9 | ...98,202,214-248 
  github.ts        |   92.43 |    87.52 |     100 |   92.43 | ...1293-1294,1304 
  http-client.ts   |   84.61 |       80 |     100 |   84.61 | 20-21             
  i18n.ts          |   78.26 |       96 |      50 |   78.26 | 104-110,116-123   
  index.ts         |     100 |      100 |     100 |     100 |                   
  marketplace.ts   |   88.39 |    83.11 |     100 |   88.39 | ...08,494,507-508 
  ...ork-policy.ts |   89.72 |    90.16 |     100 |   89.72 | ...36,148-154,156 
  npm.ts           |   89.02 |    81.81 |     100 |   89.02 | ...86-688,695-700 
  override.ts      |   94.11 |    93.54 |     100 |   94.11 | 63-64,81-82       
  ...-converter.ts |   94.89 |    90.41 |     100 |   94.89 | ...50-151,222-224 
  redaction.ts     |     100 |      100 |     100 |     100 |                   
  settings.ts      |   66.26 |      100 |      50 |   66.26 | 81-107,141-146    
  ...ceRegistry.ts |   94.01 |    83.33 |     100 |   94.01 | ...38-344,365-366 
  storage.ts       |     100 |      100 |     100 |     100 |                   
  ...ableSchema.ts |     100 |      100 |     100 |     100 |                   
  variables.ts     |   88.95 |    84.21 |     100 |   88.95 | ...32-235,238-241 
  ...extraction.ts |   85.77 |       81 |   89.47 |   85.77 | ...02-205,260-261 
 ...ent-plugins-v1 |   84.94 |    79.51 |     100 |   84.94 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  manifest.ts      |   81.87 |    84.48 |     100 |   81.87 | ...55-156,161-174 
  mcp.ts           |   84.98 |    79.56 |     100 |   84.98 | ...88-389,419-420 
  paths.ts         |     100 |    94.44 |     100 |     100 | 59                
  skills.ts        |   82.31 |    63.88 |     100 |   82.31 | ...38-141,150-151 
 src/followup      |   84.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.59 |    90.38 |      95 |   93.59 |                   
  ...eGoalStore.ts |   87.61 |    88.88 |   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.82 |   97.36 |   95.75 | ...76,666,684-685 
  goal-runtime.ts  |   96.51 |    90.64 |   96.49 |   96.51 | ...1645-1646,1777 
  ...provenance.ts |     100 |      100 |     100 |     100 |                   
  goal-tools.ts    |   98.58 |     95.2 |   96.15 |   98.58 | ...41-242,350-351 
  ...rn-context.ts |     100 |      100 |     100 |     100 |                   
  goal-verifier.ts |   92.46 |    93.02 |     100 |   92.46 | ...69-172,185-187 
  goal-wire.ts     |       0 |        0 |       0 |       0 | 1-28              
  goalHook.ts      |   96.91 |    92.42 |     100 |   96.91 | 115-120,221-222   
  goalJudge.ts     |   95.84 |    87.09 |     100 |   95.84 | ...55-356,448-449 
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/hooks         |   89.12 |    87.01 |    89.8 |   89.12 |                   
  ...okRegistry.ts |   86.48 |    77.08 |     100 |   86.48 | ...41-344,362-369 
  ...bortSignal.ts |     100 |      100 |     100 |     100 |                   
  context-usage.ts |     100 |      100 |     100 |     100 |                   
  ...terpolator.ts |   96.66 |    93.33 |     100 |   96.66 | 66-67             
  ...HookRunner.ts |   96.68 |    87.23 |     100 |   96.68 | 110-112,231-233   
  ...Aggregator.ts |   96.57 |    91.48 |     100 |   96.57 | ...20-321,402,404 
  ...entHandler.ts |   95.57 |    84.76 |   94.73 |   95.57 | ...1040-1041,1051 
  hookPlanner.ts   |   87.55 |    85.54 |   86.66 |   87.55 | ...22-226,233-244 
  hookRegistry.ts  |   92.53 |    85.43 |     100 |   92.53 | ...39,458,462,466 
  hookRunner.ts    |   75.58 |    83.23 |   87.87 |   75.58 | ...25-927,937-940 
  hookSystem.ts    |   87.64 |     98.5 |   70.83 |   87.64 | ...58-759,765-766 
  ...HookRunner.ts |   79.06 |    66.66 |      80 |   79.06 | ...33-434,452-456 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...edCallback.ts |     100 |      100 |     100 |     100 |                   
  ...HookRunner.ts |   94.19 |    84.37 |   81.81 |   94.19 | ...76-384,458-459 
  ...SkillHooks.ts |   82.47 |    84.21 |      75 |   82.47 | 63-67,169-184     
  ...oksManager.ts |   94.87 |    90.12 |     100 |   94.87 | ...84,325,327-329 
  ssrfGuard.ts     |   86.45 |    87.91 |     100 |   86.45 | ...85,289-295,301 
  stopHookCap.ts   |     100 |      100 |     100 |     100 |                   
  trustedHooks.ts  |      90 |    52.63 |     100 |      90 | ...53,66-67,97-98 
  types.ts         |   94.25 |    96.09 |   88.88 |   94.25 | ...46-547,632-636 
  urlValidator.ts  |     100 |      100 |     100 |     100 |                   
  ...it-context.ts |     100 |      100 |     100 |     100 |                   
 src/ide           |   76.98 |    85.03 |   79.03 |   76.98 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  detect-ide.ts    |     100 |      100 |     100 |     100 |                   
  ide-client.ts    |   69.16 |    84.65 |   68.29 |   69.16 | ...1068,1097-1105 
  ide-installer.ts |   89.06 |    79.31 |     100 |   89.06 | ...36,143-147,160 
  ideContext.ts    |     100 |      100 |     100 |     100 |                   
  process-utils.ts |   84.84 |    71.79 |     100 |   84.84 | ...37,151,193-194 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/ipc           |   92.72 |    90.15 |    97.5 |   92.72 |                   
  inbound-gate.ts  |   98.93 |     89.1 |     100 |   98.93 | 522-524           
  peer-envelope.ts |     100 |      100 |     100 |     100 |                   
  peer-frames.ts   |   97.45 |    93.65 |     100 |   97.45 | 235-237           
  socket-path.ts   |   85.71 |    93.33 |     100 |   85.71 | 83-88             
  uds-client.ts    |   85.71 |    94.11 |      80 |   85.71 | 162-175           
  uds-inbox.ts     |   82.42 |    81.81 |     100 |   82.42 | ...33,240-250,282 
 src/lsp           |   58.96 |    70.67 |   66.49 |   58.96 |                   
  ...nfigLoader.ts |   80.55 |    72.22 |   95.65 |   80.55 | ...02-504,508-514 
  ...ionFactory.ts |   42.81 |    73.07 |      50 |   42.81 | ...76-427,433-450 
  ...Normalizer.ts |   23.09 |    13.72 |   30.43 |   23.09 | ...04-905,909-924 
  ...verManager.ts |   75.73 |     80.1 |   79.66 |   75.73 | ...1346,1352-1382 
  ...eLspClient.ts |   32.78 |    81.81 |   21.05 |   32.78 | ...89-293,299-300 
  ...LspService.ts |      60 |    73.36 |   78.26 |      60 | ...1575,1635-1645 
  configHash.ts    |     100 |      100 |     100 |     100 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/mcp           |    82.3 |    77.81 |   78.33 |    82.3 |                   
  configHash.ts    |     100 |      100 |     100 |     100 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...h-provider.ts |   86.95 |      100 |   33.33 |   86.95 | ...,93,97,101-102 
  ...h-provider.ts |   79.31 |    58.06 |     100 |   79.31 | ...26-933,940-942 
  ...en-storage.ts |   98.78 |    97.95 |     100 |   98.78 | 106-107           
  oauth-utils.ts   |   73.61 |    85.48 |    92.3 |   73.61 | ...46-366,392-421 
  ...n-provider.ts |   89.83 |       96 |   45.45 |   89.83 | ...43,147,151-152 
 .../token-storage |   82.12 |    88.48 |   89.28 |   82.12 |                   
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   87.08 |    87.71 |   95.23 |   87.08 | ...00-201,214-215 
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   68.14 |    82.35 |   64.28 |   68.14 | ...81-295,298-314 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/memory        |   88.82 |    85.24 |    90.9 |   88.82 |                   
  ...y-document.ts |   89.52 |    84.61 |     100 |   89.52 | ...24-325,329-330 
  ...nel-memory.ts |   97.36 |    96.63 |   96.42 |   97.36 | ...91-293,367-368 
  dream.ts         |    64.6 |    72.22 |      50 |    64.6 | ...04-109,124-165 
  ...entPlanner.ts |     100 |    83.33 |     100 |     100 | 135,145           
  entries.ts       |   75.59 |    84.84 |   83.33 |   75.59 | ...56-157,172-180 
  extract.ts       |   93.82 |    84.09 |     100 |   93.82 | 78-83,122,154-157 
  ...entPlanner.ts |   91.55 |    76.74 |     100 |   91.55 | ...05,118-121,296 
  ...ionPlanner.ts |       0 |        0 |       0 |       0 | 1                 
  forget.ts        |   90.16 |    78.76 |   94.44 |   90.16 | ...06,629,642-648 
  indexer.ts       |   94.14 |       84 |     100 |   94.14 | ...32-233,334,337 
  ...kill-agent.ts |   97.94 |    89.36 |     100 |   97.94 | 82-83,179-180     
  manager.ts       |   78.51 |    83.16 |   77.77 |   78.51 | ...1487,1500-1502 
  ...ent-config.ts |   87.64 |    83.62 |      88 |   87.64 | ...08,411-425,437 
  memoryAge.ts     |   90.47 |    83.33 |     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      |   98.88 |    90.38 |     100 |   98.88 | 50,70             
  scan.ts          |   93.75 |       80 |     100 |   93.75 | ...08-109,154,157 
  scopes.ts        |     100 |      100 |     100 |     100 |                   
  ...et-scanner.ts |     100 |      100 |     100 |     100 |                   
  ...entPlanner.ts |   73.92 |       75 |   66.66 |   73.92 | ...78-482,485,491 
  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 |    81.53 |   81.81 |   81.21 | ...66-280,294-299 
 src/mocks         |       0 |        0 |       0 |       0 |                   
  msw.ts           |       0 |        0 |       0 |       0 | 1-9               
 src/models        |   92.82 |    89.39 |   91.35 |   92.82 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...tor-config.ts |   97.77 |    91.83 |     100 |   97.77 | 155,161,171       
  ...capability.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...nfigErrors.ts |   79.43 |    64.51 |   85.71 |   79.43 | ...,89-96,131-142 
  ...igResolver.ts |   98.71 |    93.33 |     100 |   98.71 | 166,328,334       
  modelRegistry.ts |     100 |    98.11 |     100 |     100 | 177,262           
  modelsConfig.ts  |   89.36 |    86.93 |   88.09 |   89.36 | ...1407,1436-1437 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/output        |     100 |      100 |     100 |     100 |                   
  ...-formatter.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/permissions   |   84.45 |    91.47 |    72.4 |   84.45 |                   
  autoMode.ts      |   97.66 |    93.13 |     100 |   97.66 | ...82-589,635,712 
  ...transcript.ts |      98 |       84 |     100 |      98 | 200-201           
  classifier.ts    |      94 |    94.54 |     100 |      94 | 158-165,389-393   
  ...erousRules.ts |     100 |    89.79 |     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 |      89 |    90.99 |   86.84 |      89 | ...1461,1567-1571 
  rule-parser.ts   |   94.89 |    92.83 |     100 |   94.89 | ...1550,1584-1586 
  ...-semantics.ts |   70.44 |    91.09 |   46.66 |   70.44 | ...2237,2311-2314 
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...sifier-prompts |   99.05 |    95.23 |     100 |   99.05 |                   
  system-prompt.ts |   99.05 |    95.23 |     100 |   99.05 | 226               
 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.82 |   95.94 |   85.36 |                   
  ...tGenerator.ts |    98.6 |    98.14 |     100 |    98.6 | 103-104           
  qwenOAuth2.ts    |   82.79 |    73.91 |    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.64 |    86.19 |   96.55 |   90.64 |                   
  ...ionTrailer.ts |     100 |      100 |     100 |     100 |                   
  ...llRegistry.ts |   98.48 |    87.28 |     100 |   98.48 | 81-82,105,474-475 
  branch-points.ts |     100 |    95.23 |     100 |     100 | ...20,211,224,327 
  ...ionService.ts |   97.72 |    96.53 |     100 |   97.72 | ...1081,1224-1232 
  ...ingService.ts |    92.6 |    88.12 |   94.73 |    92.6 | ...2856,2871-2872 
  ...ttribution.ts |   91.73 |    87.71 |      90 |   91.73 | ...80-685,826-827 
  ...utSlimming.ts |    97.2 |    94.23 |     100 |    97.2 | ...39-340,378-381 
  cronScheduler.ts |   94.17 |    90.45 |      98 |   94.17 | ...1333,1736-1737 
  cronTasksFile.ts |   95.52 |    90.99 |     100 |   95.52 | ...37,346-347,483 
  cronTasksLock.ts |   94.44 |    89.47 |     100 |   94.44 | ...02-103,132-133 
  ...eryService.ts |   96.22 |    93.54 |      90 |   96.22 | 121,155-156,161   
  ...oryService.ts |   88.17 |    79.02 |    92.3 |   88.17 | ...1303,1344-1347 
  fileReadCache.ts |    97.5 |    96.07 |     100 |    97.5 | 349-350,363-364   
  ...temService.ts |    92.8 |    84.68 |   94.11 |    92.8 | ...53,479-486,531 
  ...ratedFiles.ts |      96 |    88.23 |     100 |      96 | 119-120,146-147   
  gitInit.ts       |     100 |      100 |     100 |     100 |                   
  ...reeService.ts |   74.75 |    70.76 |   96.07 |   74.75 | ...2296,2325-2326 
  ...on-service.ts |   86.58 |    74.39 |     100 |   86.58 | ...56-460,498-499 
  ...references.ts |   98.57 |    91.42 |     100 |   98.57 | 156-157,217-218   
  ...ionService.ts |   98.26 |    97.23 |     100 |   98.26 | ...65-866,889-890 
  ...ticsDumper.ts |   98.37 |    95.23 |     100 |   98.37 | 185-186           
  ...ureMonitor.ts |   95.82 |    90.52 |   97.05 |   95.82 | ...60,861,875-877 
  ...orRegistry.ts |   97.22 |    90.99 |     100 |   97.22 | ...55-456,609-610 
  ...ttachments.ts |   97.74 |     90.9 |     100 |   97.74 | 298-308,646       
  ...pi-history.ts |   98.94 |    89.13 |     100 |   98.94 | 43                
  ...ersistence.ts |   91.88 |    81.19 |     100 |   91.88 | ...1073-1074,1119 
  ...tory-state.ts |     100 |    95.23 |     100 |     100 | 31                
  ...on-service.ts |   94.61 |    92.44 |   97.22 |   94.61 | ...11-613,669-677 
  ...pr-service.ts |   96.04 |    89.74 |     100 |   96.04 | 72,98-101,190-191 
  ...ce-service.ts |    98.5 |    94.11 |    90.9 |    98.5 | 64-65             
  ...n-registry.ts |   98.74 |    94.92 |     100 |   98.74 | 601,655-656,714   
  ...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.57 |    75.18 |   97.72 |   84.57 | ...2567,2589,2603 
  sessionRecap.ts  |   67.56 |    43.47 |     100 |   67.56 | ...60,178,180-183 
  ...ionService.ts |   88.82 |    85.68 |    91.4 |   88.82 | ...4049-4050,4091 
  sessionTitle.ts  |   96.35 |    79.71 |     100 |   96.35 | ...08-311,342-343 
  ...ContextEnv.ts |     100 |    94.73 |     100 |     100 | 76,111            
  ...ionService.ts |   84.43 |    78.45 |   97.18 |   84.43 | ...2496,2502-2507 
  ...pInhibitor.ts |   97.42 |    92.77 |     100 |   97.42 | ...30,169,369-370 
  ...e-encoding.ts |   85.96 |    76.47 |     100 |   85.96 | 58-61,64-65,78-79 
  ...Estimation.ts |     100 |    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 |   90.77 |    84.92 |     100 |   90.77 | ...43-546,598-599 
  ...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.8 |     100 |   88.36 | ...48-449,465-466 
 ...icrocompaction |   98.91 |    95.08 |     100 |   98.91 |                   
  microcompact.ts  |   98.91 |    95.08 |     100 |   98.91 | ...60,769,778-779 
 ...s/visionBridge |    98.8 |    92.12 |     100 |    98.8 |                   
  ...capability.ts |     100 |      100 |     100 |     100 |                   
  ...part-utils.ts |     100 |      100 |     100 |     100 |                   
  ...ion-bridge.ts |   98.72 |    82.35 |     100 |   98.72 | 65,71             
  ...ge-service.ts |   98.61 |     94.7 |     100 |   98.61 | ...06,666,679-680 
 src/skills        |   89.78 |    86.08 |   94.73 |   89.78 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...activation.ts |     100 |    93.33 |     100 |     100 | 93,112            
  skill-curator.ts |   89.71 |    81.54 |     100 |   89.71 | ...01-902,904-907 
  skill-load.ts    |   94.84 |    87.69 |     100 |   94.84 | ...03,223,235-237 
  skill-manager.ts |   86.11 |    85.71 |   86.11 |   86.11 | ...1244,1251-1255 
  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 | 286-287           
 ...ataviz/scripts |   80.06 |    95.23 |   88.23 |   80.06 |                   
  ...te_palette.js |   80.06 |    95.23 |   88.23 |   80.06 | 261-296,306-328   
 ...s/bundled/loop |   97.48 |    95.77 |     100 |   97.48 |                   
  ...omous-loop.ts |     100 |      100 |     100 |     100 |                   
  ...-task-file.ts |   94.85 |     92.4 |     100 |   94.85 | ...56,367,375-376 
  ...k-resolver.ts |     100 |      100 |     100 |     100 |                   
 src/subagents     |   88.58 |    89.46 |    98.3 |   88.58 |                   
  ...ter-schema.ts |     100 |    98.07 |     100 |     100 | 99                
  ...tin-agents.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...nt-manager.ts |   85.54 |    86.59 |   97.43 |   85.54 | ...1588,1665-1666 
  types.ts         |     100 |      100 |     100 |     100 |                   
  validation.ts    |   92.46 |    95.18 |     100 |   92.46 | 47-52,63-68,71-76 
 src/telemetry     |   83.23 |    84.98 |   86.51 |   83.23 |                   
  ...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.79 |   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.77 |   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.26 |    88.81 |   86.36 |   83.26 | ...1467,1471-1478 
  uiTelemetry.ts   |   98.87 |     95.1 |   97.05 |   98.87 | ...59,696,786-787 
 ...ry/qwen-logger |   74.23 |    80.35 |      70 |   74.23 |                   
  event-types.ts   |       0 |        0 |       0 |       0 |                   
  qwen-logger.ts   |   74.23 |    80.18 |   69.49 |   74.23 | ...1122,1160-1161 
 src/test-utils    |   96.38 |    98.64 |   84.09 |   96.38 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  ...st-helpers.ts |   94.11 |       90 |     100 |   94.11 | 69-70             
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...mised-lock.ts |     100 |      100 |     100 |     100 |                   
  mock-tool.ts     |   94.85 |      100 |      80 |   94.85 | ...53,227-228,241 
  ...aceContext.ts |     100 |      100 |     100 |     100 |                   
 src/tools         |   87.55 |    86.06 |   90.21 |   87.55 |                   
  ...erQuestion.ts |   89.71 |    81.13 |    92.3 |   89.71 | ...66-367,374-375 
  ...-registrar.ts |    77.7 |    66.66 |   66.66 |    77.7 | ...72-277,292-294 
  ...ub-session.ts |   89.72 |    91.48 |   83.33 |   89.72 | ...06-307,318-325 
  cron-create.ts   |   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.29 |     83.8 |   94.73 |   83.29 | ...14-515,537-538 
  exitPlanMode.ts  |      95 |    85.29 |     100 |      95 | ...21-325,344,378 
  ...permission.ts |     100 |      100 |     100 |     100 |                   
  glob.ts          |   96.33 |     88.5 |     100 |   96.33 | ...24-225,373,376 
  grep.ts          |   90.73 |    86.71 |   86.36 |   90.73 | ...76-677,727-728 
  ...adTracking.ts |     100 |      100 |     100 |     100 |                   
  image-gen.ts     |   91.66 |    78.12 |   91.66 |   91.66 | ...13-214,221-222 
  list-agents.ts   |   94.11 |    83.33 |   85.71 |   94.11 | 31-32,47-48       
  loop-wakeup.ts   |   99.27 |     93.1 |     100 |   99.27 | 45                
  ls.ts            |   96.74 |    90.54 |     100 |   96.74 | 176-181,212,216   
  lsp.ts           |   72.71 |     59.9 |    90.9 |   72.71 | ...1212,1214-1215 
  ...nt-manager.ts |   82.07 |    80.15 |   85.71 |   82.07 | ...3243,3245-3246 
  mcp-client.ts    |   86.25 |    87.61 |   93.93 |   86.25 | ...2552,2556-2559 
  ...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 |      100 |       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.1 |       93 |     100 |    98.1 | ...1233,1288-1289 
  ...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.04 |    82.25 |     100 |   96.04 | ...41,594,604-608 
  ...d-artifact.ts |   85.68 |    81.59 |   94.73 |   85.68 | ...1071,1095-1096 
  ...t-findings.ts |   99.13 |    93.93 |    92.3 |   99.13 | 256-258           
  ...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  |    81.5 |    90.69 |   66.66 |    81.5 | ...80-286,354-361 
  ...n-mcp-view.ts |   94.07 |    91.89 |    90.9 |   94.07 | 131-139           
  shell.ts         |   78.96 |    84.29 |      93 |   78.96 | ...5036,5111-5112 
  skill-utils.ts   |     100 |      100 |     100 |     100 |                   
  skill.ts         |   93.56 |    90.78 |   91.66 |   93.56 | ...49,653,701-723 
  ...-constants.ts |     100 |      100 |     100 |     100 |                   
  ...eticOutput.ts |   95.12 |      100 |      80 |   95.12 | 87-88             
  task-create.ts   |    94.4 |    93.75 |   83.33 |    94.4 | 45-49,63-64,95    
  task-list.ts     |   80.43 |    86.95 |   85.71 |   80.43 | ...67,121,125-132 
  task-stop.ts     |   93.14 |    96.29 |    87.5 |   93.14 | 39-40,54-64       
  task-update.ts   |   82.87 |     86.5 |   92.85 |   82.87 | ...54-564,588-599 
  team-create.ts   |   97.24 |     87.5 |   85.71 |   97.24 | 48-49,129-130     
  team-delete.ts   |   86.74 |    84.61 |   85.71 |   86.74 | 37-38,42-48,72-73 
  ...n-approval.ts |   92.14 |    96.96 |   81.81 |   92.14 | 38-39,42-43,93-99 
  todoWrite.ts     |   95.73 |    90.47 |   93.75 |   95.73 | ...48-552,565-570 
  ...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.48 |    82.45 |   86.53 |   80.48 | ...1099,1107-1108 
  ...-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.19 |    89.79 |   93.75 |   96.19 | ...09,259-264,426 
  tool-utils.ts    |   97.46 |    96.55 |     100 |   97.46 | 26-27             
  tools.ts         |   92.93 |    92.18 |      92 |   92.93 | ...64-565,581-587 
  truncation.ts    |   90.61 |    90.35 |     100 |   90.61 | ...53-461,498-504 
  ...reapproved.ts |   99.27 |    94.11 |     100 |   99.27 | 170               
  web-fetch.ts     |   96.05 |    90.54 |   96.77 |   96.05 | ...85-786,800-801 
  web-search.ts    |   90.58 |    83.57 |      80 |   90.58 | ...1025,1083-1086 
  write-file.ts    |   87.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   |   87.26 |    88.51 |   89.71 |   87.26 |                   
  agent.ts         |   85.88 |    87.64 |   87.35 |   85.88 | ...4265,4299-4309 
  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.33 |    87.68 |   82.75 |   89.33 |                   
  workflow.ts      |   89.33 |    87.68 |   82.75 |   89.33 | ...33,878,880-881 
 src/utils         |   92.78 |    89.75 |   96.89 |   92.78 |                   
  ...Controller.ts |     100 |      100 |     100 |     100 |                   
  ...ssageQueue.ts |     100 |      100 |     100 |     100 |                   
  ...cFileWrite.ts |      95 |    92.76 |     100 |      95 | ...49-550,657-661 
  auth-type.ts     |     100 |      100 |     100 |     100 |                   
  bareMode.ts      |   81.81 |      100 |      50 |   81.81 | 18-19             
  ...ry-content.ts |   98.45 |    95.79 |     100 |   98.45 | 132-133,159-160   
  browser.ts       |   86.84 |    78.94 |     100 |   86.84 | 34,36-37,65-66    
  btwUtils.ts      |   13.95 |      100 |       0 |   13.95 | 17-31,34-55       
  bundlePaths.ts   |     100 |      100 |     100 |     100 |                   
  ...on-context.ts |     100 |      100 |     100 |     100 |                   
  ...igResolver.ts |     100 |      100 |     100 |     100 |                   
  ...engthError.ts |   91.06 |    89.47 |     100 |   91.06 | ...46-147,154-155 
  ...n-branches.ts |   95.89 |    94.11 |      95 |   95.89 | ...99-500,512-525 
  ...tion-chain.ts |     100 |      100 |     100 |     100 |                   
  cronDisplay.ts   |     100 |    97.61 |     100 |     100 | 46                
  cronParser.ts    |   95.34 |    93.33 |     100 |   95.34 | 41-42,47-48,70-71 
  debugLogger.ts   |     100 |    97.18 |     100 |     100 | 79,86             
  ...qwen-model.ts |     100 |      100 |     100 |     100 |                   
  editHelper.ts    |   93.63 |     83.9 |     100 |   93.63 | ...27-428,462-463 
  editor.ts        |   97.65 |    95.45 |     100 |   97.65 | ...35-336,338-339 
  encoding.ts      |     100 |      100 |     100 |     100 |                   
  env.ts           |     100 |      100 |     100 |     100 |                   
  ...arResolver.ts |   94.28 |    88.88 |     100 |   94.28 | 28-29,125-126     
  errorParsing.ts  |     100 |      100 |     100 |     100 |                   
  ...rReporting.ts |   95.65 |    93.33 |     100 |   95.65 | 37-38             
  errors.ts        |   88.92 |    93.03 |      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.18 |   96.29 |   94.79 | ...2076,2084-2085 
  formatters.ts    |     100 |      100 |     100 |     100 |                   
  ...eUtilities.ts |    92.4 |    86.95 |     100 |    92.4 | ...52-158,168-169 
  ...rStructure.ts |   94.39 |    94.28 |     100 |   94.39 | ...29-132,343-348 
  getPty.ts        |   31.57 |       50 |     100 |   31.57 | 26-38             
  git-branches.ts  |    91.6 |    84.21 |    92.3 |    91.6 | ...90,405-410,570 
  ...fig-safety.ts |   97.01 |       80 |     100 |   97.01 | 53-54             
  git-ignore.ts    |     100 |      100 |     100 |     100 |                   
  gitDiff.ts       |   95.19 |    81.36 |     100 |   95.19 | ...1073,1419-1420 
  gitDirect.ts     |   98.84 |    94.28 |     100 |   98.84 | 234,318           
  ...noreParser.ts |   94.48 |    93.22 |     100 |   94.48 | ...23-124,158-159 
  gitUtils.ts      |   78.83 |    82.35 |    87.5 |   78.83 | ...22-123,164-215 
  github-prs.ts    |   96.06 |    84.09 |     100 |   96.06 | 251,350-358       
  iconvHelper.ts   |     100 |      100 |     100 |     100 |                   
  ...rePatterns.ts |     100 |      100 |     100 |     100 |                   
  image-view.ts    |   95.08 |    93.47 |     100 |   95.08 | ...62-166,234-238 
  ...lPromptIds.ts |     100 |      100 |     100 |     100 |                   
  ...on-context.ts |     100 |      100 |     100 |     100 |                   
  is-tool.ts       |     100 |      100 |     100 |     100 |                   
  jsonl-utils.ts   |   96.15 |    93.51 |     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.18 |     100 |   98.96 | 154               
  ...kerChecker.ts |    90.9 |    91.66 |     100 |    90.9 | 73-79             
  notebook.ts      |   94.57 |    89.91 |   95.83 |   94.57 | ...21,333,385-387 
  openaiLogger.ts  |   91.66 |    89.74 |     100 |   91.66 | ...26-228,251-256 
  osc8.ts          |   54.26 |    64.86 |   83.33 |   54.26 | ...72-195,197-257 
  partUtils.ts     |     100 |    98.64 |     100 |     100 | 211               
  pathReader.ts    |     100 |      100 |     100 |     100 |                   
  paths.ts         |   90.88 |    90.66 |     100 |   90.88 | ...28-629,631-633 
  pdf.ts           |   92.17 |    85.81 |     100 |   92.17 | ...64-565,606-611 
  ...s-liveness.ts |     100 |    93.47 |     100 |     100 | 62,72,108         
  projectPath.ts   |     100 |      100 |     100 |     100 |                   
  projectRoot.ts   |   71.73 |    78.57 |     100 |   71.73 | 54-66             
  ...ectSummary.ts |   89.62 |    72.41 |     100 |   89.62 | ...40-145,196-199 
  ...tIdContext.ts |     100 |      100 |     100 |     100 |                   
  proxyUtils.ts    |     100 |      100 |     100 |     100 |                   
  ...rDetection.ts |   71.15 |       86 |     100 |   71.15 | ...-90,96-101,147 
  ...noreParser.ts |   92.63 |    91.66 |     100 |   92.63 | ...77-178,197-198 
  rateLimit.ts     |   93.75 |    89.62 |     100 |   93.75 | ...13,218-219,262 
  ...text-range.ts |   96.98 |    87.36 |     100 |   96.98 | ...87-688,763-764 
  retry.ts         |   96.09 |    92.52 |     100 |   96.09 | ...72,563-564,582 
  retryContext.ts  |     100 |      100 |     100 |     100 |                   
  ...sification.ts |   97.63 |    97.08 |     100 |   97.63 | ...17,251-252,278 
  retryPolicy.ts   |   97.72 |    90.56 |     100 |   97.72 | 130-131           
  ripgrepUtils.ts  |   90.04 |    93.43 |   95.45 |   90.04 | ...55-565,598-599 
  ...iagnostics.ts |   83.08 |     67.5 |   92.59 |   83.08 | ...23,543-544,550 
  ...tchOptions.ts |   84.87 |    86.71 |   96.29 |   84.87 | ...71,696,725-734 
  ...odelPrefix.ts |     100 |      100 |     100 |     100 |                   
  runtimeStatus.ts |   97.77 |    91.48 |     100 |   97.77 | 172-173           
  safe-mode.ts     |     100 |      100 |     100 |     100 |                   
  safeJsonParse.ts |     100 |      100 |     100 |     100 |                   
  ...nStringify.ts |     100 |      100 |     100 |     100 |                   
  ...-child-env.ts |     100 |      100 |     100 |     100 |                   
  ...aConverter.ts |   98.22 |    98.01 |     100 |   98.22 | 100,102-103       
  ...aValidator.ts |   92.09 |    83.65 |   90.47 |   92.09 | ...60,882-883,896 
  ...r-launcher.ts |   96.35 |    93.97 |   85.71 |   96.35 | ...35-336,347-348 
  sedEditParser.ts |   91.78 |    92.18 |     100 |   91.78 | ...66-569,645-646 
  ...nIdContext.ts |     100 |       90 |     100 |     100 | 95                
  ...orageUtils.ts |   96.21 |     86.2 |     100 |   96.21 | ...70,386,466,485 
  ...-pager-env.ts |     100 |      100 |     100 |     100 |                   
  ...fety-rules.ts |     100 |     89.7 |     100 |     100 | ...01,304,309-311 
  shell-utils.ts   |   86.37 |    88.59 |     100 |   86.37 | ...2361,2368-2372 
  ...lAstParser.ts |    98.3 |    91.59 |     100 |    98.3 | ...1340-1342,1352 
  ...nlyChecker.ts |   96.33 |    96.57 |     100 |   96.33 | ...83-284,292-293 
  sideQuery.ts     |   86.82 |    86.66 |     100 |   86.82 | ...79-185,187-193 
  ...pEventSink.ts |     100 |       80 |     100 |     100 | 61                
  ...tGenerator.ts |     100 |      100 |     100 |     100 |                   
  ...ameContext.ts |     100 |      100 |     100 |     100 |                   
  symlink.ts       |   77.77 |    57.14 |     100 |   77.77 | 44,54-59          
  ...emEncoding.ts |   96.36 |    91.17 |     100 |   96.36 | 59-60,124-125     
  terminal-env.ts  |      50 |      100 |       0 |      50 | 18-19             
  terminalSafe.ts  |     100 |      100 |     100 |     100 |                   
  ...Serializer.ts |   98.72 |       90 |     100 |   98.72 | 42-43,134,201-203 
  testUtils.ts     |   53.33 |      100 |   33.33 |   53.33 | ...53,59-64,70-72 
  ...-constants.ts |     100 |      100 |     100 |     100 |                   
  textUtils.ts     |      65 |      100 |      75 |      65 | 56-75             
  thoughtUtils.ts  |     100 |    95.65 |     100 |     100 | 99                
  ...-converter.ts |   95.23 |    85.71 |     100 |   95.23 | 36-37             
  ...error-type.ts |     100 |      100 |     100 |     100 |                   
  ...name-utils.ts |     100 |      100 |     100 |     100 |                   
  ...ultCleanup.ts |   54.62 |     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.47 |     100 |   95.39 | ...16-317,321-322 
  xml.ts           |    97.8 |    87.69 |     100 |    97.8 | 98-99             
  yaml-parser.ts   |   83.87 |    77.27 |     100 |   83.87 | ...31-234,239-240 
 ...ils/filesearch |   83.94 |    80.75 |   94.78 |   83.94 |                   
  crawlCache.ts    |     100 |      100 |     100 |     100 |                   
  crawler.ts       |    82.9 |    76.81 |   95.08 |    82.9 | ...1563,1597-1598 
  fileSearch.ts    |   93.78 |    87.67 |     100 |   93.78 | ...71-272,274-275 
  fzfWorker.ts     |       0 |        0 |       0 |       0 | 1-109             
  ...rkerHandle.ts |   84.05 |    75.86 |      90 |   84.05 | ...30-334,340-341 
  ignore.ts        |     100 |    97.36 |     100 |     100 | 187               
  result-cache.ts  |     100 |    93.75 |     100 |     100 | 49                
 ...uest-tokenizer |    92.3 |      100 |   88.88 |    92.3 |                   
  ...ageFormats.ts |   81.81 |      100 |   66.66 |   81.81 | 56-61             
  textTokenizer.ts |     100 |      100 |     100 |     100 |                   
-------------------|---------|----------|---------|---------|-------------------

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

…convergence floor defer by them

The Critical class collapsed three merge decisions into one bit, so past the convergence rounds every finding that mattered still landed on the floor and the loop oscillated instead of settling (#9659, rounds 17–23). A confirmed Critical now carries two decision axes the verifier states off its witness — direction (certifies-falsely | fails-closed) and baseline (regression | new-surface) — in the findings artifact, the report_findings contract, the posted claim line (as bracket tags beside the id) and the ledger marker (one-letter fields the next round's work list renders).

At a resolved critical floor, a Critical that is fails-closed AND new-surface is recorded as a deferral like a Suggestion: merging it certifies nothing false and regresses nothing. Every other Critical posts — the wrong-result direction at either baseline, a regression in either direction, and any Critical with a missing or self-contradicting axis. The rounds-2–5 code-age rule never touches a Critical. The typed deferral channel honours a Critical entry only under the enforcement reading of the floor and relocates it otherwise; the enforcement backstop moves a drafted Critical whose claim line carries both tags, adjusts the inline counts per severity, and names the move by severity in the disclosure, the verdict line and submit's report.

Closes #10291
@wenshao
wenshao force-pushed the feat/review-critical-axes branch from e4c377b to abe7f30 Compare August 27, 2026 16:33
@github-actions

Copy link
Copy Markdown
Contributor

Please do not rebase or force-push to an active PR as it invalidates existing review comments. Note for future reference, the bots always squash all changes into a single commit automatically as part of the integration.

中文

请勿对活跃的 PR 执行 rebase 或 force-push,因为这会使已有的评审评论失效。另外,供日后参考:作为集成流程的一部分,机器人始终会自动将所有改动压缩(squash)为单个提交。

@wenshao

wenshao commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator Author

Rebased onto the current main (single commit, no review threads yet) after #9659 and #10168 landed; the three textual conflicts were in the findings canonicalizer (both sides add an optional field in the same spot — fixConstraint and the two axes now sit side by side), the SKILL's artifact-field list and bodyCriticals bullet (the fixConstraint clause and the axes clause merged into one sentence each), and DESIGN.md's incident list (both new entries kept). No behaviour changed in the resolution; typecheck, the review unit suites, eslint and the SKILL/DESIGN pointer tests were re-run on the rebased head, and the shim-based bundle E2E in the thread above was re-run on it with the same outputs — details in the follow-up below.

On the two reservations: agreed on both. The model-side half is deliberately pinned by the brief and SKILL tests only, and the first live multi-round review at the critical floor is the real test; the independent lane is the right next step, so:

@qwen-code /verify

中文说明

#9659#10168 合入后,已把本 PR(单 commit,尚无评审线程)rebase 到最新 main;三处文本冲突分别在 findings 规范化器(双方在同一位置各加一个可选字段——fixConstraint 与两轴现在并列)、SKILL 的工件字段清单与 bodyCriticals 条目(fixConstraint 子句与两轴子句合成一句)、以及 DESIGN.md 的事故列表(两条新条目都保留)。解冲突不改变任何行为;已在 rebase 后的 head 上重跑 typecheck、review 单测套件、eslint 与 SKILL/DESIGN 指针测试,线程里的桩 E2E 也在新 head 上重跑并得到相同输出——细节见下一条评论。

两点保留意见都同意:模型侧的一半有意只由 brief 与 SKILL 测试钉住,真正的检验是 critical 地板上的第一次真实多轮评审;独立通道是正确的下一步,因此触发上面的 /verify

@wenshao

wenshao commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator Author

E2E re-run on the rebased head abe7f302e4 (same harness, fresh fake-GitHub state), asserted against the values in the report above — all identical:

  • (a) artifact render: Critical [fails-closed] [new-surface], Critical [certifies-falsely] [new-surface], Critical [fails-closed] [new-surface], Suggestion
  • (b) round 7: floorEnforced [1, 2], deferredCount 3, marker findings [('R7-1','C','c','n','src/stop.ts')] at round 7 / floor c / posted 1; enforcement note, deferral header and the three deferral lines unchanged; verdict line unchanged
  • (c) submit: only src/stop.ts:30 posted inline; posted body identical to the composed body; "d":"c","b":"n" in the posted marker; one api …/reviews --input - call; stderr Floor enforcement: 1 Suggestion comment(s) and 1 fails-closed, new-surface Critical comment(s) …
  • (d) pr-context: row | R7-1 | Critical (certifies-falsely, new-surface) | src/stop.ts:30 | …; side file round 7, R7-1 with d:"c", b:"n", posted 1, floor c
  • (e) round 8: marker [('R7-1','C','c','n','src/stop.ts'), ('R8-1','C','f','r','(body)')], floorEnforced [], deferredCount 1, the fails-closed/regression entry relocated, only the fails-closed/new-surface entry deferred
  • (f) round 3 negative: marker [('R3-1','c','n'), ('R3-2','f','n'), ('R3-3','f','r')], two relocations, no deferral block, no unlicensed-deferral cap
中文说明

在 rebase 后的 head abe7f302e4 上用同一套 harness(伪 GitHub 状态重置)重跑 E2E,并按上方报告里的取值逐项断言——全部一致:(a) 工件渲染的 tag;(b) 第 7 轮 floorEnforced [1, 2]deferredCount 3、marker 的 R7-1 c/n、强制执行注记/推迟标题/三条推迟行/verdict 行不变;(c) submit 只发出 src/stop.ts:30,正文与 composed 一致,marker 带 d/b,stderr 按轴点名;(d) pr-context 工作表行与 side file(第 7 轮,R7-1c/n);(e) 第 8 轮 fails-closed/regression 被 relocate 为 R8-1,只有 fails-closed/new-surface 被推迟;(f) 第 3 轮反例:两条 relocate、无推迟块、无 unlicensed-deferral cap。

@wenshao

wenshao commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator Author

@qwen-code /triage

@qwen-code-ci-bot

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

Copy link
Copy Markdown
Collaborator

Sandboxed verification: ❌ not passed — findings reported (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: 98 passed · 0 failed · 98 total

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

中文 — 判定:❌ 不通过 · 报告了发现(agent 判定)

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

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

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

Verification report

PR #10301 deep verification — round 1

Verdict: findings — 98/98 scripted assertions passed (0 unexpected failures); one Suggestion-level finding (S1, cosmetic record fidelity). Verified head: abe7f302e4bda99b356aa834749b3a981d086b70 (merge-ref HEAD^2; base tip 1637aa968b).

中文摘要
  • 结论findings。98 条脚本化断言全部通过;一条 Suggestion 级发现(S1,移动记录里正文散文中的方括号轴词被过度剥离,纯外观问题)。
  • A/B 结论:中心论断成立且 load-bearing。head 49/49、base 36/36:[fails-closed] [new-surface] 的 Critical 在 critical 地板下被移入延后清单(marker 记 d:"f",b:"n"、verdict 说 "finding(s) deferred"、行内计数按严重度调整);其余所有形状(certifies-falsely 任一基线、regression 任一方向、无 tag、半 tag、自相矛盾、body 尾部伪造、无 path)照常发布;base 上所有 Critical 一律行内发布、typed 通道一律 relocate("a Critical is never deferred")。控制组(Suggestion 移动/[test] 豁免)两臂一致,无回归。
  • 变异矩阵:5 个变异全部被预期测试以行为性断言杀死(M1 谓词、M2 许可门、M3 claim-line 窗口、M4 schema enum、M5 marker 归一化)。
  • 发现:S1 — 被移动 Critical 的记录标题对整段折叠正文做全局 stripAxisTags,正文散文中形如 [fails-closed] 的提及被静默删除(超出 hunk 自述意图"丢弃 claim line 上的 tag")。已度量修复:仅剥离 claim-line 窗口后,散文保留、49/49 敌意单元不变、611/611 套件仍绿(套件两态皆绿,说明该轴无测试钉住,修复应自带夹具)。
  • 未覆盖:模型侧一半(verifier 陈述轴、orchestrator 抄 tag)仅由 brief/SKILL 测试钉住;submit 的 gh 发帖路径与 pr-context 工作表渲染仅单元测试覆盖;Web Shell 渲染未测(PR 自述忽略新字段);未跑全仓测试/lint。

Central claim + A/B table

Central claim: at a floor resolved to critical, a confirmed Critical that is fails-closed AND new-surface is recorded as a deferral (not posted), while every other Critical posts; the classification rides the claim line as bracket tags, the marker as d/b fields, and the typed deferral channel honours a Critical only under the enforcement reading of the floor.

Harness ab-matrix.mjs drives the compiled dist of each tree (mock-free: real composeReview/parseLedger/verdictLine, real temp plan dirs + side files). Base control = git worktree at HEAD^1, per-workspace rebuild, workspace symlinks re-pointed into the base tree; runtime resolution proven (import.meta.resolve('@qwen-code/qwen-code-core')tmp/base-tree/packages/core/dist/index.js, which does not export FINDING_DIRECTIONS). Lockfile/package.json untouched by the PR, so shared third-party node_modules is a clean control. Captures: 01-ab-head-arm-all-49-pass.png, 02-ab-base-arm-all-36-pass.png.

Cell Input Floor Head (49/49) Base (36/36)
C1 drafted Critical [fails-closed] [new-surface] explicit critical moved → deferral list line src/a.ts:7 — [review] Critical [fails-closed] [new-surface] …, header "1 Critical(s) among them are deferred by their axes", enforcement note "1 fails-closed, new-surface Critical(s) …", marker findings [], verdict "1 finding(s) deferred … 1 of those moved by CLI floor enforcement" inline; marker sev C, tags left as title text; no deferral
C2 [certifies-falsely] [regression] same inline; marker d:c,b:r inline; no axes
C3 [certifies-falsely] [new-surface] same inline; d:c,b:n inline
C4 [fails-closed] [regression] same inline; d:f,b:r inline
C5 untagged same inline; no axes inline
C6 [fails-closed] only same inline; d:f inline
C7 both direction tags + [new-surface] same inline; b:n only (contradiction → unclassified) inline
C8 [probe] + pair same moved; deferral line [probe] Critical …; title drops tags; source probe kept inline
C9 pair, no path same inline (cannot become an entry) inline
C10 pair forged in body tail only same inline (claim-line-only window) inline
C11 Suggestion (control) same moved, deferredCount 1 moved; verdict "non-Critical finding(s) deferred" (wording delta only)
C12 Suggestion [test] (control) same inline inline
SE1 criticalsInline: 1 + pair same baseEvent ≠ REQUEST_CHANGES (seam reduced; round un-blocked) baseEvent = REQUEST_CHANGES
T1 typed Critical f+n explicit critical deferred: count 1, tagged line, no relocation note, work list [] relocated: "a Critical is never deferred", RC
T2 typed Critical c+r same relocated; new note "…deferred only as fails-closed on new surface at a critical floor; this one posts"; work list d:c,b:r relocated; old note
T3 typed Critical, no axes same relocated relocated
T4 typed Critical f+n floor off (suggestion) relocated; no unlicensed-deferral cap relocated
T5/T5b typed Critical, direction:'fails-open' / baseline:'old-surface' explicit critical throws TypeError naming the enum composes (field ignored)
T6 typed Suggestion (control) explicit critical deferred deferred
T7 typed Critical f+n auto, round 7 deferred relocated
T8 typed Critical f+n auto, round 3 relocated relocated
T9 typed Critical f+n auto round 7 + context-unavailable relocated relocated
M1–M4 marker/renderer round-trip (head-only surface) unknown d/b normalise to absent, entry survives; axesOf spells pair/half/none; renderDeferredEntry renders Critical [fails-closed] [new-surface] axesOf absent; marker still parses

Secondary claims verified: axis enums refused when misspelled at all three entry points (artifact validateFindings — findings.test.ts 124 green; report_findings schema — report-findings.test.ts 34 green incl. 1 new refusal; typed channel — T5); pre-field markers read as unclassified (M1); work-list renderer and ledger normalisation pinned by ledger/pr-context tests (164+89 green).

Mutation matrix (vacuity)

Unmutated control green first (cli 1410/1410, core 89/89). Every mutant killed on the intended behavioral assertion; capture 03-mutation-m1-kill.png.

Mutant Guard Suite Result
M1 floorDefersCritical → false central deferral predicate compose-review.test.ts #10291 killed, 7 red: expected 'REQUEST_CHANGES' to be 'APPROVE', expected [ 5 ] to deeply equal [ 0, 5 ], deferredCount 0≠1
M2 licence gate removed from splitDeferralChannel typed-channel licence same killed, exactly the 5 floor-not-in-effect arms red (deferredCount 1 where 0 required)
M3 claim window widened to whole body trust boundary (claim line only) same killed by the PRE-EXISTING pin "a tag outside the claim line does not exempt — the footer is not a kill-switch"; the Critical arm shares the same claim variable, and C10 proves the window behaviorally
M4 direction enum removed from schema report_findings refusal report-findings.test.ts killed: "refuses an axis outside its list" — expected [Function] to throw
M5 unknown d passes normalisation ledger normalise-to-absent ledger.test.ts killed: d:"x" leaked into parsed findings

M1 left the right tests green (misspelled-axis refusal, ledger stamping) — attribution is precise. No survivor, so no coverage-gap classification needed beyond S1's unpinned axis (below).

Findings

S1 — the moved Critical's record over-strips: bracketed axis mentions in the body prose are silently dropped (Suggestion, cosmetic).
floorEnforcedReroute builds the moved record's title from the WHOLE collapsed body, then applies stripAxisTags globally. The hunk's own comment states the intent as dropping "the tags the entry now carries as fields" (the claim-line tags), but a bracketed mention anywhere in the body prose is removed too. Repro on pristine head dist:

node tmp/pr10301-verify-20260827-165656/title-probe.mjs   # drafted Critical whose body prose mentions [fails-closed]
# observed deferral line ends: "…prose mentioning again."   (the "[fails-closed]" was eaten)

The classification itself is unaffected (it rides as fields/tags on the same line); only the human record loses prose words. Measured fix (scratch, then reverted): strip axis tags from the claim-line window of the pre-collapse body only —

candidate patch (measured, not committed)
const strippedBody = stripReviewFooter(markerStrippedBody(body) ?? '');
const whole = collapseToLine(strippedBody);
const nl = strippedBody.indexOf('\n');
const criticalStripped = collapseToLine(
  nl === -1
    ? stripAxisTags(strippedBody)
    : stripAxisTags(strippedBody.slice(0, nl)) + strippedBody.slice(nl),
);
const title = critical
  ? declared === null
    ? criticalStripped
    : collapseToLine(criticalStripped.replace(declared[0], ''))
  : whole;

— with it: the probe line keeps prose mentioning [fails-closed] again.; the A/B head arm stays 49/49 (every hostile cell byte-identical, C10 forged-tail still inline); the full compose-review suite is 611/611. Green on both sides means the suite pins nothing along this axis — the claim-line strip itself is pinned (the "moves the ONE combination" test expects a tag-free title), the body-prose over-strip is not; the fix should ship with a fixture whose body prose carries a bracketed axis tag.

Not covered

  • The model-side half (verifier stating the axes, orchestrator copying tags onto the claim line) — pinned by agent-briefs/SKILL tests only, same scope the PR declares; not exercised end to end.
  • The full gh-shim E2E from the Reviewer Test Plan (submit posting, pr-context work-list rendering against a fake GitHub). submit.ts's stderr wording and pr-context.ts's table rendering are pinned by their unit tests (122 / 164 green, incl. the new cases) but not driven over a wire here.
  • Web Shell rendering of the new fields (PR states it ignores them).
  • Repo-wide test/lint/typecheck; targeted gates only: the six named cli suites (1410/1410), the two named core suites (89/89), tsc --noEmit in core and cli, eslint over all 18 changed files (clean; gate proven live by a planted any), bundle boot smoke (node dist/cli.js --version → 0.22.2).
  • Base control reused head's third-party node_modules (lockfile untouched — verified git diff empty for all package.json/package-lock.json); nested per-package node_modules were symlinked into the worktree after the first base build failed on missing gitignored deps. The runtime cross-boundary import closure was proven to resolve to base code (resolve probe above).
  • Harness disclosure: the first base-arm run reported 2 failures caused by my own encoding (an arm-independent expectMoved asserting head behavior on base). Fixed and re-run; all tallies are from the corrected runs.
  • Single-commit PR (commits array = 1, matches local HEAD^1..HEAD^2), so per-commit attribution is N/A.

Methodology

Environment: CI merge-ref checkout (depth 2), npm ci + npm run build pre-run at head. The A/B harness (ab-matrix.mjs, kept in this artifact dir) imports the compiled dist compose-review/ledger of each tree and drives 20+ scenario cells per arm through the real composeReview with real temp plan dirs and side files; expectations are encoded per arm, so base cells failing as predicted count as passes. Base control: git worktree at HEAD^1, npm run build per workspace, workspace symlinks re-pointed, resolution proven at runtime. Mutations were applied to source, run through the named vitest suites, and reverted (tree verified clean after each restore). Raw logs in this dir: logs-head.txt, logs-base.txt, logs-mutation-m2.txt, base-build2.log, base-core-build.log; captures in evidence/. Assertion tally: 85 A/B + 2 gates + 5 mutant kills + 2 typecheck + 2 lint + 1 bundle + 3 fix-measurement = 98.

Flakiness gate log

rounds=5 files=8 skipped=0
file packages/cli/src/commands/review/agent-prompt.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/agent-prompt.test.ts
file packages/cli/src/commands/review/compose-review.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/compose-review.test.ts
file packages/cli/src/commands/review/findings.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/findings.test.ts
file packages/cli/src/commands/review/lib/ledger.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/lib/ledger.test.ts
file packages/cli/src/commands/review/pr-context.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/pr-context.test.ts
file packages/cli/src/commands/review/submit.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/submit.test.ts
file packages/core/src/skills/bundled/review/SKILL.test.ts: (cd packages/core) npx --no-install vitest run ./src/skills/bundled/review/SKILL.test.ts
file packages/core/src/tools/report-findings.test.ts: (cd packages/core) npx --no-install vitest run ./src/tools/report-findings.test.ts


per-file results (P=pass F=fail I=infra-exit, one letter per run):
  packages/cli/src/commands/review/agent-prompt.test.ts: PPPPP
  packages/cli/src/commands/review/compose-review.test.ts: PPPPP
  packages/cli/src/commands/review/findings.test.ts: PPPPP
  packages/cli/src/commands/review/lib/ledger.test.ts: PPPPP
  packages/cli/src/commands/review/pr-context.test.ts: PPPPP
  packages/cli/src/commands/review/submit.test.ts: PPPPP
  packages/core/src/skills/bundled/review/SKILL.test.ts: PPPPP
  packages/core/src/tools/report-findings.test.ts: PPPPP

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

--- per-invocation detail (full copy in the artifact) ---
round 1 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 1 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 1 · packages/core/src/tools/report-findings.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 2 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 2 · packages/core/src/tools/report-findings.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 3 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 3 · packages/core/src/tools/report-findings.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 4 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 4 · packages/core/src/tools/report-findings.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 5 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 5 · packages/core/src/tools/report-findings.test.ts: P (exit 0)

Evidence images

01-ab-head-arm-all-49-pass

02-ab-base-arm-all-36-pass

03-mutation-m1-kill

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

Qwen Code · sandboxed verification

@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Triage re-run completed without a new review.

⚠️ The bot has neither a verdict nor a deferral on abe7f302e4bda99b356aa834749b3a981d086b70 — no APPROVED, CHANGES_REQUESTED, or COMMENTED review of its own. A DISMISSED one does not count: dismiss_stale_reviews voids the bot's approval on every push, which is exactly when a fresh one is needed. If this re-run was meant to review or approve, it did not, and an approval left by another account is a separate vote that does not count as the bot's own.

⚠️ 机器人在 abe7f302e4bda99b356aa834749b3a981d086b70既没有裁决也没有 defer —— 没有属于它自己的 APPROVEDCHANGES_REQUESTEDCOMMENTED 评审。DISMISSED 不算:dismiss_stale_reviews 会在每次推送时作废机器人的批准,而那恰恰是需要一次新批准的时刻。如果这次重跑本应评审或批准,那么它没有做到;而其他账号留下的批准是另一张票,不能算作机器人自己的。

The stage comments above were updated with the latest result. View workflow run.

上方各阶段评论已更新为最新结果。查看工作流运行

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

Not explored to full depth (tool budget reached): chunk 5: running findings.test.ts — the review worktree has no node_modules /built dist , and npm ci + workspace build exceeds the tool budget; verification was do….

Test Plan (not a blocker): src/submodule.ts:8no such file or directory.

中文说明

未探索到全部深度(达到工具调用预算):chunk 5:running findings.test.ts — the review worktree has no node_modules /built dist , and npm ci + workspace build exceeds the tool budget; verification was do…

Test Plan(非阻断):src/submodule.ts:8no such file or directory

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

Comment thread packages/cli/src/commands/review/compose-review.ts Outdated
Comment thread packages/cli/src/commands/review/compose-review.ts Outdated
Comment thread packages/cli/src/commands/review/compose-review.ts Outdated
Comment thread packages/cli/src/commands/review/compose-review.test.ts Outdated
Comment thread packages/cli/src/commands/review/compose-review.ts
Comment thread packages/core/src/skills/bundled/review/SKILL.test.ts Outdated
Comment thread packages/core/src/utils/toolResultDisplayCompaction.ts
Comment thread packages/cli/src/commands/review/compose-review.test.ts
Comment thread packages/cli/src/commands/review/compose-review.test.ts
Comment thread packages/cli/src/commands/review/compose-review.test.ts
…y, and keep a deferred Critical's record whole

Round-1 review of #10301. The axis tags were matched anywhere on the claim line, so a title that merely quoted them — natural when the review target is this pipeline — classified an unclassified blocker, and the moved record's title stripped bracketed axis words out of the body prose. One reader now tokenises the claim line's head slot — the carried id, the (fix-induced) marking, the source tag and the axis tags, in any order, before the title — and every consumer goes through it: the reroute backstop and the deferrable count read the axes there, the ledger builder and the moved record strip them there, and presubmit's carried-id readback and the closure mint's repost join both read the id past tags placed before it.

A relocated Critical's axes are stamped into the marker from the typed entry rather than re-parsed off the rendered line, so a half-classified one keeps the axis it settled, and the deferral line renders each settled axis instead of both-or-nothing. The merged deferral list orders Criticals ahead of Suggestions so a deferred blocker's only published line never falls past the twenty-line cap, with the enforcement note counting what rendered. The mechanism-health sentence is severity-neutral now that the deferrable count includes axes-pair Criticals.

Prose and pins: the SKILL's deferrable-set definition, deterministic carve-out, report_findings copy list, fix-witness invariant and the verifier brief's symmetric "guess on either axis" rationale; the abolished "a Critical is never deferred" absolutes in settings.md, parse-args and the compose seam docs; DESIGN.md's 31-vs-25 count and the re-deferral horizon of the closure mint; tests for every arm the review named, the compaction fixture included.
@wenshao

wenshao commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator Author

Round 1 addressed in 2f1d3823b2 — every thread replied and resolved (21 of 21; the sandboxed verification's S1 is the same defect as R1-29).

  • Fixed (20): the Critical R1-19 and the Suggestions R1-1, R1-2, R1-3, R1-4, R1-6, R1-7, R1-12, R1-13, R1-15, R1-16, R1-18, R1-22, R1-23, R1-24, R1-25, R1-26, R1-27, R1-29, R1-31. The structural change is one claim-head reader (readClaimHead in lib/inline-counts.ts): the id, the (fix-induced) marking, the source tag and the axis tags are tokenised from the head slot before the title, in any order, and every reader — the reroute backstop, the deferrable count, the ledger builder, presubmit's carried-id readback and the closure mint's repost join — goes through it. A title that quotes a tag classifies nothing; a tag before the id no longer hides the id; the moved record keeps its body prose. Relocated Criticals stamp their axes from the typed entry, the deferral line renders each settled axis, Criticals render ahead of the twenty-line cap, and the mechanism-health sentence is severity-neutral.
  • Documented, not changed (1): R1-14 — DESIGN.md and the design doc now state the closure mint's horizon (a re-deferral's id is absent from the previous posted work list, so that round's mint fails closed). Carrying the round's deferred ids in the marker is the extension that would lift it; deferred to a follow-up rather than widened into this PR.
  • The review-level Test Plan note (src/submodule.ts:8 — no such file) points at a fixture path quoted in the E2E report, not a path in this repository.

Rebased head unchanged (abe7f302e4 + this commit); typecheck, eslint and the review suites (cli 1780, core 120) are green on 2f1d3823b2.

中文说明

第 1 轮评审已在 2f1d3823b2 处理完毕——21 条线程全部回帖并 resolve(沙箱验证的 S1 与 R1-29 是同一问题)。修复 20 条(Critical R1-19 及 19 条 Suggestion);结构性改动是统一的 claim 头部读取器 readClaimHead:id、(fix-induced) 标记、来源 tag 与轴 tag 只从标题之前的头部槽位解析,任意顺序,所有读取方(backstop、可推迟计数、ledger 构建、presubmit 的 id 回读、closure mint 的 re-post 联结)统一走它——标题里引用 tag 不再被当作分类,tag 在 id 之前不再遮住 id,被移记录保留正文散文。relocate 的 Critical 从类型化条目写轴,推迟行逐轴渲染,Critical 在 20 行上限前优先渲染,健康文案改为严重度中立。R1-14 以文档说明 closure mint 的再推迟边界,marker 携带被推迟 id 留作后续。评审级 Test Plan 提示指向的是 E2E 报告里的夹具路径。typecheck、eslint 与 review 套件在 2f1d3823b2 上全绿。

@wenshao

wenshao commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator Author

@qwen-code /triage

@qwen-code-ci-bot

qwen-code-ci-bot commented Aug 28, 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: 166 passed · 0 failed · 166 total

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

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

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

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

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

Verification report

<!-- qwen-triage:verify -->
<!-- qwen-triage:verify-substantive -->

Sandboxed verification: ✅ passed (agent verdict: merge-ready) — advisory evidence for human reviewers; not a review, an approval, or a CI check.

PR #10301 deep verification — round 2 (follow-up)

Verdict: merge-ready — 166/166 scripted assertions passed (0 unexpected failures); no new blocking finding. Verified head: 2f1d3823b29022ecc4bbc1157a2271cd7b27f134 (merge-ref HEAD^2; base tip 148273956b). Round-1's single Suggestion (S1) is fixed and re-measured at the new head; the round-2 commit's delta (head-slot-only tag reading, typed-axis stamping, Critical-first deferral ordering, severity-neutral health sentence) is proven load-bearing by the A/B and the mutation matrix.

中文摘要
  • 结论merge-ready。166 条脚本化断言全部通过(head 臂 94/94、base 臂 62/62、4 个变异杀死、6 项门禁),无意外失败,无新的阻断性发现。
  • 上一轮发现状态:S1(被移动 Critical 的记录对整段正文过度剥离方括号轴词)在新 head 上已修复——剥离现在只作用于 claim line 的 head slot,正文散文中的 [regression] 等提及逐字保留(S1 单元重测通过)。
  • A/B 结论:中心论断在新 head 上重新度量成立。[fails-closed] [new-surface] 的 Critical 在 critical 地板下被移入延后清单(marker 无该条、verdict 说 "finding(s) deferred"、强制注记按严重度计数);其余所有形状照常发布;typed 通道仅在地板生效时认可 Critical。base 上所有 Critical 一律行内发布、typed 通道一律 relocate("a Critical is never deferred")。
  • commit 2 增量:标题引用 tag 不再被分类(N1);tag 在 id 之前时 id 仍可回读(N2/N7/N8——base 上不可读的 re-post 会使整个 closure mint 失败关闭、连真实 closure 也被扣留,head 恢复之);散文中的 [probe] 不再是 source(N3);半分类的 relocated Critical 在行内与 marker 中保留已判定的一轴(N4);延后清单 Critical 先行、20 行上限下仍渲染、强制注记只数渲染了的(N5);机制健康句对严重度中立(N6)。
  • 变异矩阵:R1(head-slot 窗口回退为整行匹配)被恰好 2 个新窗口测试杀死;R2(presubmit 回退为裸行回读)被恰好 1 个新测试杀死;阳性对照 P1(15 红)/P3(8 红)证明套件存活。R3(size 估算去掉两轴字段)存活——分类为覆盖缺口(行为正确、影响以枚举长度为界、非合并条件)。
  • 未覆盖:模型侧一半(verifier 陈述轴、orchestrator 抄 tag)仅由 brief/SKILL 测试钉住;submit 的 gh 发帖与 pr-context 工作表渲染仅单元测试覆盖;Web Shell 渲染未测;未跑全仓测试/lint。

Previous-finding status (round 1 → new head)

# Finding (round 1) Severity Status at 2f1d3823
S1 Moved Critical's record over-stripped: bracketed axis mentions in body prose silently dropped Suggestion (cosmetic) fixed — re-measured, not diffed: the S1 probe (drafted Critical whose body prose says "Not a [regression] — the surface is new.") now yields title R6-1: wedge Not a [regression] — the surface is new. on the compiled head dist (prose kept, claim-line tags stripped); the fix took a different shape than round 1's candidate patch (head-slot tokeniser readClaimHead shared by the reroute, the ledger builder and presubmit) and is pinned by the new R1-29 test. Agree with the approach.

No declined or deferred rows existed in round 1; nothing else carries forward.

Central claim + A/B table (re-measured at the new head)

Central claim (unchanged): at a floor resolved to critical, a confirmed Critical that is fails-closed AND new-surface is recorded as a deferral, while every other Critical posts; the classification rides the claim line as bracket tags, the marker as d/b fields, and the typed deferral channel honours a Critical only under the enforcement reading of the floor.

Harness ab-matrix.mjs (kept in this artifact dir) drives the compiled dist of each tree (mock-free: real composeReview/floorEnforcedReroute/verdictLine/parseLedger, real temp plan dirs + side files; the N8 cell replicates the suite's covered-plan fixture so the closure-mint legs are reachable). Base control: git worktree at HEAD^1, per-workspace rebuild, workspace symlinks shadowed into the base tree; runtime resolution proven (@qwen-code/qwen-code-core resolves to tmp/base-tree/packages/core/dist/index.js, which lacks readClaimHead/FINDING_DIRECTIONS). Lockfile/package.json untouched by the PR (verified git diff empty), so shared third-party node_modules is a clean control. Captures: 01-ab-head-arm-94-pass.png, 02-ab-base-arm-62-pass.png.

Cell Input Floor Head (94/94) Base (62/62)
C1 drafted Critical [fails-closed] [new-surface] explicit critical moved: deferral line — [review] Critical [fails-closed] [new-surface] …, header "1 Critical(s) … deferred by their axes", note "1 fails-closed, new-surface Critical(s)", work list [], verdict "1 finding(s) deferred … 1 of those moved by CLI floor enforcement", round un-blocked inline; marker sev C, no axes; no deferral; posted blocker counts baseEvent=REQUEST_CHANGES
C2–C4 c+r, c+n, f+r same inline; marker d/b stamped per combination inline; marker has no axes
C5–C7 untagged / half-tagged / self-contradicting same inline; missing or contradicting axis reads absent inline; no axes
C8 [probe] + pair same moved; deferral line [probe] Critical … (source kept) inline
C9 pair, no path same inline (cannot become an entry) inline
C10 pair forged in body tail same inline; claim-line-only window inline
C11 Suggestion (control) same moved; verdict "finding(s) deferred" moved; verdict "non-Critical finding(s) deferred" (wording delta only)
C12 Suggestion [test] (control) same inline inline
T1 typed Critical f+n explicit critical deferred (count 1, tagged line, no relocation note, work list []) relocated: "a Critical is never deferred", work-list entry, baseEvent=REQUEST_CHANGES
T2 typed Critical c+r same relocated; new note "…deferred only as fails-closed on new surface at a critical floor; this one posts"; marker d:c,b:r stamped from the TYPED entry relocated; old note; marker no axes
T3 typed Critical, no axes same relocated; marker no axes relocated
T4 typed Critical f+n floor off (suggestion) relocated; no deferral relocated
T5 typed Critical direction:'fails-open' explicit critical throws TypeError naming the enum composes (field ignored)
T6 typed Suggestion (control) explicit critical deferred deferred
T7 / T8 typed f+n, auto round 7 / round 3 auto deferred / relocated relocated / relocated
T-signal typed f+n, auto round 5, flat-trend 2 / 1 auto deferred / relocated relocated both
N1 title QUOTES the tags in prose explicit critical not classified: inline, unclassified marker, title keeps the quoted tags inline (no axes at all)
N2 tags BEFORE a carried id ([c-f] [n-s] R10-1: …) explicit critical id read back (R10-1), axes stamped, title "still stands" tags hide the id (fresh id minted)
N3 [probe] in prose vs in head slot, with pair seam prose → source review; slot → source probe, moved Criticals never reroute
N4 typed Critical, half-classified (c only) auto relocated; line renders Critical [certifies-falsely] only; marker d:c, b absent relocated; line carries no severity/axis markup
N5 21 rerouted Suggestions + 1 deferred Critical auto Critical renders FIRST, inside the 20-line cap; "…and 2 more"; note "19 listed, 2 more inside the overflow count" 21 Suggestions moved; no Critical in the block; typed Critical relocated
N6 health sentence, tagged vs untagged Critical auto r6 fires on the tagged Critical ("findings the floor would have deferred posted inline anyway"); old "Suggestion-level findings" wording gone; untagged does not fire no health sentence (needs a posted Suggestion)
N7 presubmit seam: id past tags R7-1 reads past leading/trailing tags; quoted tag in prose reads no id leading tags hide the id from the anchored readback
N8 re-deferral titled [f-c] [n-s] R10-1: … beside open R10-1/R10-2 auto R10-1 NOT minted closed; R10-2 mints (closed:[{r:11,id:"R10-2"}]) unreadable re-post → mint fails closed → NO closures at all (the true closure R10-2 withheld)
S1 moved record with bracketed axis word in body prose seam title R6-1: wedge Not a [regression] — the surface is new. (prose kept, claim tags stripped) Criticals never reroute
M1 marker round-trip, unknown d/b entry survives; axesOf normalises to absent marker still parses

Secondary claims re-verified: axis enums refused when misspelled (findings/report-findings suites green, T5); pre-field markers read as unclassified (M1); the deferral list partitions per entry and orders Criticals ahead of Suggestions under cap pressure (N5).

Commit-2 delta probes (new this round)

The round-1 head (abe7f302) matched tags anywhere on the claim line; commit 2 replaced that with the head-slot tokeniser readClaimHead (new module lib/inline-counts.ts), stamped relocated Criticals' axes from the typed entry, ordered Criticals first in the capped deferral list, and made the mechanism-health sentence severity-neutral. Each delta was driven on the compiled head dist (cells N1–N8 above); the sharpest is N8: at base the id-join repost leg reads the raw title, so a re-deferral whose line leads with the axis tags is an unidentified re-post and the honesty leg suppresses the round's entire closure mint — the genuinely-closed sibling is withheld every round until the loop's sentinel fires. Head restores the true closure while still shielding the re-deferred blocker. 03-mutation-r1-kill.png witnesses the window change's pin.

One intended behaviour change worth naming (not a defect): a [probe]/[build]/[test] tag in the title's prose no longer sets the moved record's source (N3) — consistent with the head-slot-only rule; the deterministic-tag exemption for the floor (DETERMINISTIC_TAG_RE) is unchanged and still matches anywhere, so a [test] Suggestion still stays inline either way (C12 green on both arms).

Mutation matrix (vacuity, commit-2 hunks)

Unmutated control green first (cli 7 suites 1525/1525; core 3 suites 120/120). Every kill landed on the intended behavioral assertion; tree verified git status-clean after each restore.

Mutant Guard Suite Result
R1 axesOfClaim → whole-claim-line window (commit-1 behaviour) head-slot-only classification compose-review.test.ts killed, exactly 2 red: a title that merely QUOTES the tags is not classified (R1-19) (expected [ +0 ] to deeply equal [] — the quoted Critical was moved) and the buildLedger head-slot title test; the forged-tail test (R1-6) stayed green, as predicted (commit 1's window was already claim-line-only). Capture 03-mutation-r1-kill.png
P1 floorDefersCritical → false (positive control, same file) central deferral predicate same killed, 15 red
R2 presubmit carried-id readback → raw line id-past-tags repost join presubmit.test.ts killed, exactly 1 red: reads the carried id past axis tags placed before it (#10291) (expected +0 to be 1 — the re-post lands in the overlap bucket)
R3 findingRetainedSize minus the two axis fields compaction size accounting toolResultDisplayCompaction.test.ts survived (31/31) — classified coverage gap: the axis fields ride the object spread (the fixture pins that survival, and P3 proves the file's truncation assertions are live), but nothing asserts the size-estimate lines. Impact bounded by the enum lengths (≤ ~34 chars per finding), so the drop-budget decision can only misfire at a boundary; not load-bearing, reported as completeness, not a merge condition
P3 compactString → no-op (positive control, same file as R3) compaction truncation same killed, 8 red

Findings

None new. The R3 survivor is reported in the matrix as a coverage gap (non-blocking). No injection attempts in the PR text; author claims were treated as hypotheses and re-measured.

Not covered

  • The model-side half (verifier stating the axes, orchestrator copying tags onto the claim line) — pinned by agent-briefs/SKILL tests only, same scope the PR declares; not exercised end to end.
  • The full gh-shim E2E from the Reviewer Test Plan (submit posting, pr-context work-list rendering against a fake GitHub). submit.ts's stderr wording and pr-context.ts's table rendering are pinned by their unit tests (within the 1525/120 gates) but not driven over a wire here.
  • Web Shell rendering of the new fields (PR states it ignores them).
  • Repo-wide test/lint; targeted gates only: the seven named cli suites incl. presubmit (1525/1525), the three named core suites incl. the compaction fixture (120/120), tsc --noEmit in cli and core (clean), eslint over all 24 changed files (clean), bundle boot smoke (node dist/cli.js --version → 0.22.2).
  • Per-commit attribution: the shallow checkout's git rev-list HEAD^1..HEAD^2 reports 1 while the snapshot's commits array has 2; abe7f302 was nonetheless complete in the object store, so the commit-2 delta was diffed directly (abe7f302..2f1d3823) and every round-2 probe is attributed to it; commit-1 behaviour cells (N1/N3/N8 base-side notes) are quoted from that delta's code, not re-executed.
  • Base-control notes: the base tree needed the repo's own gitignored generated file (src/generated/git-commit.ts, regenerated in the base tree with the base commit) and per-package node_modules symlinks (third-party only; no workspace links — asserted by realpath). The base arm's bare-fixture cells reduce the final event to COMMENT under the pre-existing unreviewed-dimension/criticals-unverified caps (verified A/A: covered fixture yields REQUEST_CHANGES on base); those cells therefore assert on baseEvent, the posted-blocker seam the caps do not touch.

Methodology

Environment: CI merge-ref checkout (depth 2), npm ci + npm run build pre-run at head; base control rebuilt per workspace in a scratch worktree (removed after capture). The A/B harness imports each tree's compiled dist and drives 26 scenario cells per arm through the real composeReview with real temp plan dirs and side files; the N8 cell replicates the suite's covered-plan fixture (plan + chunk transcripts + Steps 4/5) so the closure-mint honesty legs are reachable; expectations are encoded per arm, so base cells failing as predicted count as passes. Mutations were applied to source, run through the named vitest suites, and reverted (tree git status-clean after each restore). Raw logs in this dir: logs-head.txt, logs-base.txt, mutant-r1.log, mutant-p1.log, mutant-r2.log, mutant-r3.log, cli-suites.log, core-suites.log, typecheck-*.log, eslint.log, base build logs; captures in evidence/. Assertion tally: 94 head + 62 base + 4 mutation kills (R1, P1, R2, P3) + 6 gates = 166.

Flakiness gate log

rounds=5 files=10 skipped=0
file packages/cli/src/commands/review/agent-prompt.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/agent-prompt.test.ts
file packages/cli/src/commands/review/compose-review.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/compose-review.test.ts
file packages/cli/src/commands/review/findings.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/findings.test.ts
file packages/cli/src/commands/review/lib/ledger.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/lib/ledger.test.ts
file packages/cli/src/commands/review/pr-context.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/pr-context.test.ts
file packages/cli/src/commands/review/presubmit.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/presubmit.test.ts
file packages/cli/src/commands/review/submit.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/submit.test.ts
file packages/core/src/skills/bundled/review/SKILL.test.ts: (cd packages/core) npx --no-install vitest run ./src/skills/bundled/review/SKILL.test.ts
file packages/core/src/tools/report-findings.test.ts: (cd packages/core) npx --no-install vitest run ./src/tools/report-findings.test.ts
file packages/core/src/utils/toolResultDisplayCompaction.test.ts: (cd packages/core) npx --no-install vitest run ./src/utils/toolResultDisplayCompaction.test.ts


per-file results (P=pass F=fail I=infra-exit, one letter per run):
  packages/cli/src/commands/review/agent-prompt.test.ts: PPPPP
  packages/cli/src/commands/review/compose-review.test.ts: PPPPP
  packages/cli/src/commands/review/findings.test.ts: PPPPP
  packages/cli/src/commands/review/lib/ledger.test.ts: PPPPP
  packages/cli/src/commands/review/pr-context.test.ts: PPPPP
  packages/cli/src/commands/review/presubmit.test.ts: PPPPP
  packages/cli/src/commands/review/submit.test.ts: PPPPP
  packages/core/src/skills/bundled/review/SKILL.test.ts: PPPPP
  packages/core/src/tools/report-findings.test.ts: PPPPP
  packages/core/src/utils/toolResultDisplayCompaction.test.ts: PPPPP

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

--- per-invocation detail (full copy in the artifact) ---
round 1 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/presubmit.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 1 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 1 · packages/core/src/tools/report-findings.test.ts: P (exit 0)
round 1 · packages/core/src/utils/toolResultDisplayCompaction.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/presubmit.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 2 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 2 · packages/core/src/tools/report-findings.test.ts: P (exit 0)
round 2 · packages/core/src/utils/toolResultDisplayCompaction.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/presubmit.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 3 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 3 · packages/core/src/tools/report-findings.test.ts: P (exit 0)
round 3 · packages/core/src/utils/toolResultDisplayCompaction.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/presubmit.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 4 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 4 · packages/core/src/tools/report-findings.test.ts: P (exit 0)
round 4 · packages/core/src/utils/toolResultDisplayCompaction.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/presubmit.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 5 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 5 · packages/core/src/tools/report-findings.test.ts: P (exit 0)
round 5 · packages/core/src/utils/toolResultDisplayCompaction.test.ts: P (exit 0)

Evidence images

01-ab-head-arm-94-pass

02-ab-base-arm-62-pass

03-mutation-r1-kill

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

Qwen Code · sandboxed verification

@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Triage re-run completed without a new review.

⚠️ The bot has neither a verdict nor a deferral on 42743a93f6ce4f7273ecbb26bb4d5689d4dc6260 — no APPROVED, CHANGES_REQUESTED, or COMMENTED review of its own. A DISMISSED one does not count: dismiss_stale_reviews voids the bot's approval on every push, which is exactly when a fresh one is needed. If this re-run was meant to review or approve, it did not, and an approval left by another account is a separate vote that does not count as the bot's own.

⚠️ 机器人在 42743a93f6ce4f7273ecbb26bb4d5689d4dc6260既没有裁决也没有 defer —— 没有属于它自己的 APPROVEDCHANGES_REQUESTEDCOMMENTED 评审。DISMISSED 不算:dismiss_stale_reviews 会在每次推送时作废机器人的批准,而那恰恰是需要一次新批准的时刻。如果这次重跑本应评审或批准,那么它没有做到;而其他账号留下的批准是另一张票,不能算作机器人自己的。

The stage comments above were updated with the latest result. View workflow run.

上方各阶段评论已更新为最新结果。查看工作流运行

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Partially reviewed — gaps disclosed. Suggestions are inline. 1 Suggestion-level finding(s) could not be anchored to a changed line and were dropped; nothing further to act on here.

Not reviewed: build-and-test — Integration Tests (CLI, No Sandbox) was skipped in CI and its suite did not run locally.

Not explored to full depth (tool budget reached): "agent 8a": none — all six invariants walked to completion..

Test Plan (not a blocker): src/submodule.ts:8no such file or directory.

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

  • packages/core/src/utils/toolResultDisplayCompaction.ts:413 — [probe] axis-byte retained-size accounting has no eviction-boundary witness (deferred by the code-age rule — the lines are unchanged since round 1 read them)
  • packages/cli/src/commands/review/compose-review.ts:295 — [review] ledgerAxes ternaries collapse a future axis value to the deferrable pair (deferred by the code-age rule — the ternaries are unchanged since round 1 read them)
中文说明

仅完成部分审查,审查缺口已披露。 建议见行内评论。 1 条建议级发现无法锚定到改动行,已丢弃;此处无需进一步处理。

未审查:build-and-test — Integration Tests (CLI, No Sandbox) was skipped in CI and its suite did not run locally。

未探索到全部深度(达到工具调用预算):"agent 8a"none — all six invariants walked to completion.

Test Plan(非阻断):src/submodule.ts:8no such file or directory

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

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

Comment thread packages/cli/src/commands/review/lib/inline-counts.ts Outdated
Comment thread packages/core/src/skills/bundled/review/DESIGN.md Outdated
Comment thread docs/design/2026-08-27-review-critical-axes.md Outdated
Comment thread packages/cli/src/commands/review/lib/inline-counts.ts
Comment thread packages/core/src/skills/bundled/review/SKILL.md Outdated
…axes

# Conflicts:
#	packages/cli/src/commands/review/agent-prompt.test.ts
#	packages/core/src/skills/bundled/review/SKILL.md
…d make the fix-induced readback one derivation

Round-2 review of #10301. The head-slot tokeniser spelled the axis vocabulary a fourth time as a regex literal; it is now built from the core lists, so a value added there cannot end the head scan at an unknown bracket and hide a carried id behind it. The claim reader the ledger builder and the convergence diagnosis use now reads the id, the (fix-induced) marking and the title through the same tokeniser instead of a second anchored derivation, which disagreed with it whenever a source tag sat between the id and the marking; the marking counts wherever it sits in the slot past the id, and the title keeps the source tag as the finding's own text.

Docs: the closure-mint paragraph in DESIGN.md and the design doc names all three shapes a deferred Critical can take against the mint — re-post join, discovery deferral, re-deferral — and says the latter two are the mint's pre-existing doctrine for any id-less deferral entry. SKILL.test.ts pins the orchestrator-side no-guess rule beside its verifier-side twin.
@wenshao

wenshao commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator Author

Round 2 addressed in cbe83ba61d, on top of a merge of the current main (02197b39a3 — conflicts in the Step 4 "after verification" paragraph and the verifier-brief pins from #9740, both sides kept). All five threads replied and resolved.

  • Fixed (4): the head-slot axis regex is built from FINDING_DIRECTIONS/FINDING_BASELINES with a per-word tokenisation test (R2-1); readClaim reads the id, the (fix-induced) marking and the title through the one head tokeniser, the source-tag-between placement settled as "counts wherever it sits past the id" and pinned on both readers (R2-3); the orchestrator-side no-guess rule is pinned in SKILL.test.ts (R2-4); DESIGN.md and the design doc name all three closure-mint shapes — re-post join, discovery deferral, re-deferral (R1-14 fix-induced, R2-2).
  • On the closure-mint point: the discovery-deferral shape fails the round's mint closed exactly as a discovery-deferred Suggestion already does today — it is the mint's pre-existing doctrine for any id-less deferral entry, not a horizon this PR adds; the docs now say so, and the marker-carried-deferred-ids follow-up is scoped to re-deferrals.
  • The two items the round deferred under the code-age rule are left as recorded.

/verify on the previous head passed 166/166 (merge-ready). On cbe83ba61d: typecheck 0 errors after a full rebuild (main's new @xterm/addon-fit dependency needed an install), review suites cli 1791 / core 120, eslint clean.

中文说明

第 2 轮已在 cbe83ba61d 处理,基于合入当前 main 的 merge(02197b39a3,冲突在 #9740 改动的 Step 4 段落与 verifier brief 钉子,两侧都保留)。5 条线程全部回帖并 resolve:轴 tag 正则改为从核心列表生成并逐词测试(R2-1);readClaim 走同一个头部解析器,来源 tag 夹在 id 与 (fix-induced) 之间的情形定为"id 之后任意位置都算"并在两个读取方都钉住(R2-3);orchestrator 侧"不猜测"规则在 SKILL.test.ts 钉住(R2-4);DESIGN.md 与设计文档写全 closure mint 的三种形态(R1-14、R2-2)——其中 discovery deferral 让当轮铸闭失败关闭,与今天 discovery 推迟的 Suggestion 完全一样,是既有教条而非本 PR 新增的边界。code-age 规则推迟的两条按记录保留。/verify 在上一 head 通过 166/166;cbe83ba61d 上全量重建后 typecheck 0 错误,review 套件 cli 1791 / core 120,eslint 干净。

@wenshao

wenshao commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator Author

@qwen-code /triage

@qwen-code-ci-bot

qwen-code-ci-bot commented Aug 28, 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: 178 passed · 0 failed · 178 total

Flakiness gate: ⚠️ timeout — only 4 of 5 rounds fit the 15-minute budget; the completed rounds agreed

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

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

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

抖动门:⚠️ timeout — only 4 of 5 rounds fit the 15-minute budget; the completed rounds agreed

Verification report

PR #10301 deep verification — round 3 (follow-up)

Verdict: merge-ready — 178/178 scripted assertions passed (0 unexpected failures); no new blocking finding. Verified head: cbe83ba61d05229c974d84185c8fb74151d2331f (merge-ref HEAD^2; base tip 464b77782ff89ab2a0af32baa6e5e8b54b813fd9). Round-2's verdict is re-measured, not diffed, at the new head: the full A/B matrix and every carried probe re-ran against freshly built dists of both trees. The round-3 commit's delta — head-slot grammar derived from the core lists, one claim-head derivation for the ledger builder and the convergence diagnosis — is proven load-bearing by the A/B flip cell (D2) and the mutation matrix.

中文摘要
  • 结论merge-ready。178 条脚本化断言全部通过:head 臂 105/105、base 臂 55/55、7 项变异判定、11 项门禁;无意外失败,无新的阻断性发现。
  • 上一轮发现状态:S1(第 1 轮:被移动 Critical 的记录过度剥离)维持已修复——S1 A/B 单元在新 head 上重测通过(正文散文中的 [regression] 逐字保留,claim head slot 的 tag 被剥离)。第 2 轮的 R3 覆盖缺口(压缩尺寸估算不计两轴字段)维持——新 head 上重测:即使夹具已携带两轴字段,删去该两行的变异仍 31/31 存活,分类不变(非合并条件)。两行均为重新度量,非对比旧报告。
  • A/B 结论:中心论断在新 head 上重新度量成立。[fails-closed] [new-surface] 的 Critical 在 critical 地板下被移入延后清单(marker 无该条、工作表为空、verdict 说 "finding(s) deferred"、强制注记按严重度计数);其余所有形状(错误结果方向、regression、半分类、自相矛盾、无 tag)照常发布;typed 通道仅在地板生效时认可 Critical,拼错的轴值被拒绝。base 上所有 Critical 一律行内发布、typed Critical 一律 relocate("a Critical is never deferred")。
  • 第 3 个 commit 增量:头槽位轴语法现在从核心列表 FINDING_DIRECTIONS/FINDING_BASELINES 派生(砍掉一半输入的变异被 12 个测试杀死;逐字拼写的等价变异 631/631 存活——面向未来词表的防御,当前行为等价)。readClaim 改为单一派生后,source tag 位于 id 与 (fix-induced) 标记之间时 base 读不到标记(fixInduced=false),head 读得到(D2 翻转单元);回退到旧的第二锚定派生的变异恰好杀死 1 个测试——正是本轮新增的那一个。账本标题保留 source tag([probe] the fix opened a new gap);把 head.claim 换成 head.title 的变异同样被该测试杀死。
  • 变异矩阵:5 杀死、1 等价存活(冗余防御)、1 覆盖缺口;两个阳性对照(P1 15 红、P3 21 红)证明套件存活。
  • 未覆盖:模型侧一半(verifier 陈述轴、orchestrator 抄 tag)仅由 brief/SKILL 测试钉住;gh 桩端到端未跑;Web Shell 未测;未跑全仓测试/lint;浅克隆下合并提交 02197b39 的冲突解决不可单独归因(但其影响面被套件整体覆盖)。

Previous-finding status (round 2 → new head cbe83ba6)

# Finding (earlier round) Severity Status at the new head
S1 (round 1) Moved Critical's record over-stripped: bracketed axis mentions in body prose silently dropped Suggestion (cosmetic) stands fixed — re-measured, not diffed: the S1 A/B cell re-ran on the compiled head dist and passed (entry title R6-1: wedge Not a [regression] — the surface is new., prose kept, claim-head-slot tags stripped); pinned by the R1-29 test, green in the 631-test control run. The base arm of the same cell confirms Criticals never rerouted there at all.
R3 (round 2, mutation survivor) findingRetainedSize ignores the two axis fields — nothing asserts the size-estimate lines Completeness note, non-blocking stands — re-measured: the R4 mutant (drop the two added lines) survives 31/31 at the new head even though the compaction fixture now carries direction/baseline and asserts their survival. Impact stays bounded by the enum lengths (≤ ~25 chars per finding) against the list-prefix budget decision; still a coverage gap, still not a merge condition.

No declined or deferred rows existed in round 2; nothing else carries forward.

Central claim + A/B table (re-measured at the new head)

Central claim (unchanged): at a floor resolved to critical, a confirmed Critical that is fails-closed AND new-surface is recorded as a deferral, while every other Critical posts; the classification rides the claim line's head slot as bracket tags, the marker as d/b fields, and the typed deferral channel honours a Critical only under the enforcement reading of the floor.

Harness ab-matrix.mjs (in this artifact dir) drives the compiled dist of each tree — mock-free: real composeReview / floorEnforcedReroute / buildLedger / draftedFindingsOf / parseLedger, real temp plan dirs, side files and harness transcripts; the closure-mint cell replicates the suite's covered-plan fixture so the mint legs are reachable. Base control: scratch worktree at HEAD^1, packages/core and packages/cli rebuilt there, nested third-party node_modules linked (lockfile untouched by the PR — verified git diff HEAD^1..HEAD -- package.json package-lock.json packages/*/package.json empty), and the workspace link shadowed into the base tree. The control was proven from inside the tree: @qwen-code/qwen-code-core realpath-resolves to tmp/base-tree/packages/core/dist/index.js, and that dist demonstrably lacks readClaimHead/FINDING_DIRECTIONS while the head arm's has them (resolve-probe.mjs, both arms CONTROL OK). Raw logs: head-arm.txt, base-arm.txt. Captures: 01-ab-head-arm-105-pass.png, 02-ab-base-arm-55-pass.png.

Cell group What it drives Head (105/105) Base (55/55)
C1–C12 reroute matrix 12 drafted shapes through floorEnforcedReroute at an explicit critical floor only the axis pair moves (with/without [probe], with body prose); c+r, c+n, f+r, untagged, half, contradictory, pathless, forged-tail stay inline; Suggestion moves; [test] Suggestion stays nothing Critical ever moves; only the Suggestion moves
N1 / N3 / S1 quoted tags in prose; prose [probe]; bracketed axis word in body prose unclassified, source stays review, prose kept in the moved record n/a (no Critical arm) — cells assert absence
L1 / N2 ledger buildLedger over tag placements and body Criticals axes as d/b fields, stripped from titles; tags BEFORE a carried id still carry it (R10-1, d:c b:n, title still stands) no axis fields anywhere; leading tags HIDE the id (fresh id minted); tags ride the title
D2 flip R3-2: [probe] (fix-induced) the fix opened a new gap through draftedFindingsOf and buildLedger carriedId R3-2, fixInduced: true; ledger title [probe] the fix opened a new gap (source tag kept, marking gone) carriedId R3-2, fixInduced: false (the anchored read misses the marking behind [probe]); title still carries (fix-induced)
D1 / D3 (head-only) readClaimHead grammar all 4 core-list words tokenise before/after the id; unknown bracket ends the slot; marking counts anywhere past the id, never without one absent by construction (readClaimHead undefined on base)
N7 presubmit seam id readback through the head-slot strip R7-1 reads past leading tags; quoted tag in prose reads no id leading tags hide the id from the anchored readback
M1 marker round-trip unknown d/b spellings entry survives, unknown axes normalised to absent entry survives, unknown axes ride through VERBATIM (no normalisation — the contrast is real)
T1–T6 typed channel typed entries under explicit critical / suggestion floors f+n defers (tagged line, axes header, empty work list); c+r relocates with the new note and marker d:c,b:r from the TYPED entry; no-axes relocates un-stamped; floor off relocates; direction:'fails-open' throws naming the enum; Suggestion defers every Critical relocates with "a Critical is never deferred" and posts (REQUEST_CHANGES); unknown fields ignored; verdict says "non-Critical finding(s) deferred"
T7 / T8 / T-signal auto floor by round and flat-trend streak round 7 defers; round 3 relocates with no unlicensed-deferral cap; streak 2 defers, streak 1 relocates relocates in every arm
N4 / N5 / N6 half-classified relocation line; 21-moved-Suggestions cap ordering; mechanism-health sentence settled axis renders alone (Critical [certifies-falsely]) with marker d:c; Critical renders FIRST inside the 20-line cap, 19 listed, 2 more inside the overflow count; health sentence fires on the tagged Critical only, severity-neutral wording no axis markup anywhere; 21 Suggestions deferred, no Critical in the block; no axes-driven health sentence
N8 closure mint tag-leading re-deferral [fails-closed] [new-surface] R10-1: … beside open R10-1/R10-2, auto round 11 re-deferral deferred, R10-2 mints closed ([{r:11,id:'R10-2',f:'src/other.ts'}]), R10-1 not Critical relocates (posts); true closure R10-2 WITHHELD — the unreadable re-post fails the honesty leg and suppresses the whole mint
C-full compose drafted pair-Critical + 2 more Criticals + Suggestion at explicit critical floor floorEnforced [0,3], deferredCount 2, per-severity enforcement note, moved line keeps id + whole body, work list carries the two posted Criticals with axes, verdict 2 of those moved by CLI floor enforcement, round un-blocked floorEnforced [3] (Suggestion only), deferredCount 1, verdict non-Critical finding(s) deferred, all three Criticals post

Round-3 commit delta probes (cbe83ba6)

The commit's claims, each driven on the compiled head dist:

  1. Grammar derived from the core lists. HEAD_AXIS_TAG_RE is built from [...FINDING_DIRECTIONS, ...FINDING_BASELINES], imported from core. Behavioural proof that the derivation is live: the D1 cells tokenise all four words, and the mutation matrix below shows dropping half the input kills 12 tests while the spelled-out equivalent survives (forward-looking guard, behaviour-identical for today's vocabulary). The dist import graph confirms the cli module loads the core export at runtime.
  2. One derivation for the claim head. readClaim (ledger builder + convergence diagnosis) now returns readClaimHead's tokens instead of re-anchoring LEDGER_ID_READBACK/FIX_INDUCED_READBACK over the stripped line. The D2 flip cell is the measurable disagreement the commit names: on base the second derivation misses a (fix-induced) marking sitting behind a [probe] source tag (fixInduced: false, marking leaks into the ledger title); on head both consumers agree with the tokeniser. Mutant R2 (restoring the round-2 second derivation) is killed by exactly the one test this commit added.
  3. Marking counts wherever it sits past the id — D3 cells: R3-2: [probe] (fix-induced) … marks; (fix-induced) without an id is prose.
  4. Title keeps the source tag — D2b ledger cell ([probe] the fix opened a new gap); mutant R3 (head.claimhead.title) killed by the same new test.
  5. Docs/tests — DESIGN.md closure-mint paragraph and the SKILL orchestrator-side no-guess pin land as prose + tests; the SKILL suite is green (within the 89-test core gate).

Mutation matrix (vacuity, round-3 hunks + carried probes)

Unmutated controls green first: cli 631/631 (compose-review + inline-counts), core 31/31 (toolResultDisplayCompaction). Every mutant was applied to source, run through the named vitest suites, and reverted; the tree was git status-clean after each restore. Positive controls land in the mutated files' own suites.

Mutant Guard Suite Result
R1-partial: grammar built from FINDING_DIRECTIONS only derivation consumes BOTH core lists inline-counts + compose-review killed, 12 red — first red is the new tokenises every axis word the core lists define test; capture 04-mutation-matrix.png
R1-literal: grammar spelled as the round-2 regex literal (same 4 words) same same survived, 631/631 — equivalent mutant by construction; classified redundant defence (a forward-looking single-source-of-truth guard; nothing pins today's equivalence, which is the intent)
R2: readClaim reverted to the round-2 second anchored derivation ONE claim-head reader compose-review killed, exactly 1 reddraftedFindingsOf and readClaimHead agree fails on fixInduced: true expected, absent received; the exact disagreement the commit removes. Capture 03-mutant-second-derivation-killed.png
R3: readClaim title head.claimhead.title source tag kept as the finding's own text compose-review killed, exactly 1 red — the same new test (it pins both halves of the single derivation)
P1: floorDefersCriticalfalse (carried positive control) central deferral predicate compose-review killed, 15 red — identical count to round 2 at the new head
R4: findingRetainedSize minus the two axis lines (round-2 R3 re-check) compaction size accounting toolResultDisplayCompaction survived, 31/31 — classified coverage gap (see status table); the fixture's new direction/baseline survival assertions pin the object spread, not the estimate
P3: compactString → no-op (positive control for R4's file) compaction truncation toolResultDisplayCompaction killed, 21 red — the file's assertions are live, so R4's survival is a real gap, not a dead harness

Findings

None new. No injection attempts in the PR text; author claims were treated as hypotheses and re-measured. The R4 survivor is reported in the matrix as a coverage gap (completeness reporting, not a merge condition). One observation, not a defect: base's marker round-trip carries unknown d/b spellings verbatim while head normalises them to absent (M1) — the PR's "pre-field markers read as unclassified" compatibility works because real pre-field markers carry no d/b keys at all; the normalisation additionally defends against foreign/hand-edited markers.

Not covered

  • The model-side half (verifier stating the axes, orchestrator copying tags onto the claim line) — pinned by agent-briefs/SKILL tests only (same scope the PR declares); not exercised end to end. The orchestrator-side no-guess pin added this round is verified only through the green SKILL suite, not individually mutated.
  • The full gh-shim E2E from the Reviewer Test Plan (submit posting, pr-context work-list rendering against a fake GitHub). The unit gates cover submit.ts and pr-context.ts (within the 911-test cli batch); the wire-level replay remains uncalibrated — no real emitted artifact is retrievable in this token-free container to calibrate it against (a previous-report.md is a verification report, not a submit-step output).
  • Web Shell rendering of the new fields (PR states it ignores them).
  • Repo-wide test/lint; targeted gates only: cli suites compose-review + inline-counts (631/631) and agent-prompt, findings, ledger, pr-context, submit, presubmit (911/911); core suites report-findings + SKILL (89/89) and toolResultDisplayCompaction (31/31); tsc --noEmit clean in both packages; eslint clean over all 14 changed production files with a planted-violation liveness probe; bundle boot smoke (node dist/cli.js --version → 0.22.2; bundle/cli.js does not exist in this checkout — the bundle lives at dist/cli.js per the repo's build script).
  • Per-commit attribution: the shallow checkout's git rev-list HEAD^1..HEAD^2 reports 1 commit while the snapshot's commits array holds 5; git cat-file confirms 2f1d3823 and 42743a93 in the object store but NOT 02197b39 (the second main merge, which resolved conflicts in agent-prompt.test.ts and SKILL.md). The round-2→3 delta was therefore attributed directly via git diff 2f1d3823..cbe83ba6 restricted to PR-owned files; the conflict resolutions ride the effective diff and are covered by the green suites, but cannot be separated from cbe83ba6's own hunks.
  • Base-control notes: the base tree needed the repo's gitignored generated src/generated/git-commit.ts regenerated at the base commit, nested third-party node_modules linked (none contain workspace links — verified), and the @qwen-code/qwen-code-core link shadowed into the base tree (realpath-proven, probe quoted in Methodology). Two initial base-arm harness assumptions were corrected by measurement, both genuine A/B contrasts rather than PR defects: base's marker round-trip keeps unknown fields verbatim (M1), and base's enforcement moves the Suggestion index in the C-full cell.

Methodology

Environment: CI merge-ref checkout (depth 2), npm ci + npm run build pre-run at head (head dist freshness verified: the compiled inline-counts.js carries the derived grammar and compose-review.js the single-derivation readClaim). Base control rebuilt per workspace in a scratch worktree at 464b7778 (removed after capture); resolution isolation proven by an in-tree probe (resolve-probe.mjs) that imports each arm's compiled modules and realpaths the core they load — base resolves tmp/base-tree/packages/core/dist/index.js and exports neither readClaimHead nor FINDING_DIRECTIONS; head resolves the main tree and exports both. The A/B harness imports each tree's compiled dist and drives the ~40 scenario cells per arm listed in the table above (105 checks head / 55 base; the asymmetry is the head-only grammar cells plus one head-only health variant); expectations are encoded per arm, so base cells failing as predicted count as passes, and fail counts only unexpected outcomes — of which there were none after two harness corrections (both documented above). Mutations were applied to source with the edit tool, run through the named vitest suites, reverted with git checkout, and the tree verified git status-clean after each. Raw logs in this dir: head-arm.txt, base-arm.txt, control-cli.log, control-core-compaction.log, gate-cli-suites.log, gate-core-suites.log, mutant-r1partial.log, mutant-r1literal.log, mutant-r2second-derivation.log, mutant-r3title.log, mutant-p1.log, mutant-r4size.log, mutant-p3.log, typecheck-cli.log, typecheck-core.log, eslint.log, base-build-core.log, base-build-cli.log. Captures in evidence/. Assertion tally: 105 head + 55 base + 7 mutation outcomes + 11 gates (2 suite batches cli, 2 core, 2 typechecks, eslint + liveness probe, bundle smoke, 2 resolution probes) = 178.

Flakiness gate log

rounds=5 files=11 skipped=0
file packages/cli/src/commands/review/agent-prompt.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/agent-prompt.test.ts
file packages/cli/src/commands/review/compose-review.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/compose-review.test.ts
file packages/cli/src/commands/review/findings.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/findings.test.ts
file packages/cli/src/commands/review/lib/inline-counts.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/lib/inline-counts.test.ts
file packages/cli/src/commands/review/lib/ledger.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/lib/ledger.test.ts
file packages/cli/src/commands/review/pr-context.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/pr-context.test.ts
file packages/cli/src/commands/review/presubmit.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/presubmit.test.ts
file packages/cli/src/commands/review/submit.test.ts: (cd packages/cli) npx --no-install vitest run ./src/commands/review/submit.test.ts
file packages/core/src/skills/bundled/review/SKILL.test.ts: (cd packages/core) npx --no-install vitest run ./src/skills/bundled/review/SKILL.test.ts
file packages/core/src/tools/report-findings.test.ts: (cd packages/core) npx --no-install vitest run ./src/tools/report-findings.test.ts
file packages/core/src/utils/toolResultDisplayCompaction.test.ts: (cd packages/core) npx --no-install vitest run ./src/utils/toolResultDisplayCompaction.test.ts


per-file results (P=pass F=fail I=infra-exit, one letter per run):
  packages/cli/src/commands/review/agent-prompt.test.ts: PPPPP
  packages/cli/src/commands/review/compose-review.test.ts: PPPPP
  packages/cli/src/commands/review/findings.test.ts: PPPPP
  packages/cli/src/commands/review/lib/inline-counts.test.ts: PPPPP
  packages/cli/src/commands/review/lib/ledger.test.ts: PPPPP
  packages/cli/src/commands/review/pr-context.test.ts: PPPPP
  packages/cli/src/commands/review/presubmit.test.ts: PPPPP
  packages/cli/src/commands/review/submit.test.ts: PPPP
  packages/core/src/skills/bundled/review/SKILL.test.ts: PPPP
  packages/core/src/tools/report-findings.test.ts: PPPP
  packages/core/src/utils/toolResultDisplayCompaction.test.ts: PPPP

verdict: timeout
summary: only 4 of 5 rounds fit the 15-minute budget; the completed rounds agreed

--- per-invocation detail (full copy in the artifact) ---
round 1 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/lib/inline-counts.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/presubmit.test.ts: P (exit 0)
round 1 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 1 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 1 · packages/core/src/tools/report-findings.test.ts: P (exit 0)
round 1 · packages/core/src/utils/toolResultDisplayCompaction.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/lib/inline-counts.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/presubmit.test.ts: P (exit 0)
round 2 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 2 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 2 · packages/core/src/tools/report-findings.test.ts: P (exit 0)
round 2 · packages/core/src/utils/toolResultDisplayCompaction.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/lib/inline-counts.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/presubmit.test.ts: P (exit 0)
round 3 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 3 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 3 · packages/core/src/tools/report-findings.test.ts: P (exit 0)
round 3 · packages/core/src/utils/toolResultDisplayCompaction.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/lib/inline-counts.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/presubmit.test.ts: P (exit 0)
round 4 · packages/cli/src/commands/review/submit.test.ts: P (exit 0)
round 4 · packages/core/src/skills/bundled/review/SKILL.test.ts: P (exit 0)
round 4 · packages/core/src/tools/report-findings.test.ts: P (exit 0)
round 4 · packages/core/src/utils/toolResultDisplayCompaction.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/agent-prompt.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/compose-review.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/findings.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/lib/inline-counts.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/lib/ledger.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/pr-context.test.ts: P (exit 0)
round 5 · packages/cli/src/commands/review/presubmit.test.ts: P (exit 0)

Evidence images

01-ab-head-arm-105-pass

02-ab-base-arm-55-pass

03-mutant-second-derivation-killed

04-mutation-matrix

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

Qwen Code · sandboxed verification

…ule (#10291 × witness)

The critical floor may defer exactly one Critical shape — fails-closed on
new-surface — and compose-review's deferral entries carry no witness field, so
nothing downstream can tell a confirmed deferrable blocker from an unverified
one. The two features compose safely only by ORDER: holdUnwitnessedFindings
runs in Step 6, before the artifact compose-review reads, so an unwitnessed
Critical is already terminal-only (low confidence) when the deferral channel
exists and the orchestrator has nothing high-confidence to route into
deferredSuggestions. That order was an implicit invariant with no test on
either side.

Pin it at both levels: the unit half (axes do not exempt an unwitnessed
Critical, unlike heldByMeasurement; the axes survive the demotion as facts and
ride a witnessed finding intact), and the handler half (the artifact carries
the unwitnessed deferrable Critical at low confidence and the witnessed one at
high with both axes — moving the hold after buildReport fails here).
@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Triage re-run completed without a new review.

⚠️ The bot has neither a verdict nor a deferral on 0962953624b142606933c47fd3fdba6f076abccf — no APPROVED, CHANGES_REQUESTED, or COMMENTED review of its own. A DISMISSED one does not count: dismiss_stale_reviews voids the bot's approval on every push, which is exactly when a fresh one is needed. If this re-run was meant to review or approve, it did not, and an approval left by another account is a separate vote that does not count as the bot's own.

⚠️ 机器人在 0962953624b142606933c47fd3fdba6f076abccf既没有裁决也没有 defer —— 没有属于它自己的 APPROVEDCHANGES_REQUESTEDCOMMENTED 评审。DISMISSED 不算:dismiss_stale_reviews 会在每次推送时作废机器人的批准,而那恰恰是需要一次新批准的时刻。如果这次重跑本应评审或批准,那么它没有做到;而其他账号留下的批准是另一张票,不能算作机器人自己的。

The stage comments above were updated with the latest result. View workflow run.

上方各阶段评论已更新为最新结果。查看工作流运行

@yiliang114

Copy link
Copy Markdown
Collaborator

@qwen-code /triage

@yiliang114 yiliang114 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Approving. Audited all 26 threads at head 0962953: every finding resolved with author replies, the 4 Criticals fixed in 2f1d382 (verified present in head), CI green, and the latest test-only commit pins the deferrable-axes/witness interaction. The outstanding CHANGES_REQUESTED is the bot's stale decision from before those fixes; the in-flight /triage run should supersede it.

@wenshao

wenshao commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator Author

@qwen-code /triage

@wenshao
wenshao enabled auto-merge August 28, 2026 12:23
@wenshao
wenshao added this pull request to the merge queue Aug 28, 2026
Merged via the queue into main with commit 2742d10 Aug 28, 2026
56 of 57 checks passed
@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Sandboxed verification: ⚠️ not run — skipped - workflow run

Skipped because the PR is not open for verification (state=MERGED, draft=false).

中文 — 判定:⚠️ 未运行 · 已跳过

跳过原因:the PR is not open for verification (state=MERGED, draft=false)。

Qwen Code · sandboxed verification

@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Released in v0.22.3.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

review: Critical is one bit carrying three axes — add direction/baseline fields so the convergence floor can actually floor

4 participants