// Package paneldecl 是 design/09-插件生态 §5 的「插件管理面板声明」在宿主侧的库: // 校验(validate)、清单目录(catalog)、when 求值、按角色过滤。 // // 职责边界(§5.2.1 B「插件管理器 = 唯一中枢」里的前三项): // // - 声明校验:闭集 + 形状 + 命名,逐条给出**可分类**的错误;非法声明绝不静默丢弃 // (口径见 Catalog.Register 与 PLG1-report.md)。 // - 清单目录:收集各插件显式声明的 adminPanels,编译期内置插件与热装条目进**同一张** // 目录;生命周期(install/enable/disable/uninstall)重算面板集合。 // - 按角色过滤 + when 求值:owner/admin/viewer 与「是否启用」决定下发给面板的快照。 // // 刻意**不做**的事(这一片是纯库,接线留给后续切片): // // - 不注册任何 HTTP 端点、不认识 gateway、不认识前端(§5.2.1 的「唯一契约面」 // GET /api/v1/admin/panels 由后续切片按契约先行登记进 Docs/api-client.md); // - 不读环境变量、不读文件、不读 config:when 的求值上下文由调用方(插件管理器) // 注入(见 Resolver)—— 单一事实来源,也让本包可以在没有宿主的情况下单测; // - 不执行动作、不落审计:本包只声明「动作名」,分发与审计在 §5.2.1 的后半段。 package paneldecl