Repository navigation
Conversation
|
|
||
| async function pending(options = {}) { | ||
| const made = memoryPorts(options); | ||
| await promptSubmitted(made.ports, { sessionId: 'session', prompt: PROMPT, waitMs: 500 }); |
There was a problem hiding this comment.
新增测试文件从函数体中段开始,导致测试套件无法解析
🔴 严重程度:高(P1)
新文件的首行直接是测试函数体内的语句,但没有对应的 test(..., async () => { 开头;随后新增的 }); 因缺少匹配的开放结构而成为非法语法。
Finding:finding_d5422277cb974ef9e7bdf0df
Copying the index advances its mtime, which can make Git trust a cached stat entry for a same-size edit. Use the source index timestamp rounded down before adding untracked entries. A deterministic regression checks both diff parts and the untouched source index.
|
Sentinel 已审核此变更,并发现 1 个已核验问题。 另有 29 个需要人工确认的风险;黄色 advisory 不阻塞合并,建议开发 agent review advisory 评论并逐条确认。 审核覆盖提示: 开发 agent 查询详情: 调用 MCP 工具 由 Sentinel 审核 · 目标提交 eb45846d66c9 |
|
Sentinel 保留了 29 个尚未确认的审核候选。这些黄色条目不阻塞合并;红色 P0/P1 与其他独立硬门禁不受影响。 单一猜测、缺少变更行证据或纯 checklist 的候选会统一降为 P3。
另有 开发 agent 查询详情: 调用 MCP 工具 由 Sentinel 审核 · 目标提交 eb45846d66c9 |
| const pending = rangeOf(await candidates.read(), at.sessionId)?.pendingNativeCheck; | ||
| const attached = await sessions.update(at.sessionId, stored => { | ||
| if (!stored.open || stored.turn !== turn || stored.sessionEpoch !== sessionEpoch || stored.pid !== owner.current()) return undefined; | ||
| return { ...stored, native: { turn, mark: facts?.status === 'ok' ? facts.mark : null, turnId: null, model, |
There was a problem hiding this comment.
首次读取失败会永久阻断后续有效终态对账
🔴 严重程度:高(P1)
首次 facts 不是 status: 'ok' 时,代码仍建立 native turn,但将 native.mark 保存为 null。后续读取即使成功,身份校验仍要求 facts.mark.fileId === native.mark?.fileId;右侧恒为 undefined,正常的非空 fileId 必然被拒绝。当前状态机没有用后续 facts 补写初始 mark 的路径。
Finding:finding_63cfbfff4315daad2f4ff3ea
Retain admitted unresolved native turns across the next prompt. Finalize from their original identity and evidence, without consuming the newer turn notes or replacing its model route. Keep pending entries recoverable until reports and candidate work have settled.
Leave a turn to native recovery when its snapshot overlaps the next prompt. Keep the newer range intact when an older turn falls outside the retained window.
A worker can exit before fork, leaving an owner marker without a native child receipt. Give the guardian and orphan recovery mutually exclusive claims on the startup marker so recovery can remove a prelaunch directory while keeping claimed scratch without closure proof.
An older dist/kimi can outlive a newer managed installation. Compare the staged and currently installed versions under the activation lock before replacing the package. Keep explicit version requests available for intentional source builds.
Keep the Kimi native monitor wiring and the ledger delivery changes from upstream PR EvoMap#58.
Bring over late native terminal handling, ACP prelaunch scratch recovery, and the installer downgrade guard while preserving the Desktop adapter and acceptance fixtures.
|
Sentinel 已审核此变更,未发现已核验问题,但发现需要人工确认的风险。 另有 26 个需要人工确认的风险;黄色 advisory 不阻塞合并,建议开发 agent review advisory 评论并逐条确认。 审核覆盖提示: 开发 agent 查询详情: 调用 MCP 工具 由 Sentinel 审核 · 目标提交 bf5f6c586d53 |
|
Sentinel 保留了 26 个尚未确认的审核候选。这些黄色条目不阻塞合并;红色 P0/P1 与其他独立硬门禁不受影响。 单一猜测、缺少变更行证据或纯 checklist 的候选会统一降为 P3。
另有 开发 agent 查询详情: 调用 MCP 工具 由 Sentinel 审核 · 目标提交 bf5f6c586d53 |
Bind only a fresh native TurnStarted matching the submitted prompt, owner, and file anchor when available. Keep the route binding captured at submit rather than selecting current credentials for an older turn.
Reevaluate the captured binding of the remaining work. Omit the old worktree diff for the repaired range and retain only runtime blocks tied to the same binding.
|
Sentinel 已审核此变更,并发现 2 个已核验问题。 无法定位到 diff 的已核验问题所有权收据写入失败会触发 TDZ 异常并遗留脱离 guardian 的 native 子进程🔴 严重程度:高(P1) Finding: 当前为 另有 32 个需要人工确认的风险;黄色 advisory 不阻塞合并,建议开发 agent review advisory 评论并逐条确认。 审核覆盖提示: 开发 agent 查询详情: 调用 MCP 工具 由 Sentinel 审核 · 目标提交 b308ffac97a4 |
|
Sentinel 保留了 32 个尚未确认的审核候选。这些黄色条目不阻塞合并;红色 P0/P1 与其他独立硬门禁不受影响。 单一猜测、缺少变更行证据或纯 checklist 的候选会统一降为 P3。
另有 开发 agent 查询详情: 调用 MCP 工具 由 Sentinel 审核 · 目标提交 b308ffac97a4 |
| process.stdin.on('data', chunk => { if (!child.stdin.destroyed) child.stdin.write(chunk); }); | ||
| process.stdin.on('end', endInput); | ||
| process.on('message', message => { | ||
| if (message?.type === 'stop') { failure ??= 'cancelled'; void terminate(); } |
There was a problem hiding this comment.
完成后的迟到取消仍会终止陈旧 PID 并改写结果
🟠 严重程度:中(P2)
close 已将 result 设置为终态,但 stop、SIGTERM 和 owner-watch 仍无条件调用 terminate();非 Windows 路径随后对已退出子进程保存的 child.pid 执行 process.kill(-pid, ...)。stop 还会在已经发送成功 closed 消息后把 failure 改为 cancelled,使 guardian 最终以失败码退出。若该 PID/进程组号在等待 release 期间被复用,还会向无关进程组发送 SIGTERM/SIGKILL。
Finding:finding_5f9ae6f56a7ec3dc1d397714
|
Sentinel 已审核此变更,并发现 2 个已核验问题。 无法定位到 diff 的已核验问题未完成的 deferred native turn 会被容量截断并永久丢失终态🟠 严重程度:中(P2) Finding:
|
|
Sentinel 保留了 35 个尚未确认的审核候选。这些黄色条目不阻塞合并;红色 P0/P1 与其他独立硬门禁不受影响。 单一猜测、缺少变更行证据或纯 checklist 的候选会统一降为 P3。
另有 开发 agent 查询详情: 调用 MCP 工具 由 Sentinel 审核 · 目标提交 46c14ecdf9e1 |
forrestlinfeng
left a comment
There was a problem hiding this comment.
Reviewed the Desktop delta over #31 (8 files, +42/-28): the kimi_code_desktop client, the Kimi Code.exe owner pattern, docs and tests — clean and Kimi-only, no changes needed. It's blocked only on #31, which still needs the rework described in #31 (latest review). Once the reworked CLI PR lands, re-apply these 8 files on top and this can merge.
|
Sentinel 已审核此变更,并发现 1 个已核验问题。 另有 26 个需要人工确认的风险;黄色 advisory 不阻塞合并,建议开发 agent review advisory 评论并逐条确认。 审核覆盖提示: 开发 agent 查询详情: 调用 MCP 工具 由 Sentinel 审核 · 目标提交 8e0f03565689 |
|
Sentinel 保留了 26 个尚未确认的审核候选。这些黄色条目不阻塞合并;红色 P0/P1 与其他独立硬门禁不受影响。 单一猜测、缺少变更行证据或纯 checklist 的候选会统一降为 P3。
另有 开发 agent 查询详情: 调用 MCP 工具 由 Sentinel 审核 · 目标提交 8e0f03565689 |
| if (version === undefined && currentPackage && isOlderVersion(next.version, currentPackage.version)) { | ||
| throw new Error(`Refusing to downgrade Kimi plugin from ${currentPackage.version} to ${next.version}. Use a current bundle or specify --version to build the checkout intentionally.`); | ||
| } | ||
| if (currentPackage) { fs.renameSync(target, backup); moved = true; } |
There was a problem hiding this comment.
已激活更新的中断现场不会被重试清理
🟠 严重程度:中(P2)
更新先把旧包移入 staging 的 previous,再激活新包。若进程在激活后、提交及 finally 清理前退出,target 已存在且旧备份仍留在 staging。重试时 packageOf(target) 成功,短路掉 recoverPackage(),因此旧现场永远不会被识别或清理。后续再次中断并需要恢复时,多个 staging 备份会触发 “Multiple interrupted Kimi updates found”,阻断自动恢复。
Finding:finding_c36fec8e265f115749e66c1f
Summary
Extend the Windows Kimi Code CLI adapter to local Desktop sessions. Depends on #31. Desktop-only diff
The same installer, package and ACP runner serve both clients. This draft targets upstream
mainfor CI. The Desktop-only comparison isolates the eight changed files while the CLI base is under review.Evidence
Merge Danger
Two-way. The package and its data stay shared. The added Desktop event and owner recognition is confined to Kimi. Keep the draft stacked on #31 until the CLI base has landed.