Files
SuperBizAgent-java/devflow/projects/2026-07-21-single-react-harness-run-context/acceptance.md
T

46 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Acceptance: single-react-harness-run-context
## 实现结果
- 新增显式 `RunContext`、取消信号、deadline 检查、Run Lifecycle 和 first-terminal-wins。
- 新增 caller-supplied limits、线程安全 Model/Tool/Token/Run bytes 预算和容量 CAS。
- 新增 strict typed retry policies/executor,记录每个实际 attempt 并阻止取消/预算异常误重试。
- 新增无 Redis 依赖的 ToolCallKeyFactory,精确保留框架 Tool Call ID。
- Spring AI `spring.ai.retry.max-attempts` 设置为 1;未修改 provider/model routing。
- 未接入旧 Chat/AIOps/Controller、ThreadLocal、JPA、Redis、Agent 或公开协议。
## 静态验证
- `openspec validate single-react-harness-run-context --strict`:通过。
- 新 Harness 包 `rg`:无 ThreadLocal/current-holder/Redis 引用。
- 旧 Chat/AIOps/Controller/JPA 调用链 diff:为空。
- 受保护配置检查:仅新增 `spring.ai.retry.max-attempts: 1`,model routing/provider 保持不变。
## 脚本验证
- `mvn -q -DskipTests compile`:通过。
- Core focused suite:通过。
- 综合回归 suite(阶段 0/1 契约 + 阶段 2 Core + ChatController):通过。
## 浏览器/人工验证
- 不适用。本阶段没有 UI、Controller、SSE 或公开协议变化。
## 未验证
- 未执行真实模型调用、Redis、CLS、MySQL 或客户端断开 live E2E;这些属于后续 Tool store/adapter/最终 E2E 门禁。
- 未将 RunContext 接入旧 ChatService;这是本阶段明确非目标,阶段 6A 才接入。
- `RunContext` 取消对已进入的同步第三方调用仍是协作式;实际 HTTP/JDBC future 取消留给后续 adapter。
- Provider 侧凭据轮换状态不由仓库证明。
## 剩余风险与后续门禁
- 关闭 SDK 隐式 retry 会使旧路径瞬时错误不再自动重试,直到后续 Router/SemanticGuard 接入 Harness;该变化已记录并可通过恢复配置回滚。
- 下一阶段 3A 必须在 ToolInterceptor 接收 RunContext 和框架 Tool Call ID,直接复用 Key/Capacity/Cancellation 门禁。
## 状态
- Stage acceptance: accepted
- OpenSpec archive: archived at `openspec/changes/archive/2026-07-21-single-react-harness-run-context`
- Main spec sync: `openspec/specs/diagnosis-harness-run-context/spec.md`(8 added requirements)