5.1 KiB
03.sdk_and_coreapp 第 5 次验收评审记录
评审编号:05
评审日期:2026-08-06
评审对象:03.sdk_and_coreapp.md
架构基线:APP架构设计.md
参考评审:04.acceptance_review.md
评审方式:独立子 agent 只读验收 + 主 agent 逐项复核;检查当前代码、Manifest、SDK 契约、自动化测试、构建和文档证据。
总体结论:本轮发现的 P3 契约/证据问题均已逐项修复并分别提交;当前没有遗留 P0~P3 问题。
问题清单(Outline)
状态标记: 🔴 未解决,必须处理;🟡 已提出修复方向,尚未实现;✅ 已解决;⚪ 可延期但必须保留记录。
P0~P3 必须在当前迭代处理;P4~P5 可以延期,但必须保留问题、延期原因和重新评估条件。
| 状态 | 优先级 | 编号 | 问题 | 当前结论 / 证据 |
|---|---|---|---|---|
| ✅ | P3 | A12 | Registry 安装输入仍接受旧的 core / extension kind 别名,和冻结的 system | bundled 契约不一致 |
CoreAppRecordInput 已收紧为 system | bundled;旧测试 fixture 已迁移;提交 44b6a83。 |
| ✅ | P3 | A13 | 主迭代文档中的测试数量过期 | 主文档已更新为当前 30 个测试文件、137 个测试;提交 94817f7 后随新增回归测试再次更新,提交 ca9e8b9。 |
| ✅ | P3 | A14 | Manifest Tool 的多项权限原先只保留第一项,可能造成后续权限漏检 | requires_permissions[] 已完整保存并逐项校验;Manifest/Registry 也拒绝未声明或重复权限;新增回归测试;提交 e91d07b。 |
| ✅ | P3 | A15 | 当前冻结约束未硬性保证只有 Interact 能使用 kind = system |
Registry 现在拒绝除 chat(Interact 兼容 scope)之外的 system MiniApp,并有回归测试;提交 fec04a9。 |
1. 本轮基础门禁
当前执行结果:
npm test -- --run 30 个测试文件、137 个测试通过
npm run build 通过
git diff --check 通过
git status 工作树干净
本轮独立子 agent 的只读审计确认:
- Interact 仍使用
sdk.runtime.*与sdk.ui.*两层适配,没有第二套 Transport、Store、Tool 或 Capability 协议; - Task Dashboard 和 Whiteboard 仍是
kind = bundled,运行于sandbox="allow-scripts"的 opaque iframe; - MiniApp 只能通过 Runtime Bridge 请求 Inbox、Tool、Lifecycle、Surface 和 Capability;
workspace()、openExtensionApp()、ExtensionRuntimeSDK等旧旁路没有恢复;- A1~A11 的已修复约束没有发现回退。
2. P3 修复说明
A12:冻结 kind 词汇
主文档规定 MiniAppManifest.kind 只有 system | bundled。本轮发现 Runtime 的注册输入仍允许旧的
core | extension,虽然最终会转换,仍会让调用方继续依赖已废弃词汇。
现在 CoreAppRecordInput 只接受 system | bundled,Registry 不再负责旧名称转换;受影响的测试 fixture
已全部迁移为 bundled。这样 Manifest、Registry、Inventory 和 Tool Router 使用同一套名称。
A13:更新验收证据
新增回归测试后,测试总数已经变化。本轮把主迭代文档中的旧统计更新为当前实际值 30/137,避免完成定义引用过期数字。
A14:完整检查 Tool 权限
一个 Tool 可能声明多个权限。Runtime 现在保留完整的 requires_permissions[],注册时要求这些权限都在 Manifest
的 permissions 中且没有重复,路由时逐项确认 App 当前确实拥有每一项;缺任何一项都不会把调用交给 MiniApp。
A15:限制 system MiniApp 范围
本迭代只有 Interact 是系统级 MiniApp,当前兼容 scope 是 chat。Registry 在安装边界拒绝其他 scope 的
kind = system,并通过回归测试固定这一不变量。Task Dashboard 和 Whiteboard 仍只能作为受限 bundled MiniApp。
3. 浏览器证据说明
本轮独立 agent 检查时,当前环境没有正在监听的 Web Host/AppServer 进程,因此没有把本轮称为“重新触发的真实 浏览器闭环”。Task Dashboard / Whiteboard 的真实 Bridge 闭环证据沿用上一轮共享会话记录:
tools.list
→ tools.reportProgress
→ surface.patch(Task Dashboard 适用)
→ tools.complete
→ IM 收到 completed 结果
上一轮还验证了 iframe 的 sandbox="allow-scripts"、opaque origin、CSP、event.source + instance_id 校验,
以及错误 source/instance 伪造消息不会改变 Runtime 状态。本轮新增修改没有触及这条浏览器路径;代码门禁和回归
测试均通过。若下一轮需要重新取得独立浏览器证据,应先启动 Web Host 和 AppServer,再按相同路径复验。
4. 结论
P0:无
P1:无
P2:无
P3:A12、A13、A14、A15 均已解决
P4~P5:无新增遗留
本轮没有需要留到下一迭代的 P0~P3 问题。主迭代文档仍可保持“已完成”状态;后续若增加新的 system MiniApp, 必须先重新评审并修改本迭代冻结的唯一 system 约束,而不能绕过 Registry 安装边界。