refactor(addie): split admin routing into bounded domains - #6950
Conversation
There was a problem hiding this comment.
Ladon verdict: Approve
Approve — Addie tool-set refactor with no blocking or medium findings.
This PR splits Addie's monolithic 66-tool admin set into seven bounded router-visible domains, stops the always-append of the full admin surface on every admin turn, and keeps the exact legacy union as a hidden compatibility shim (routerVisible: false) for already-created plans. The reviewer verified reachability is preserved: 56 tools land in the new domains, the remaining 10 (billing + outreach) stay reachable through existing router-visible sets (56+4+6=66), and no tool is orphaned to the hidden set. The routerVisible filter is applied consistently across getUnavailableSets, getValidToolSetNames, getToolSetDescriptionsForRouter, the reference/inventory generators, and snapshot reconciliation; live router output requesting the hidden admin set fail-closes at router.ts:855. Tests assert exact 66-tool preservation, the ≤12-tool domain bound, non-admin rejection, and the continuity shim.
This is an App/Addie-only PR (server/src/addie, scripts, docs/aao) — no protocol surface (static/schemas/source, docs/reference, dist) is touched, so the absence of a changeset is correct, not a gap.
high_risk is true only because modified files match server/src/addie/**, but the reviewer surfaced no medium-or-higher concerns on those modifications, so the flag is a look-closer signal that has been discharged. gated_paths is false. No no-auto-approve team match. No findings.
Decision table: rows 1–8 do not fire (no critical/high/medium findings, gated_paths false, no deletions, no medium on modified high-risk files, no prior escalation, no team gate, fewer than three mediums). Falls through to row 9 → approve.
Summary
This takes the bounded named-tool approach: there is no arbitrary tool-name dispatcher or new mutation path.
Measured exposure
Verification
npm run test:addie-toolsnpm run typecheckThe repository precommit wrapper reached its fixed 600-second limit while running the full server suite. A separate run identified only an unrelated unchanged storyboard E2E test hitting its own fixed 30-second timeout; CI is the authoritative full-suite gate.
Part of #6845