feat(addie): prove provider-neutral read-only tool loop - #6902
Conversation
|
CI status: all deterministic, security, build, Docker, and storyboard checks are green on the current head. The one storyboard retry was a transient |
There was a problem hiding this comment.
Ladon verdict: Approve
Approve — Server/Addie-only PR with no blocking or medium findings.
Scope: Adds a provider-neutral, retry-free read-only tool loop against a synthetic, production-isolated Gemini path. No static/schemas/source/**, docs/reference/**, dist/**, or package.json version surface touched — no changeset required and no protocol governance/breaking-class gate applies.
High-risk flag: true, but all matches under server/src/addie/** are (added) new files (scaffolding) or (modified) files with no medium-or-higher findings. Per the change-kind rules, new files and clean modifications on high-risk paths do not escalate on the flag alone.
Reviewer notes reviewed: the loop caps tool calls to one per iteration with MAX_ITERATIONS=2, caps handler output at 128KB, and collapses handler exceptions to a fixed string so provider/tool-id/exception text never leaks. The Google provider fails closed on missing thought signature / incompatible finish reason. The customTools false→true flip alters no live path (GoogleGenerateContentProvider has zero production instantiations). The unrun live Gemini dispatch is manual and key-gated, wired to nothing in production — acceptable, with a noted follow-up to run the canary before any production activation.
Decision table: no critical/high findings (row 1 n/a); gated_paths false (row 2 n/a); no deletions (row 3 n/a); no medium findings at all (rows 4/5/8 n/a); no prior decision (row 6 n/a); no no-auto-approve team match (row 7 n/a). Falls through to row 9 → approve.
Summary
pure_localread tool boundarysearch_docsandget_dochandlers with search telemetry disabledSafety boundary
Validation
No live Gemini call was run because this workspace does not have a Gemini API key. The runner remains manual and production-isolated.