lili 784c24e759 feat(ai): 补 Security Tool Grant 本地策略审批 facade(打通工具授权链) + 单测
缺口:SecurityToolGrantApprovalFacade 仅 Unavailable 兜底(恒拒 AI_TOOL_GRANT_NOT_APPROVED)→ admin 登记 Tool Grant 必败 → runtime 永查不到已批准 grant 投影(闭环陷阱:runtime 侧 ProjectionSecurityRuntimePermissionFacade 已就绪+测试,但唯一写投影入口被堵死)。

新增 LocalSecurityToolGrantApprovalFacade(@Primary 压过 Unavailable):以 Security owner 身份做策略式合规审批——校验 scope/egress 取值合法(取值集与 runtime 侧对齐,防越界 scope 落库)即批准、否则驳回。

诚实标注:approvedBy=security-policy-local、approvalId 带 security:local: 前缀(经 grant.action 透传 runtime envelope),明示单体内本地策略审批而非外部 Security 人工审批,绝不伪造外部批准;与 admin RBAC 门禁(muse:ai:tool-grant:adjust)叠加。刻意不做:grant/runtime 物理分包(独立 P2)、外部 Security RPC(P1R-4 推迟)。

验证:facade 单测 7/7(approved+越界/空refs/非法refType/开放出网无目标 驳回 + @Primary 装配选主断言);回归 service 6/6、runtime 15/15、controller 注解 2/2 全绿(共30);重建 muse-server jar 单体启动成功(20.4s,无 NoUniqueBeanDefinition/BeanCreationException)。admin curl 端到端被 RBAC 拦 403(鉴权层,facade 之前,预期安全边界)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 22:53:05 -07:00
2026-06-19 04:26:32 -07:00
Description
No description provided
36 MiB
Languages
Java 64.8%
TypeScript 17.2%
Vue 13.8%
HTML 1.5%
JavaScript 1.2%
Other 1.3%