2.2 KiB
2.2 KiB
Acceptance: single-react-aci-tool-contracts
实现结果
- RAG Contract:最小 query Request、bounded document evidence Result。
- Log Contract:逻辑 Topic/Lookback Request、Mock provenance、Scope/Pattern/Event Result。
- MySQL Contract:逻辑 data source、参数化 SQL Request、bounded structured rows Result。
- 共享 Contract:snake_case Tool 名称、ACI 描述、不可变集合 helper,复用阶段 0 两套状态枚举。
- 旧 Tool、Chat/AIOps、Controller、持久化、数据源和公开协议未修改。
静态验证
openspec validate single-react-aci-tool-contracts --strict:通过。openspec instructions apply --change single-react-aci-tool-contracts --json:12/12 tasks complete。rg引用检查:新 contract 生产包未接入旧运行链路。- 受保护文件 diff scope:旧 Tool、Chat/AIOps、Controller、Repository、resources 均为空。
脚本验证
mvn -q -DskipTests compile:通过。mvn -q '-Dtest=RagToolContractTest,QueryLogsToolContractTest,MysqlToolContractTest' test:通过。mvn -q '-Dtest=HarnessContractTest,LookupKnowledgeToolTest,QueryLogsToolsTest' test:通过。
浏览器/人工验证
- 不适用。本阶段无 UI、Controller、SSE 或公开运行行为变化。
未验证
- 未执行 live LLM/Redis/CLS/MySQL E2E;本阶段没有接入这些运行路径,最终 live E2E 按 ISS-014 门禁留到阶段 7。
- 未验证 ToolInterceptor 的真实 ID 传播;阶段 2/3A 必须以
ToolCallRequest.getToolCallId()添加集成测试。 - 未验证真实日志 adapter 的
SourceKind扩展;本 Issue 首版明确只使用 Mock。 - Provider 侧旧凭据轮换仍需凭据所有者完成,仓库只能证明明文已移除。
剩余风险与后续门禁
- 新旧 Contract 短期并存,阶段 3B/3C 接入前不得声称旧 Tool 已符合新 ACI 输出。
- 下一阶段只能在本 change OpenSpec Archive 和 Git commit 完成后开始。
状态
- Stage acceptance: accepted
- OpenSpec archive: archived at
openspec/changes/archive/2026-07-21-single-react-aci-tool-contracts - Main spec sync:
openspec/specs/aci-evidence-tool-contracts/spec.md(7 added requirements)