工作、日程安排和恢复
10. 工作项目和工作合同
Section titled “10. 工作项目和工作合同”10.1 所需的工作合同
Section titled “10.1 所需的工作合同”每个 WorkItem MUST 都带有版本化的、机器可读的工作合同,其中包含:
- 目标和所需的交付成果;
- 验收标准和所需Evidence;
- 输入和依赖引用;
- 允许的工具、数据、操作和资源限制;
- 所需的功能 ID 和版本;
- 截止日期、请求的紧迫性和业务影响;
- 财务、代币、工具调用、计算、挂钟和副作用预算适用;
- 重试尝试、退避、截止日期和成本政策;和
- 风险分类和任何执行前批准要求。
在接受之前的 WorkItem 对话中提出本质上的歧义 MUST; Worker MUST
NOT 将 WorkItem 接受到其执行队列中。 Coordinator 通过发布带有更正合约的新
work.offer
或授权替换 WorkItem 来解决该问题。重大修订的工作合同会增加其修订版本,并需要重新接受 Worker。自然语言散文 MAY 补充,但 MUST
NOT 替换,合同字段。
10.2 WorkItem 状态机
Section titled “10.2 WorkItem 状态机”WorkItem 的核心状态和转换是:
| 当前状态 | 过渡 | 下一状态 | 说明 |
|---|---|---|---|
| 无 | work.propose |
开放工作提案 | 任何 Group 成员均可提出;尚不存在 WorkItem |
| 无或开放工作提案 | work.authorize |
open |
Coordinator 或范围内委托方创建 WorkItem |
open、offered、queued、active、blocked 或 failed,且无有效所有者 |
work.offer |
offered |
创建、替换或延长持久报价;过期所有者先被 fencing |
offered |
work.accept_offer |
queued |
原子性 Ownership Epoch 开始 |
offered |
报价到期 | offered |
到期会使接受操作失效,但本身不会附加 Event 或更改状态 |
queued |
需要时执行 approval.grant_execution |
queued |
无需执行工作即可满足启动门槛 |
queued |
work.start |
active |
需要有效所有权和 Execution Lease |
active |
work.checkpoint |
queued |
持久化进度会释放执行权,同时保留有界 Ownership Lease |
active |
work.block |
blocked |
检查点和有界阻塞租约 |
blocked |
work.unblock |
queued 或 open |
重新进入其队列,或在所有权到期后重新报价 |
active |
work.submit |
submitted |
需要 Artifact 和 Evidence |
submitted |
work.accept_result |
verified |
Coordinator 审核成功 |
open、offered、queued、active、blocked 或 submitted |
work.fail |
failed |
需要失败 Evidence;Coordinator 稍后可发布新的 work.offer |
open、offered、queued、active、blocked 或 submitted |
work.cancel |
cancelled |
适用清理策略 |
open、offered、queued、active 或 blocked |
mission.create_child |
blocked |
链接的子任务运行期间,所有权被 fencing |
blocked |
链接的子任务获批 | verified |
子任务的 Approval 成为父 WorkItem 的 Evidence |
blocked |
链接的子任务失败 | blocked 或 failed |
声明的子任务失败策略控制传播 |
open、offered、queued、active、blocked 或 submitted |
父 Mission 失败或取消 | failed 或 cancelled |
Mission 终态传播到未完成的 WorkItem |
verified 和 cancelled 是该 WorkItem 修订版的终端。 failed
将控制权返回给 Coordinator,并且只能通过新的 work.offer 进行转换; Coordinator
MAY 相反创建替换 WorkItem 或取消 Mission 级别的分支。实现 MUST 拒绝此表和当前聚合修订版不允许的转换。
10.3 要约、准入控制和所有权
Section titled “10.3 要约、准入控制和所有权”离线 Worker MAY 收到具有到期时间的持久报价。报价 MUST NOT 在接受之前保留独家所有权。独占工作项目 SHOULD 将按顺序提供给排名最高的合格 Worker。对于紧急放置,Coordinator MAY 提供给有界候选集;第一个有效的接受自动赢得一个新的所有权 Epoch,并且在失败者执行之前,每个失败的报价都会被撤回。
接受意味着持久的调度承诺,而不是立即执行。一个 Worker
MUST 针对队列容量、并发性、功能可用性、截止日期、授权资格、依赖性和预算执行准入控制。它 MUST 当它无法做出可信的承诺时拒绝,并且 SHOULD 使用结构化原因,例如
capacity, deadline, capability, authorization, dependency, 或者
budget.
每项作业 MUST 记录结构化选择基础:所需的能力匹配、授权资格、可用性估计、预期成本、特定于能力的可靠性 Evidence,以及应用的政策规则。私人思想链 MUST NOT 被包括在内。
10.4 依赖关系和动态规划
Section titled “10.4 依赖关系和动态规划”一个 Mission的 WorkItems 形成一个不断发展的有向无环图。一个 Coordinator MAY 在了解完整图表之前开始执行,在发现发生时添加工作项,并并行运行独立分支。一个 WorkItem 仅当其声明的依赖项满足合约的依赖项策略时才符合资格。依赖循环 MUST 被拒绝。
没有跨 Group 事务。跨 Group 关系使用稳定的关联 ID、父级与子任务链接、Artifact 和补偿 WorkItem。
11. 调度、执行和恢复
Section titled “11. 调度、执行和恢复”11.1 Per-Group 队列和全局调度程序
Section titled “11.1 Per-Group 队列和全局调度程序”每个 Worker MUST 为每个 Group 维护一个不同的 Event 收件箱、光标和工作队列。队列是已接受的 Group 事件的持久本地投影,并且 MUST 可通过重播重建。 Mission、所有权、租赁和 WorkItem 状态在 Group 日志中仍然具有权威性。
Worker 自有的 Scheduler 从所有每个 Group 队列中选择符合条件的 WorkItem,并将其放入声明的隔离执行槽。Scheduler 对跨 Group 顺序拥有最终决定权。Coordinator 提供所请求的紧迫性、截止日期和业务影响,但 MUST NOT 强制其 Mission 排在其他 Mission 之前。Organization 优先级的升级通过策略或 MissionOwner 进行。
Scheduler MUST 实现加权公平和抗饥饿。有效排序 SHOULD 考虑 Organization 优先级类别、截止日期、队列时效、每个 Group 配额、风险门槛和资源可用性。纯粹且无界的最高优先级优先调度不符合规范。
Agent Card 声明最大并发;状态报告当前容量。每个活动插槽 MUST 将 Mission 上下文、凭证、检查点、工具预算和副作用密钥与其他插槽隔离。
11.2 安排披露
Section titled “11.2 安排披露”在验收和材料计划更改时,Worker SHOULD 发布预计开始窗口、预计完成情况、置信度、产能状态和计算时间。它 MUST NOT 公开来自另一个 Group 的名称、内容、分配或确切的全局队列位置。
11.3 执行租用和抢占
Section titled “11.3 执行租用和抢占”排队所有权和主动执行使用可更新的、受保护的租约。所有权授予 MUST 包括所有权纪元和启动截止日期。开始工作需要执行租约,该执行租约具有绑定到 Agent ID、会话纪元、WorkItem ID、所有权纪元、开始、续订历史记录和到期的稳定租约 ID。每个续订、检查点、区块、Artifact 发布、提交和 Worker 报告的失败 MUST 都会引用当前的租约 ID。即使其所有权 Epoch 未更改,携带旧租约 ID MUST 的延迟 Command 也会被拒绝。
能力令牌绑定到 Execution Lease
ID,而不是相反。这允许在一项租约保持有效的情况下轮换或缩小代币范围;每个令牌仍然会在不晚于其发行时的租约边界到期。检查点、阻止、提交释放租约;超时使之过期;会话替换、重新分配、取消和失败撤销它。打开替换 Agent 会话 MUST 会撤销 Agent 的活动租约,并将受影响的工作项返回到
queued,然后新运行时可以在新租约下启动它们。
优先级更改会立即对排队的工作项重新排序。活动工作 MUST NOT 在不安全点被强制中断。抢占是合作性的:
- Scheduler请求抢占;
- Worker 到达安全、幂等检查点;
- 发出检查点并暂停;
- 其执行槽被释放;和
- 暂停的 WorkItem 重新进入其 Group 队列以供稍后恢复。
11.4 进度、阻塞和重试
Section titled “11.4 进度、阻塞和重试”进度报告 MUST 围绕当前阶段、已完成的里程碑、下一个检查点、阻碍因素、修订估计和 Evidence 参考进行构建。任意百分比是非权威的。当估计发生重大变化或被阻止时,工作人员 SHOULD 在有意义的检查点进行报告。
当被阻止时,Worker MUST 检查点会发出具有所需分辨率的
work.blocked,并释放其执行槽。所有权 MAY 在有界阻止租约期间保留。 Coordinator 可以解决阻止者、授权提议的子工作或重新分配。未阻塞的工作返回到其每个 Group 就绪队列。
自动重试受到工作合同的尝试、退避、成本和截止日期预算的限制。外部尝试 MUST 使用 WorkItem 执行幂等密钥或确定性派生尝试密钥。耗尽或永久故障会发出
work.failed 和 Evidence。
11.5 Worker 和 Coordinator 失败
Section titled “11.5 Worker 和 Coordinator 失败”如果 Worker 错过了其开始截止日期或停止续订租约,则 Coordinator MAY 从具有更高所有权 Epoch 的最新检查点重新分配。存储旧所有者 MAY 的最新结果以供审核,但 MUST NOT 完成 WorkItem。
如果 Group 服务不可用,Worker MAY 将在有限的租用宽限期内继续已活动的可逆计算,并缓冲签名的进度和检查点。 MUST NOT 在没有当前有效的租约和功能令牌的情况下启动新的工作项或执行新的高风险、不可逆或外部可见的操作。它 MUST 在提交或进一步副作用之前重新连接进行协调。
每个缓冲的 Command MUST 都携带关键的
urn:missionweaveprotocol:extension:bounded-offline-execution
绑定。绑定记录了 Agent、Group、WorkItem、原始 Session
Epoch、所有权 Epoch、历史执行租约 ID、断开时间、缓冲时间、宽限期限、历史租约到期和六维资源使用增量。重新连接 Worker
MUST 保留该绑定,但使用 issuedAt、Session
Epoch 和 Membership 重新设置基准并重新签名 Command当前经过身份验证的会话的纪元。 Group
Authority
MUST 拒绝在历史租约/宽限窗口之外、租约关闭后、更改所有者或在绑定 WorkItem 会话之外缓冲的进度。
对账及其资源费用是一项权威交易。对于每个非零离线增量,Group Authority
MUST 附加一个 ext.missionweaveprotocol.core.resource_usage_recorded
Event,用于标识历史执行会话和协调会话,更新 WorkItem 并完成预算祖先,并且然后应用 Message 或检查点。预算溢出 MUST 拒绝收费和进度 Command,而不进行部分 Event 或状态更改。
13. 工件、Evidence 和上下文包
Section titled “13. 工件、Evidence 和上下文包”13.1 工件
Section titled “13.1 工件”Artifact 是不可变的并且内容寻址。二进制内容 MUST 存储在 Group Event 日志之外。其签名清单 MUST 包含内容哈希、媒体类型和架构、生产者 Agent 和 Agent Card 版本、Mission/Group/WorkItem ID、源 Artifact 哈希值、相关工具/模型/功能版本、创建时间、数据分类、大小和检索 URI。
派生工件形成出处图。实现 MUST 在检索 Artifact 时验证内容哈希,并且 MUST NOT 将可变 URI 视为内容身份。
13.2 基于 Evidence 的审核
Section titled “13.2 基于 Evidence 的审核”Worker 的完成声明是不够的。 WorkItem 提交 MUST 包括映射到验收标准的 Evidence。 Coordinator 审核 SHOULD,顺序为:
- 验证 Artifact 完整性和所需的输出模式;
- 运行确定性测试或可用的业务规则;
- 请求评审者 Agent 提供用于语义或定性标准的 Evidence;
- 评估组合后的 Evidence;以及
- 保留所有结果,以供最终的人类 Approval 使用。
Evidence MUST 记录主题、标准、方法、结果、生产者、时间戳和引用的工件。 Evidence 和决策记录 MUST NOT 包括私有思想链。
13.3 上下文包
Section titled “13.3 上下文包”Context Package 是一个签名的、版本化的、有范围的摘要,绝不是历史记录的权威替代品。它 MUST 标识 Mission 和 WorkItem 范围、源 Event 范围、Artifact 哈希、决策、约束、未解决的问题、生成器、时间和签名。当 Membership 允许时,Worker 可以检索引用的事件。更新包会创建新版本并保留先前版本的出处。
Group 内容 MUST NOT 默认进入另一个 Mission 的上下文。可重用知识必须明确发布为 Organization 批准的、分类的、带有出处的 Artifact。跨 Group 转发需要权限检查和可审核的 Event。全局调度程序可以检查调度元数据,但 MUST NOT 检查机密 Mission 内容。
16. 传送、重播和确认
Section titled “16. 传送、重播和确认”MissionWeaveProtocol 承诺至少一次 Event 交付。接收者 MUST 按 Event ID 进行重复数据删除,并且 MUST 按顺序处理每个 Group。它 MAY 缓冲了一个无序的 Event,但 MUST NOT 将其持久游标推进了一个间隙。
游标是由 Agent 持久处理的最高连续 Group 序列。 ACK
帧报告一个或多个游标。确认允许传送清理,但 MUST
NOT 删除权威 Group 历史记录。重连使用SUBSCRIBE.afterSequence;服务器重播该位置之后的事件,可能包括先前断开连接周围的重复事件。
如果旧游标在联机日志中不再可用,服务器将返回 CURSOR_TOO_OLD
和签名的快照引用。 Agent 恢复快照,验证其哈希/签名,并从快照序列恢复。
外部工具操作 MUST 使用从 Mission ID、WorkItem ID、所有权 Epoch 和逻辑操作 ID 派生的稳定幂等密钥。仅靠网络传递永远无法保证外部副作用的精确一次。