命令、事件和排序
15. 命令、事件和并发
Section titled “15. 命令、事件和并发”15.1 命令
Section titled “15.1 命令”Command 是请求一次结构化状态转换的签名请求。每个 Command 信封 MUST 包含稳定的 Action ID、协议版本、actor、kind、payload、correlation ID、签发时刻和签名。Group 范围的 Command MUST 包含其 Group ID。改变状态的 Agent Command MUST 另外包含当前 Session Epoch 与 Membership Epoch。现有 Group 中的人类 Command MUST 包含当前 Membership Epoch,并且 MUST NOT 包含 Agent Session Epoch。Organization 服务发出的 Command MUST NOT 编造 Agent Session Epoch 或 Membership Epoch。
mission.create 和 mission.create_follow_up 携带正在创建的 Group
ID,但省略 Membership Epoch 与 Session Epoch,因为新的 Group
Membership 尚不存在,而且人类 Command 不使用 Agent 会话。控制平面可以认证、中继并验证
mission.create,但签名 Command 的 actor 与产生的根 MissionOwner 仍是该人类;控制平面不会成为 MissionOwner。Organization 拥有的
ext.missionweaveprotocol.registry.agent_card_register 和
ext.missionweaveprotocol.identity.session_open 引导命令省略 Group
ID 以及全部三个角色/会话 Epoch。
权威性来自当前 Coordinator 租约的 Agent Command MUST 包含当前 Coordinator
Epoch。以下 Command 需要该字段:
mission.renew_coordinator、mission.submit_for_approval、mission.create_child、membership.grant_delegation
和 work.accept_result,以及由 Agent 发出的 mission.terminate。由服务发出的
mission.terminate 改由 Organization 策略授权,不携带 Coordinator
Epoch。修改现有结构化状态时,Command
SHOULD 包含预期的聚合修订。使用一次性 cooperation escalation 的 Command
MUST 还包含 cooperationOverrideGrantId。
当相同 (actor ID, Action ID)
对应的规范签名内容在字节层面等价时,系统 MUST 返回原始回执,并且 MUST
NOT 追加第二次状态转换。若以不同的规范内容复用同一 Action ID,则 MUST 以
ACTION_ID_COLLISION 失败。
Group Authority MUST 认证 actor,验证 Session Epoch、Membership Epoch、Schema、当前聚合修订、角色、委托、预算、策略和租约,并且要么拒绝 Command,要么在该 Group 内原子追加由此产生的 Event。
核心Command种有:
mission.create mission.assign_coordinatormission.renew_coordinator mission.submit_for_approvalmission.approve mission.request_changesmission.cancel mission.terminatemission.create_child mission.create_follow_upmembership.change membership.endmembership.grant_delegationmessage.post message.correctmessage.retract message.redactwork.propose work.authorizework.offer work.accept_offerwork.start work.checkpointwork.block work.unblockwork.submit work.accept_resultwork.fail work.cancelartifact.publish approval.grant_executionpolicy.grant_cooperation_override参考核心还定义了 Organization 拥有的 ext.missionweaveprotocol.*
命令,用于 Agent
Card 注册、会话激活、依赖项插入、执行租约续订、权威资源使用记录和 Group 归档。未来的 Extension
Profile 可能会标准化便利命令,例如显式报价拒绝、澄清或 Mission 暂停,但这些名称不是 v0.1 核心过渡。
15.2 Event 与 Group 顺序
Section titled “15.2 Event 与 Group 顺序”Event 是不可变的已接受事实。Group Event 信封 MUST 包含 Event ID、Group
ID、严格递增的 Group sequence、聚合修订、kind、actor、cause、correlation
ID、发生时刻、payload 和 Group Authority 签名。Organization 范围的
ext.missionweaveprotocol.registry.agent_card_registered 和
ext.missionweaveprotocol.identity.session_opened 事实包含通用的 Event
identity、actor、cause、correlation、payload、time、接受权威和签名字段,但 MUST
NOT 包含 Group ID、Group sequence 或 Group 聚合修订。
Group Authority 为每个持久化 Group Event 分配一个单调递增的 sequence。该 sequence 提供确定性的显示、恢复和审计顺序。即使服务分配了显示顺序,普通 Message 在逻辑上仍可并发。结构化转换依赖 Event 顺序与聚合修订。
核心Event种是核心命令对应的过去时事实,包括:
mission.created mission.coordinator.assignedmission.coordinator.renewed mission.submitted_for_approvalmission.approved mission.changes_requestedmission.cancelled mission.terminatedmission.child.created mission.follow_up.createdmembership.changed membership.endedmembership.delegation.grantedmessage.posted message.correctedmessage.retracted message.redactedwork.proposed work.authorizedwork.offer.created work.offer.acceptedwork.contract.revised work.startedwork.progressed work.checkpointedwork.blocked work.unblockedwork.submitted work.result.acceptedwork.failed work.cancelledartifact.published approval.execution.grantedpolicy.cooperation_override.grantedgroup.snapshot.created group.archivedwork.contract.revised 和 work.progressed
是由引用 Organization 拥有的依赖项插入和 Execution
Lease 更新 Command 发出的核心 WorkItem 事实。Agent Card 和会话激活事实保留其
ext.missionweaveprotocol.* Event 类型。 group.snapshot.created 和
group.archived 是 Organization 拥有的
ext.missionweaveprotocol.core.group_archive
Command 在其签名快照和策略日志链接验证后以原子方式发出的核心存档事实。
自动事件 MAY 由接受的 Command、先前的 Event、计时器或策略决策引起。来自不同组的事件没有明确的顺序。
15.3 乐观并发
Section titled “15.3 乐观并发”结构化聚合命令 SHOULD 提供 expectedRevision。如果它不等于当前修订版,则 Group
Authority MUST 拒绝 Command,并使用 REVISION_CONFLICT 和 MUST
NOT 部分应用它。原子优先接受所有权、租约续订、Membership 更改和 Approval 始终需要比较和设置处理,即使特权内部参与者省略了连线字段。
17. WebSocket 绑定
Section titled “17. WebSocket 绑定”17.1 连接
Section titled “17.1 连接”MissionWeaveProtocol 0.1 服务器 MUST 通过 TLS 1.3 提供 WebSocket
(wss)。单个经过身份验证的连接复用一个 Agent 使用的所有组。每个 WebSocket 消息 MUST 恰好包含一个符合
schemas/websocket-frame.schema.json 的 UTF-8
JSON 文本框架。二进制 WebSocket 消息 MUST
NOT 携带 v0.1 中的 MissionWeaveProtocol 对象或 Artifact 内容。
核心帧类型为 HELLO、SUBSCRIBE、COMMAND、EVENT、ACK、PING
和ERROR。未定义部分 Message 流帧。
17.2 订阅
Section titled “17.2 订阅”身份验证后,客户端发送带有 Group ID、每个 Group 重播位置和可选注意过滤器的
SUBSCRIBE。过滤器改变的是实时交付,而不是授权或持久历史记录。服务器 MUST 对每个 Group 和 MUST
NOT 独立执行 Membership,揭示是否存在未经授权的 Group。
一个连接 MAY 交错来自多个组的事件。仅在每个 Group 内保证序列。接收器 MUST 在应用序列逻辑之前通过 Group ID 进行路由。
17.3 流量控制和活跃度
Section titled “17.3 流量控制和活跃度”ACK 提供持久的进度。 PING 提供活跃度,MAY 携带存在记录;对等方在回复 PING
中回显其随机数。服务器 MUST 应用有界缓冲和每个 Group 背压。当达到限制时,它们 SHOULD 暂停 Group 并发出
BACKPRESSURE 并重试指导,而不是断开不相关的组。
17.4 规范编码
Section titled “17.4 规范编码”线路 JSON 不需要按规范成员顺序到达,但每个哈希、从内容派生的标识符或签名 MUST 使用 RFC 8785 JCS 字节。在架构验证之前,重复的对象成员名称 MUST 将被拒绝。数字和字符串 MUST 满足 第 2 节 ; 中的有限二进制 64 和 I-JSON 规则;一致的实现 MUST 为相同的 JSON 值生成相同的 JCS 字节。
大型内容以 Artifact 形式发布,并通过 URI 和内容哈希引用。 v0.1 模式拒绝未知的核心属性。未知的非关键 Extension
Profile 数据按原样存储和转发。未知的关键扩展会导致
UNKNOWN_CRITICAL_EXTENSION。