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

40 lines
1.3 KiB
Markdown

# Case: `reassign-cancels-old-thread-and-dispatches-new-attempt`
## 用例意义
验证 `reassign` 会取消旧的阻塞线程,并为新 worker 创建新的尝试与线程。
## 前置条件
- 已创建运行 `run_blog_reassign_001`
- 已创建任务 `T1`
- `T1` 已通过严格 worktree 模式完成首次 `dispatch`
- `worker-a``claim` 首次尝试线程,并通过 `inbox update --status blocked` 写入问题
- 最近一次 `reconcile` 已执行,使任务进入 `blocked`
- 已知旧线程为 `OLD_THREAD_ID`
## 输入
```bash
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` 只接受 `blocked``failed` 任务
- `--to` 是必填参数;`--reason` 建议始终填写,便于审计和人工排障