21 lines
1.7 KiB
Markdown
21 lines
1.7 KiB
Markdown
# ADR-010:测试运行资源与生命周期
|
|
|
|
## 状态
|
|
已接受
|
|
|
|
## 决策
|
|
|
|
- 能力探测是 `POST /runs` 创建的运行内部第一阶段,不再提供独立 `/capabilities/probe`。
|
|
- 完整探测结果随 Run 持久化;同一 Run 的恢复和重试复用该结果,探测失败不写缓存,新 Run 重新探测。
|
|
- `POST /runs` 创建,`GET /runs` 列表,`GET /runs/{run_id}` 查询,形成标准创建与读取接口。
|
|
- 运行参数和结果属于审计事实,禁止任意修改。`PATCH /runs/{run_id}` 只接受 `status=cancelled`,表示协作式取消。
|
|
- 取消不会强杀正在进行的一次上游 HTTP 请求;该请求结束后保存已有结果并停止后续样例,状态保持 `cancelled`。
|
|
- `DELETE /runs/{run_id}` 只删除 `cancelled`、`completed`、`completed_with_errors` 或 `failed` 终态,并同时删除逐条结果;非终态返回 409。
|
|
- `POST /runs/{run_id}/resume` 保留为明确的生命周期动作,不伪装成 CRUD 更新。
|
|
- `resume` 只补跑未落库样例,已有 error 也视为检查点;`completed_with_errors` 必须使用 `POST /runs/{run_id}/retry-errors`,后者移除 error 并只重新排队失败样例。
|
|
- `POST /runs/{run_id}/results/{execution_id}/retry` 仅接受 `completed` 或 `completed_with_errors`:移除指定结果、保留其他检查点,并复用原 Run 的 profile 和自动仲裁设置。
|
|
|
|
## 边界
|
|
|
|
当前任务在单进程内调度并协作取消,部署命令固定为 `uv run uvicorn app.main:app --workers 1`,不得同时启动多个服务进程。需要多进程部署、立即中断网络请求或跨进程取消时,再引入数据库原子抢占或可取消任务队列;当前规模不增加该设施。
|