# Single React Diagnosis Agent Acceptance ## 结果 已接受。阶段 4 Committed OpenSpec 的 11 项任务全部完成,新链路仅通过内部 Java/test 入口运行,公开 Chat 未切换。 ## 验证 ### 静态验证 - 检查:新 `harness.agent` 包与 Prompt 搜索 `ThreadLocal|SessionContextHolder|while|SequentialAgent|SupervisorAgent|StateGraph|Planner|Composer|Verifier|raw_response`。 - 结果:通过,无匹配。 - 检查:`git diff --name-only` 限定 Controller、ChatService、AiOpsService。 - 结果:通过,无 diff。 - 检查:OpenSpec artifact status、cross-artifact、L2 interface impact、`.committed`、`.archive-ready`。 - 结果:通过。 ### 脚本验证 - 命令:`mvn -q -DskipTests compile` - 结果:通过。 - 命令:`mvn -q '-Dtest=HarnessToolInterceptorTest,DiagnosisAgentUseCaseTest' test` - 结果:通过,14 tests。 - 命令:`mvn -q '-Dtest=DiagnosisAgentUseCaseTest,HarnessToolInterceptorTest,DiagnosisHarnessCoreTest,ToolBoundaryTest,ToolAdapterTest,MysqlToolAdapterTest,CanonicalInvocationStoreTest,HarnessContractTest,RagToolContractTest,QueryLogsToolContractTest,MysqlToolContractTest' test` - 结果:通过。 - 命令:`openspec validate single-react-diagnosis-agent --strict` - 结果:通过。 - 命令:归档后 `openspec validate single-react-diagnosis-agent --type spec --strict` - 结果:通过;仓库级 `openspec validate --specs --strict` 另发现前序 `mysql-readonly-tool`、`rag-log-projections` 主规格仍使用旧 scenario 格式,本阶段不跨归档边界修改。 ### 浏览器/人工验证 - 不适用。本阶段无 UI、HTTP 或 SSE 行为变化。 ### 未验证 - 未启动 Maven 应用、外部模型、MySQL、Redis、Milvus 或日志服务;按 ISS-014 门禁统一留到阶段 7 live E2E。 - 未验证 provider 生产响应始终携带 Token Usage;缺失 Usage 时模型调用次数仍强制,实际 Token 只能在 provider 返回时记录。 ## 已完成范围 - 单一 Diagnosis ReactAgent、单 Prompt 和固定 Query/PreviousTurn 输入。 - 框架原生 tool loop、exact Tool Call ID 和三类 Harness adapter bridge。 - 模型/Token/Tool/上下文/Draft 预算与无自动 retry。 - 严格 DiagnosisDraft 输出和无证据停止规则。 - 显式 sessionId/runId audit metadata、可注入 AgentStep Hook、canonical Tool invocation。 - 公开 Chat/AiOps 与旧多 Agent 路径保持不变。 ## 已知限制 - Draft 尚未经过 EvidenceGuard/SemanticGuard,不能公开发布;阶段 5 负责释放门禁。 - previous turn 由调用方传入,阶段 6A 才实现同 Session 安全 Run 选择和确定性组装。 - 真实业务 adapter/Spring Bean 装配和公开入口切换分别留给阶段 6A/6B。 - 仓库级全规格 strict validation 仍受阶段 3B/3C 主规格 scenario 标题格式阻塞,建议阶段 7 文档清理时统一修正并复验。 ## Bug 修复和诊断 - 编译发现框架 `Interceptor.getName()` 必须实现,已补充稳定名称并回归。 - 首次测试修正了两个测试假设:callback 异常包装类型,以及 ToolResponseMessage 在 Prompt instructions 中的实际位置;生产规格与实现方向未变。 - 提交前自审发现默认 BeanOutputConverter schema 不允许 `conclusion=null`,与冻结的无证据契约冲突;已增加 schema post-process 和 focused regression,未放宽其他 Draft 字段。 ## 交接 - 下一步:提交独立阶段 4 commit,再进入阶段 5。 - OpenSpec 归档确认:用户已对 ISS-014 每阶段 Apply、Archive 和 Git commit 提供持续授权;已归档至 `openspec/changes/archive/2026-07-21-single-react-diagnosis-agent`,主规格已同步至 `openspec/specs/single-react-diagnosis-agent/spec.md`。