Files
ai-safety-platform/docs/adr/ADR-010-run-resource-lifecycle.md
baozaotumao2025 14722be770 first commit
2026-07-18 21:00:26 +08:00

1.7 KiB

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} 只删除 cancelledcompletedcompleted_with_errorsfailed 终态,并同时删除逐条结果;非终态返回 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 仅接受 completedcompleted_with_errors:移除指定结果、保留其他检查点,并复用原 Run 的 profile 和自动仲裁设置。

边界

当前任务在单进程内调度并协作取消,部署命令固定为 uv run uvicorn app.main:app --workers 1,不得同时启动多个服务进程。需要多进程部署、立即中断网络请求或跨进程取消时,再引入数据库原子抢占或可取消任务队列;当前规模不增加该设施。