跳转至

Reviewer A 独立交叉初审:04 / 09 / 10 / 11 / 12

结论:FAIL,必须修正后复审。 这是初审原始证据,不能作为全课程通过记录。审查者 A 是 02/03/05/06/07/08/13 的作者,本报告只审他人作者 B 的 04/09/10/11/12;不以自己的自查、网站构建成功或源码链接可打开替代独立语义审查。

审查快照:main da00f7f5358f2949383b35c14f548bc20187d80c;发布 dsh-v0.2.0-rc.2 / 639ed015397290b3745d163aafe02ffee4aa3f84。下列引用保留初次发现时原文,即使作者之后已改正文,本报告也不回写成初次 PASS。

F-A1:10.3 错误声称 main 修复了 write/edit observer 执行路径

位置:docs/10-execution-and-sandbox.md:68。

原文:“main修复部分tool-fs write/edit的mutation-linked observer路径”。

证据:执行 git diff 639ed015397290b3745d163aafe02ffee4aa3f84 da00f7f5358f2949383b35c14f548bc20187d80c -- packages/fs/tool-fs/src/write.ts packages/fs/tool-fs/src/edit.ts。两文件唯一差异均是 parameters.file_path.description 增加要求先输出 file_path 的指导。execute 中 mutation → ctx.emit('fs/observed') → return 的路径没有变更。main write execute、edit execute 与 rc.2 相同。原始 ctx.emit 仍有同步 listener 异常可能在 mutation 已提交后改变工具结算;不能另造“两快照都已 contained observer”的结论。

影响:用户明确要求版本对应,错误版本修复归属会诱导以为升级 main 已消除该副作用不确定性。

修复:删除“main修复”声明;保留“实际 mutation 可能已提交,observer/展示失败后应核验实际文件再决定”的使用限制;把两快照真实差异写为参数描述的字段顺序指导,不宣称 JSON object key 顺序成为硬校验。

F-A2:12.10 把 SessionResources 抛错约定扩大成 MCP 未确认关闭保证

位置:docs/12-mcp-and-bridges.md:156。

原文:“close失败保留entry/exclusiveownership并reject,不把未确认停的资源重新发给下一owner。” 此段主语是 MCP browser mount。

证据:SessionResources.closeEntry 确实只在 await resource?.close() 成功后删除 entry;其 reject 会保留 entry。可是 MCP 分支 resource.close() 返回 scope.dispose()(mcp.ts:158),底层 ConnectionHandle.dispose() 在 close 无法确认时只 logger.error(incompleteDisposalMessage),随后继续等待 settling/syncChain 并 unregister 工具,正常 resolve(connection.ts:388)。Cordis fiber _unload 也 catch/log 顶层 cleanup rejection(fiber.ts:675)。不能把“调用 close 返回”解释为“stdio server 关闭已确认”,不能从泛型资源层的 reject 行为推导 MCP 分支也 fail closed。

影响:这是进程清理和 attach 排他复用的实质边界,泛称会让读者以为旧 MCP server 未确认停止时 provider 席位必定保留。

修复:拆为泛型 SessionResources 的 close reject 行为与 MCP 连接实际的 diagnostic-only unconfirmed-close 行为。讲清通常顺序是关闭/等待再释放,但无法确认 closure 的错误目前可能仅诊断;课程不得额外承诺未确认进程绝不重叠。无需修改上游源代码。

F-A3:12.2 reconnect 图遗漏配置分支,且混淆连接代和工具注册代

位置:docs/12-mcp-and-bridges.md:54 的 Mermaid Live --> connection lost --> Backoff --> Connect。

证据:generationDown() 清 client 后调用 scheduleReconnect();policy.enabled === false 分支只报告旧工具继续失败并 return(connection.ts:213)。开启 reconnect 时也不会在首次 disconnect 立即删除 previous tool generation;新 catalog 完整 fetch/build 成功后才由 syncTools swap 删除,或预算耗尽由 syncChain 删除。失败代无法确认关闭则停止 reconnect;图无该分支。

影响:图独立阅读得到“任何断开均重连、旧工具立即移除”的错误控制条件,与正文 12.4 自己的限制冲突。

修复:至少补 enabled 判断、disabled 保留旧注册但调用失败、关闭无法确认停止恢复、预算耗尽移除注册;给代分别命名 connection / tool registration,避免“旧generation关闭”笼统含义。图可简化,但必须保留改变路径的配置条件。

F-A4:12.6 Codex payload 字段拼成不存在的 realtool_name

位置:docs/12-mcp-and-bridges.md:116。

原文:“Codex payload保留model、turn_id、realtool_name”。

证据:preToolPayload 与 postToolPayload 使用 tool_name: exec.name,没有 realtool_name 字段。

修复:改为“tool_name 使用真实工具名”,并用反引号明确实际字段。严重程度低于 A1/A2,但 API 教学应修。

初审已核实的关键链与图

04:完整 profile-boot.ts 的 custom-profile exclusive mkdir/rollback、prepareProfile 空根写回、compose/runProfile、appReady commit;profile.ts 的 templates、resolution generation、linked roots、manifest/dependency traversal;mount.ts 全文件的 root service leak、pending/failed、mount audit。图中的 patch 顺序、revision 共享、scope/isolate 区分与源码相符。尚不以此声称每个 HMR manifest 分支已独立复演。

09:完整 prepareCall/resolveCallWithInfo/adapterStream 的 registration binding、一次 stream 校验、错误 chunk 与 middleware throw 分离;llm-retry/index.ts 全文件的 downstream always delegation、projection counter、before-wait/after-wait日志、Retry-After 上限、abort/unload;region.ts 连续 compaction transaction 与稳定性验证,summarizer/threshold/adapter细节继续复核。重试图没有把 llm/retry-started 画成 HTTP 已发;Prepared Call 不能跨尝试重用。每次 retry 重新 prepare/build 的 loop 源码也已对照过。

10:fs-local/index.ts 全文件、fs-sandbox/index.ts 全文件、sandbox-local/index.ts 连续 runner selection/confine/grants、profiles 全文件、tool write/edit 全文件。读与写限制分开、workspace temp、不是读围栏、不是网络隔离、functional probes 只仲裁竞争 candidates、runner override 是主机声明均准确;发现 A1。

11:core/tools/ptc.ts 连续 run_code tool/scheduler/bindings/finally(创建 runController → submission ids → single driver lane → exclusive until commit → late logging drain);ptc-runtime-node/index.ts 全文件的 resolve/run/execute/control/finish;workflow-ptc/runtime.ts 全文件与 host.ts 全文件。nested tools不继承 program escalation,direct effect vs host tools、lossless JSON、并发体/有序政策、close后结算与副作用不回滚均准确;PTC 调度图与 commit/barrier 时机一致。workflow ordinary null vs fatal、pipeline无跨stagebarrier、cancel等待 pending child startup/disposal也与代码相符。

12:connection.ts 全文件、tools.ts 连续 discovery/swap/schema/executor/image projection、transport 全文件、hook runner 与两桥 index 全文件、browser runtime index/mcp 全文件、browserUse registry 和 Cordis effect/unload。stdio spawn owner、two-phase非恢复旧代事务、image raw与model投影两线、hook基础设施 nonblocking、updatedInput ignored、continue:false/stop_hook_active未实现限制均正确;发现 A2/A3/A4。

快照差异核对与范围限制

已逐文件差异核对重点:write/edit 只有 schema guidance;LLM index changes为移除 INVARIANT 特例 containment;retry history 删除而 executor主体相同;preset mount移除全局live mounts/standing lookup改serviceForMount;SSH helper从instanceof变name/message归类;PTC Node、fs-sandbox、sandbox-local、DeepSeek adapter、pi-ai adapter、MCP client、CC/Codex bridge的 source 主体均无本次变化;workflow guest-source生成产物一行变化,不能泛称整个 workflow 是 main 新实现。

本报告没有执行收费 API、真实 MCP third party、浏览器/桌面控制、SSH remote、macOS/Windows/native platform全矩阵。没有运行全仓测试,没有改他人章节或上游源码。后续 final 报告要重新读取修改后的文件并逐项验证修复,追加当前剩余 source 核对;不得把作者修复自述视为已经通过。