Files
ai-workflow-skill/docs/tests/orch/reassign/reassign-cancels-old-thread-and-dispatches-new-attempt.md
T

1.3 KiB

Case: reassign-cancels-old-thread-and-dispatches-new-attempt

用例意义

验证 reassign 会取消旧的阻塞线程,并为新 worker 创建新的尝试与线程。

前置条件

  • 已创建运行 run_blog_reassign_001
  • 已创建任务 T1
  • T1 已通过严格 worktree 模式完成首次 dispatch
  • worker-aclaim 首次尝试线程,并通过 inbox update --status blocked 写入问题
  • 最近一次 reconcile 已执行,使任务进入 blocked
  • 已知旧线程为 OLD_THREAD_ID

输入

orch --db TMPDIR/coord.db --json reassign --run run_blog_reassign_001 --task T1 --to worker-b --reason "Try another worker with clearer ownership."
inbox --db TMPDIR/coord.db --json show --thread OLD_THREAD_ID

预期输出

  • reassign 退出码为 0
  • reassign.data.attempt.assigned_to == "worker-b"
  • reassign.data.attempt.attempt_no == 2
  • reassign.data.attempt.thread_id != OLD_THREAD_ID
  • show.data.thread.status == "cancelled",指向旧线程

断言结论

  • reassign 不是简单修改 assigned_to 字段,而是显式终止旧尝试并派生新尝试
  • 旧线程被取消后,worker 侧不会继续在过期上下文上执行

补充约束

  • reassign 只接受 blockedfailed 任务
  • --to 是必填参数;--reason 建议始终填写,便于审计和人工排障