34 lines
4.1 KiB
Markdown
34 lines
4.1 KiB
Markdown
# 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 |
|
||
|
||
## 发布序列
|
||
|
||
1. 发布方生成 immutable artifact,并建立生产 manifest:`app_id`、精确 `version`、`artifact_id`、byte size、SHA-256、最小 Host 版本、允许权限、trusted `key_id` 和 Ed25519 签名。
|
||
2. 将 manifest 和 bundle 置于 Host 配置的 HTTPS 同源 artifact 服务。manifest 不能携带 URL、HTML、CSS、JS 或 source。
|
||
3. Host 下载到临时内存,依次验证 manifest signature、精确字节长度、SHA-256;任一失败都不写 cache。
|
||
4. 验证成功后,才原子安装并将 active 指针切到精确版本;Surface 实例只从 `app_id + version` 精确查找,不允许自动前移。
|
||
5. 分阶段灰度:先只对具备 `min_host_version` 且已启用该 app/version 的 Client 发布;其他 Client 收到可读提示但不挂载/执行。
|
||
6. 监控 signature/hash/download/bridge/capability 状态。错误率或安全事件触发时撤销 artifact,Host 仅切回已验证 predecessor;没有 predecessor 时关闭该 Surface。
|
||
7. 回滚后仍保留审计元数据(不含 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 按用户范围暂缓。
|