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

2.2 KiB
Raw Blame History

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)