Files
app/M4_COMPATIBILITY_AND_RELEASE.md
T

4.1 KiB
Raw Blame History

M4 兼容矩阵与发布策略

本文定义 LineUp v1 的 Host 行为,不以特定框架的便利接口扩展协议。Tauri 是当前唯一已验收的 Reference HostAndroid 按当前范围暂缓;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,并建立生产 manifestapp_id、精确 versionartifact_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 状态。错误率或安全事件触发时撤销 artifactHost 仅切回已验证 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 交叉编译 SpikeLinux native GUI 仍受本机 GTK4/WebKitGTK 6.0 开发依赖限制,因而尚未获得 Linux 生产批准。Android 按用户范围暂缓。