当前交付把 PKG-002 的声明校验接到平台启动、服务端 API、后台执行资格和门户。连接器CLI/client门禁也已另行完成并验证,详见文末链接。控制范围限于所列运行入口;真实外部服务探测、独立证据服务和隐私执行产品不会因此变为可用。
选择与启动
未指定 -product-config 时保留原有平台行为。显式组合只用于 serve;init 等管理命令不接受该声明。仅指定 -product-catalog 而没有部署声明会拒绝启动。
先以 datanous-package validate -catalog profiles/product-packages.json -config profiles/deployment-ingestion-governance.example.json 校验声明。样例只含合成部署声明,不含密钥。校验通过表示目录与声明一致,不表示 PostgreSQL、连接器或外部服务已连通。SCIM 模块必须同时选择并配置 OIDC,不能把 SCIM 当作独立身份入口。
候选构建方式:
go build -o .runtime/pkg003-platform-candidate ./cmd/platform
go build -o .runtime/pkg002-datanous-package ./cmd/datanous-package
启动候选平台时,在已有隔离测试启动命令后添加:
-product-config profiles/deployment-ingestion-governance.example.json
-product-catalog profiles/product-packages.json
以上是候选版本接线,不是运行中 8090 的升级指令。必须使用新建隔离测试库、专属私有密钥目录、空闲非 8090 端口和私有前端产物;不能直接拿旧 bin/platform、实际数据库或运行密钥试验。此次验证没有替换运行中二进制或 web/dist。
预检发生在读取数据库配置文件、打开数据库和加载密钥之前。错误只返回固定诊断码,不回显声明路径、密码或内部端点:
| 诊断码 | 含义 |
|---|---|
product_config_serve_only | 非 serve 命令传入组合声明 |
product_config_required | 仅给出产品目录,没有部署声明 |
product_config_invalid | 声明、目录、依赖或可用性检查失败 |
product_startup_feature_disabled | 未选模块却启用相应运行配置 |
未选择 ingestion-governance 时,-ingestion-scheduler 拒绝启动;未选择 OIDC、SCIM、EVM 时,相应配置参数或环境配置也拒绝启动。目录中规划中的模块不能靠声明自报服务可用而绕过预检。
服务端边界
组合信息是实例级选择,不替代企业隔离、角色权限、签名、CSRF 或现有租约检查。选择一个模块不会给当前人员增加权限。
- shared-core 保留身份、人员与空间治理、审计证据、监控及接入状态。
- ingestion-governance 控制目录、资产、数据源、文件授权、加工、分类分级、发布审核、调度与增量、连接器管理及对应 agent 资产任务入口。
- collaboration 控制合约、计算任务、结果交付、策略模板与对应 agent 任务入口。
- identity-oidc、identity-scim、evm-commitment 分别控制其入口;真实外部节点接口仍不属于本次可用组合。
明确组合模式采用方法和完整路径表,未知 API、未选模块和异常路径返回 403 product_module_disabled,在身份/agent 分派和数据库业务处理前结束。工作区在查询前投影关闭模块的列表;能力页不查询未选 EVM 的链表。agent 协商按模块收窄能力,任务服务入口也检查资格,不能仅靠菜单隐藏实现门禁。
后台 Sweep 分开维护采集和协作任务。关闭模块时,对该模块已有任务暂停相关维护,不伪造取消或完成;重新选择模块后,继续受原有租约和代际围栏约束。链 worker、链检查点以及采集准备、批执行、调度入口均有内部禁用保护。
门户行为
登录及 /api/me 返回不含配置秘密的 productComposition:版本为 1,模式为 legacy 或 explicit,后者列出已启用模块。任何已认证角色读取相同实例模块信息,但菜单仍受原有角色权限限制。
门户以这份信息同步处理导航、默认页、刷新请求、治理页签、数据源范围操作和弹窗:
- evidence/core 组合不请求产品、合约、任务列表,也不展示目录、资产、连接器和协作入口。
- ingestion-governance 组合保留目录、资产和连接器,不展示申请合约、策略模板或未启用的链页签。
- 当前页面或跨页入口不再可用时,回到角色可访问的页面;未启用模块的操作弹窗不渲染。
- 老后端完全没有该字段时保留 legacy 兼容。字段存在但版本未知、结构错误、模块重复/未知时明确显示错误并清空业务会话视图,不能自动全开。
- 登录与轮询共用会话代际守卫;组合 ref 在刷新请求前同步更新。上一账号的成功、错误或畸形响应不能覆盖新账号的组合。
有界验证与证据
后端最终定向 race 记录为 .runtime/pkg003-gate-final.log,覆盖产品声明/CLI、启动预检、完整路由表及早拒绝。静态源码扫描覆盖 82 个完整 API 路径字面量;动态路径按已登记方法和段模板检查,不宣称覆盖所有业务权限排列。
父任务的隔离 PostgreSQL 验证记录:
.runtime/pkg003-projection-platform-replay.jsonl:3 项组合投影/服务资格/Sweep 测试,以及 3 项既有资产、发布清单和租约回归通过。.runtime/pkg003-disabled-chain-projection.jsonl:实际暂时重命名本测试 schema 的链表,禁用链能力仍能返回,证明不会访问禁用模块链表。.runtime/pkg003-worker-admission-final.jsonl:未选采集模块时,准备、批执行和调度在 nil 数据库前拒绝。.runtime/pkg003-session-composition.jsonl:真实合成登录与 me 返回一致的组合信息。
门户定向测试 .runtime/pkg003-portal-tests.log 共 15 项通过(8 项组合测试、7 项既有会话代际测试),类型检查通过,私有前端构建目录 .runtime/pkg003-portal-web-dist。新增已知依赖检查初次出现 TypeScript 闭包类型收窄错误,已修复并保留 .runtime/pkg003-portal-typecheck-dependency-initial.log;最终检查成功。
独立并行任务已完成 ingestion/evidence 两套私有 schema 的管理员浏览器烟测,结果在 .runtime/pkg003-ui-smoke-result.json,日志在 .runtime/pkg003-ui-smoke.log。两个场景均验证默认页、菜单、治理页签、数据源范围按钮、品牌导航回退和一次自动刷新;登录后没有未选模块请求。evidence 的工作区隐藏了 fixture 中确实存在的连接器,返回数量为 0。预登录 OIDC 状态正常返回 200/false,登录动作仍按身份模块门禁。四张最终截图以 .runtime/pkg003-ui- 开头。fixture、专属 schema 和临时凭据已清理。本轮只覆盖这两个组合的核心管理员操作,不扩展为全角色或全业务流程验收。
首轮编译曾发现 Products 字段与已有方法同名,修复为 Composition,原失败日志保留。最终证据使用修复后的源码,不隐去这次失败,也不重复运行全平台漫长测试。
连接器补充:cmd/connector现已支持显式组合启动预检、协作能力/领取/执行限制,以及上传监听与处理双门禁,见连接器记录。这是运行入口控制,不是商业许可校验,也不隔离所有独立CLI和公开纯函数。