# 审核报告(v0.2.0) 范围:`lib/` 全部代码、`bench/` 测试设施、组合与打包、以及"测试结论是否站得住"。 方法:逐文件读 + 真实运行复现(不是纸面检查)。每条给出**怎么发现的**、**是否已修**。 ## 1. 缺陷(全部已修,附复现方式) | # | 严重度 | 问题 | 怎么发现 | 修法 | |---|---|---|---|---| | F1 | 高 | 网关在 21 个 key 轮询时,上游 TLS 被重置会抛未捕获的 fetch rejection,**整个进程退出**,一次完整测试跑到一半全废 | 第 2 轮 bench 跑到 `fc-bulk-check` 时进程消失,stderr 是 `TypeError: terminated` | 流式路径加 `catch`,落一条失败记录;进程级 `uncaughtException` / `unhandledRejection` 只记录不退出 | | F2 | 高 | `registerDelegate` 没有把 `ctx.tools.register` 的 disposer 返回出去。页面保存时先 dispose 旧工具、再注册新工具,dispose 是 `undefined` → 抛 `tool "delegate" is already registered`,**会话从此没有委派工具** | 在真实 web profile 上对页面发 `PUT /api/state`,返回 500 并带该错误 | 返回 disposer;`onApply` 失败时先把旧名册挂回去再抛错,保证不会留下"半挂载"状态 | | F3 | 中 | 操作页的 `GET /api/state` 对已经是数组的 `tiers` 又做了一次 `Object.keys`,前端下拉里出现 `0,1,2,3` | 打开页面 API,看到 `tiers=0,1,2,3` | 状态由一处构造、页面原样透传;真实运行时实测 `tiers=batch,build,review,team` | | F4 | 中 | 页面把角色字段直接拼进 `innerHTML`,角色标题里写 `">