Files

2.2 KiB
Raw Permalink Blame History

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)