## 1. Evidence Persistence Contract - [x] 1.1 Extend `ToolInvocationRecorder` with a richer evidence-recording path that can preserve retrieval-aware fields as well as common evidence fields. - [x] 1.2 Refactor `LookupKnowledgeTool` to persist `tool_invocation` rows through `ToolInvocationRecorder` instead of its own ad hoc row-construction path. - [x] 1.3 Align `QueryLogsTools` and `QueryMetricsTools` no-hit / failure payloads with the hardened evidence contract. ## 2. Verifier-Facing Summary Semantics - [x] 2.1 Harden `ToolTraceSummaryService` so failed, no-hit, and deduped evidence rows are summarized with stable no-evidence semantics. - [x] 2.2 Preserve merged-call counts for repeated hits, failures, and no-new-evidence rows without overstating evidence strength. ## 3. Chat Degraded Paths - [x] 3.1 Add focused `ChatService` tests for missing verifier output fallback to `LOW_CONFID`. - [x] 3.2 Add focused `ChatService` tests for invalid verifier JSON fallback to `LOW_CONFID`. - [x] 3.3 Add focused `ChatService` tests that `REJECT` output uses the degraded template and does not leak raw executor answer content. ## 4. Verification - [x] 4.1 Add focused offline tests for the recorder contract and `ToolTraceSummaryService`. - [x] 4.2 Run targeted test commands for the new/updated offline tests. - [x] 4.3 Run compile verification.