# R3.2 任务报告

## 结果

[AgentRun PR #308](https://github.com/pikasTech/agentrun/pull/308) 已增加正式 `POST /api/v1/queue/tasks/:id/retry`：

- retry 保持原 task identity、payload、session 和资源合同不变；
- 每次真实 retry 分配新的 attempt、run、command 和 runner Job identity；
- 同一 retry idempotency key 在状态检查前解析，重复请求返回同一结果；
- 只接受 Queue 已处于 `failed` 或 `blocked`，`completed`、`cancelled` 及其他状态 fail closed；
- `--dry-run` 执行与真实请求相同的服务端校验，但不修改 task/version，也不创建 attempt、run、command 或 runner Job；
- runner Job 创建失败会落到预留 attempt，允许使用同一 key 恢复；
- public dispatch 拒绝调用方注入 `runnerJobId`，只有服务端 retry 内部可以使用预留 identity；
- terminal run 上同 key、同 payload 的 command 重放返回原 command，不重复 event 或 Kafka outbox。

## 验证

case `00/21/22/35/78` 共 75 个命名测试通过；独立审查结论为 APPROVE。残余边界是 retry 不会主动刷新 Core：若 Queue 摘要尚未进入 `failed/blocked`，先通过正式 task/attempt 读取刷新权威状态，这一行为已写入长期参考，未引入隐式写入或第二状态投影。
