Skip to content

Offline Event Queueing

This content is not available in your language yet.

离线 Event 排队

规范关键字按规范语言解释。

离线客户端可以构造并签名 exact Event,但不能预获得未来的接纳权。Event 只在 current governance Station 按提交位置的 current authorization、typed revision 和 MLS gate 验证通过,并签发 RealmCommit 后成为共享事实。

1. 本地耐久化

在首次网络副作用前,客户端或 Account Station 必须原子保存 exact canonical Event bytes、producer proof、 目标 Realm/scope 和本地幂等记录。重试必须逐字节重放;不得因时间、route 或 stream head 变化而修改已签 Event。

2. 授权语义

v1 不提供可在未来抵消撤销的离线 authorization lease。在 Event 提交前发生的成员移除、device/runtime 撤销、capability 撤销、policy 变更或 MLS key-access revision 推进,都对接纳判断立即有效。 v1 也没有 Agent runtime 可自行调用的通用 authorization-lease issuance 服务动作或 ak.self.authorization.leases.command.issue.v1 操作;ak.self.events.command.submit.v1 是 Event 提交入口,不能视为 lease-issue 的别名。旧 ordered-batch/genesis-anchor 通用发行向量 不属于 active v1 conformance。此边界不取消安全轮换中备份擦除的高风险授权要求;其独立 lease carrier/发行合同尚未闭合,不能借通用 Agent 发行面补空。

需要并发保护的领域写入在 typed payload 中携带 expected_revision。排队期间 revision 变化时,治理 Station 返回 cas_conflict,客户端必须获取新 current、要求用户确认语义变化,并生成新 Event。

3. 状态机

本地可见状态只有 queued、forwarding、committed、rejected 和 temporarily_unavailable。 queued/forwarding 不得进入共享 current、共享 timeline 或其它成员的 fanout。收到有效 RealmCommit 后才转为 committed。明确拒绝不占 stream position,不能通过更换 Account Station 绕过;暂时失败使用 temporarily_unavailable。

4. MLS

MLS Add Commit 必须把 staged post-state 和全部 exact Welcome deliveries 一并耐久保存,再发送原子 MlsCommitSubmission。Commit 被接纳后安装 staged state,不等待 recipient ACK。若请求结果不明,重放同一 submission,不得重新 claim KeyPackage 或重新生成 Commit/Welcome。