并发冲突裁决:Stop 抢占、未决目标绑定与迟到本机回执落账不唤醒

并发冲突裁决:Stop 抢占、未决目标绑定与迟到本机回执落账不唤醒 由 Archify 生成的时序图。 点击停止 → stop(commandId, sourceRef) prepareStop(unresolved) → query 原提交拿回 rootRunId bindStopTarget(prepared) → sendStop(stopCommandId, rootRunId) lockRoot FOR UPDATE → 校验幂等键写入 cancel_intent convergeStoppedWorkInTx:全树开放载体置 status=cancelled 清空 lease_token + 置 run_checkpoints=cancelled(terminal) 返回 StopAck(accepted=true, status=cancelled) → acknowledgeStop 本机脚本刚跑完 → 提交迟到签名回执 (cont_01, receiptDigest) settleSkillReceiptInTx:写 domain_facts + messages(role=tool) 检测 root.cancel_intent != null (canActivate=false) → 返回 held 200 确认回执已结算 → LocalEffectStore 置 acknowledged 阶段 1:Desktop Stop 命令持久化、未决提交查询与冻结目标绑定 阶段 2:Root 行锁写入 cancel_intent 与全树载体收敛取消 阶段 3:本机脚本迟到回执到达——事实与消息落账,但严禁撤销 Stop Renderer UI · Stop Intent · 时序参与者 Renderer UI Stop Intent WorkDelivery · Stop Store · 时序参与者 WorkDelivery Stop Store LocalExecutor · Late Receipt · 时序参与者 LocalExecutor Late Receipt Work Control API · Stop & Receipt · 时序参与者 Work Control API Stop & Receipt PG Root & Carriers · cancel_intent SoT · 时序参与者 PG Root & Carriers cancel_intent SoT Runtime Worker · Lease Fence · 时序参与者 Runtime Worker Lease Fence 图例 请求 返回 安全

Stop 绝不伪造目标

  • • prepareStop 先落盘 unresolved,再查询原提交获取 rootRunId
  • • bindStopTarget 仅绑定一次,绝不重发不确定 Stop(仅 queryStop)
  • • 窗口关闭、切号或进程退出绝不隐式触发业务 Stop

Root 行锁下全树收敛

  • • requestRuntimeWorkStopInTx 先锁 Root 写入 cancel_intent 幂等证据
  • • convergeStoppedWorkInTx 锁全树成员并置 status=cancelled
  • • 同步关闭未认领的 conversation_interaction_resume_commands

迟到回执落账但绝不复活

  • • 迟到本机回执仍通过 7 表 Join 校验并写入 domain_facts 与 tool 消息
  • • continuation_requests 正常置 completed 释放桌面重传队列
  • • canActivate 因 cancel_intent!=null 为 false,返回 held 保持 cancelled