1.5 KiB
1.5 KiB
Evidence: single-react-tool-invocation-store
文档与代码证据
- ISS-014 阶段 3A 明确要求统一 ToolBoundary、canonical invocation、PROJECTING/READY/ERROR、TTL/容量、ID/Run 所有权,且不实现 3B/3C projector。
- 阶段 2 已提供
RunContext、Run bytes capacity 和ToolCallKeyFactory,本阶段直接复用。 - 旧
ToolInvocationRecorder使用 JPA preview 和 ThreadLocal fallback;新 canonical record 独立保存完整 request/raw/agent,不修改旧 recorder/JPA。 - 既有
SessionConfiguration提供RedisTemplate<String,Object>JSON bean;RedisCanonicalInvocationStore是新 Harness 包唯一 Redis 引用。
Evidence-driven 结论
setIfAbsent确保同一runId+toolCallId不覆盖;读取不调用 expire;更新使用剩余 TTL。- canonical record transition 只允许 PROJECTING -> READY/ERROR;READY 只接受 FOUND/NO_EVIDENCE,ERROR 不可引用。
- ToolBoundary 在执行前校验 Run、ID、JSON、授权、只读和预算;raw 只在可信 store 保存,不返回 Agent。
- UTF-8 record/Agent limits 与 Run capacity 双门禁;raw oversize 跳过 projector,Agent oversize 不返回,均产生 RESULT_TOO_LARGE。
- Fake store/Redis mock tests 已覆盖 duplicate、cross-run、unauthorized、writable、execution/projection error、NO_EVIDENCE、TTL、raw/agent oversize。
工具限制
- 当前无
codebase-retrieval/LSP;使用rg、源码、Maven 编译、Mockito Redis API 和 in-memory fake 完成等价验证。