Skip to content

[候选工作单元(WorkCell)D5] 工作流支持动作的发布、降低与并发语义 #186

Description

@TablewareBox

独立设计文档(审阅中):候选工作单元(WorkCell)组合定义、启动与分层动作设计
变更审阅:PR #188

父地图:#181

Outcome

冻结内部工作流(Workflow)如何显式发布成候选工作单元(WorkCell)的公共动作(Action),以及该调用如何在任务创建前降低到唯一工作流任务(WorkflowTask)与执行计划(ExecutionPlan),不产生第二套调度权威。

已接受决策(Accepted Decisions)

  • D5-01=A′:作者保留 cell.expose_workflow_action(id=..., workflow=...) 显式语法;不引入候选 implementation.kind。持久投影复用既有/已冻结的 type="workflow"node_type="workflow"schema.x-unilabos-workflow-contract、模板/Handle 身份和候选工作单元(WorkCell)公共导出映射。工作流引用必须固定 PackageCatalog exact revision/digest,公共动作身份由候选工作单元定义(WorkCell Definition)fqid 与稳定 action_id 共同确定。
  • D5-02=A:候选工作单元(WorkCell)范围动作只由显式导出声明产生,不按节点数、设备数或函数名推断;单设备工作流仍保持工作流(Workflow)身份。
  • D5-03=A:复用工作流输入合同(WorkflowInputContract)、工作流结果记录(WorkflowResultRecord)、真实 Handle、物料占位符(ResourceSlot)与既有 SiteSelector;不新增候选工作单元(WorkCell)专属 entry/exit Site 模型,也不从名称、顺序、pose 或库位占用(SiteOccupancy)推断。
  • D5-04=A:复用 [跨仓决策 C1] 冻结 Composite Workflow Invocation authoring contract #178 组合工作流调用(CompositeWorkflowInvocation)、真实边界句柄、UUIDv5、既有边界映射和物料占位符(ResourceSlot)合同;不新增候选工作单元(WorkCell)专属节点/句柄家族。
  • D5-05=A:父已应用工作流图(Applied Workflow Graph)保存 pinned 展开内部图;工作流任务(WorkflowTask)提交时由唯一执行计划构建器(ExecutionPlan Builder)降低为普通计划节点和工作流节点作业尝试(WorkflowNodeJobAttempt);不创建宏作业、合成屏障、嵌套任务或第二调度权威。
  • D5-06=B:不同调用同一候选工作单元实例(WorkCell Instance)时,内部作业可以交错;v1 不提供整次调用串行、容量 N、max_concurrency 或整次调用数量上限。
  • D5-07=A:取消、部分物理成功、执行未知、投递重放(DeliveryReplay)和物理结算(PhysicalSettlement)复用既有安全合同;不回滚已发生物理结果、不重跑整次候选工作单元动作,作业执行占用(JobExecutionClaim)在对应作业完成物理结算后释放。
  • D5-08=C:不新增调用级 mutex、semaphore、表或持久许可;每个普通内部作业都必须在派发前原子取得完整、持久、带栅栏的作业执行占用(JobExecutionClaim),覆盖具体执行设备、可能改变的全部物料(Material)和源/目标库位(Site)。

并发安全边界

容量方案 B 不代表“无条件安全并发”。逐作业执行占用(JobExecutionClaim)只保护已经完整建模的物理资源:

  • 如果候选工作单元(WorkCell)还有共用门、轨道、安全区、机箱空间或其他未建模风险,该定义不得宣称并发安全;
  • 必须先把该风险建模为可参与完整占用集合的具体资源,或另开版本化协议;
  • 任一作业不能完整解析其设备、物料(Material)和源/目标库位(Site)占用意图时失败关闭;
  • v1 不存在可被误读为“同时最多 N 次调用”的持久事实或隐含保证。

实现证据

Acceptance gates

  • 目录复用既有字段且保留工作流(Workflow)身份,不冒充直接设备动作;
  • 任务提交后只有一个不可变执行计划(ExecutionPlan)和一个调度器(Scheduler)权威;
  • 失败、取消和执行未知不触发盲目物理重放(Blind Physical Replay);
  • 折叠展示不删除内部作业、占用、回执(Receipt)或源码证据;
  • 两个调用的内部作业可以交错,但每个作业必须先取得完整作业执行占用(JobExecutionClaim);
  • v1 不实现或暗示整次调用串行、容量 N、max_concurrency 或调用期持久许可;
  • 未建模共用物理风险在发布或并发安全校验时失败关闭。

状态

D5-01~08 协议已全部冻结;实现与测试尚未开始,本票保持 stage:protocol-definition,待建立 repository-local 交付子票后进入实现阶段。

关联

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature:workcell-compositionWorkCell 组合定义、注册编译、可见性与 Action 发布ready-for-humanRequires human implementationstage:protocol-definitionDefining or freezing the OKF protocolwayfinder:grilling需要与人逐题确认的 Wayfinder 决策票

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions