4.1 KiB
4.1 KiB
M4 兼容矩阵与发布策略
本文定义 LineUp v1 的 Host 行为,不以特定框架的便利接口扩展协议。Tauri 是当前唯一已验收的 Reference Host;Android 按当前范围暂缓;Wails v3 仍是 beta 对照 Spike,尚未获得生产批准。
兼容矩阵
| 组合 | Host 必须行为 | 禁止行为 | 观测信号 |
|---|---|---|---|
旧 Client 收到 lineup.v1.* 新消息类型 |
显示安全 fallback;不执行 | 将未知 payload 当 Markdown/HTML 或自动重试执行 | unsupported_type / unsupported_version |
| 新 Client 收到旧 plain text | 仅作为 Markdown 文本显示 | 赋予任何交互或能力 | legacy markdown renderer |
| Client 不支持目标 Surface app/version | 不挂载 iframe;保留会话消息为安全提示 | 向相邻版本或 active 新版本前移 | surface_unavailable / exact-version miss |
| 支持的 Client 收到生产 Surface | 只在 manifest 签名、精确长度和 SHA-256 都成功后挂载已验证 bytes | 从 ui.open/ui.patch 接收 URL、HTML、JS、bundle 或 source |
install disposition、artifact/version |
| 新 bundle 验证失败 | 保持当前已验证 active bundle;呈现不可用状态 | 覆盖 active bytes 或执行候选 bundle | signature_invalid / size_mismatch / digest_mismatch |
| 已验证 active bundle 被撤销 | 原子切回同 app 的上一个已验证版本;无 predecessor 则不可用 | 回退到未校验缓存或远程 URL | rolled_back / unavailable |
| Capability catalog 版本变更 | 重新发送最小 inventory;未知/撤销 capability 只回安全结果 | 使用过期 inventory 直接执行 | catalog revision、unsupported / revoked |
| Surface bridge 收到非当前 iframe 消息 | 丢弃 | 信任 origin 字符串、调用 Host/Wails/Tauri API | bridge rejection counter |
tool.call → submit → tool.result |
一次有序状态收敛;重复幂等 | 从 pending 直接接受远端完成,或二次完成 | call id、transition disposition |
发布序列
- 发布方生成 immutable artifact,并建立生产 manifest:
app_id、精确version、artifact_id、byte size、SHA-256、最小 Host 版本、允许权限、trustedkey_id和 Ed25519 签名。 - 将 manifest 和 bundle 置于 Host 配置的 HTTPS 同源 artifact 服务。manifest 不能携带 URL、HTML、CSS、JS 或 source。
- Host 下载到临时内存,依次验证 manifest signature、精确字节长度、SHA-256;任一失败都不写 cache。
- 验证成功后,才原子安装并将 active 指针切到精确版本;Surface 实例只从
app_id + version精确查找,不允许自动前移。 - 分阶段灰度:先只对具备
min_host_version且已启用该 app/version 的 Client 发布;其他 Client 收到可读提示但不挂载/执行。 - 监控 signature/hash/download/bridge/capability 状态。错误率或安全事件触发时撤销 artifact,Host 仅切回已验证 predecessor;没有 predecessor 时关闭该 Surface。
- 回滚后仍保留审计元数据(不含 artifact 内容、URL、token、文件路径或能力参数)。新 artifact 必须使用新版本号;不得覆盖同版本的 immutable artifact。
Host 发布门槛
一个 Host 只有在以下证据完整时才能标为 M4 production-capable:共享 golden fixture 通过、manifest/cache 单测通过、生产 build 通过、有头浏览器完成签名 bundle open → patch → close → rollback,并完成 Surface 隔离与 capability 拒绝路径验收。
当前状态:Tauri Reference Host 的协议/manifest/cache 自动验证已通过;在可见 Chromium 的 localhost 安全上下文中,开发期签名 fixture 已实际走过 Ed25519 → size → SHA-256 → cache → exact-version resolver → opaque iframe 的 open → patch → close。HTTP LAN 开发 Host 因浏览器禁用 WebCrypto 而安全拒绝验签,正式发布必须使用 HTTPS。Wails v3 beta.3 已完成共享 golden contract 执行与 Windows/amd64 API 交叉编译 Spike;Linux native GUI 仍受本机 GTK4/WebKitGTK 6.0 开发依赖限制,因而尚未获得 Linux 生产批准。Android 按用户范围暂缓。