跨仓依赖矩阵
OceanWay 十四仓允许的契约、运行时与制品依赖,以及禁止的跨仓耦合
跨仓协作只允许三类边:版本化契约、受控运行时调用和不可变发布制品。Git 默认分支、本地相对路径、跨库 SQL 和复制的 DTO 都不是合法依赖。
依赖类型
| 类型 | 合法载体 | 版本要求 | 示例 |
|---|---|---|---|
| Contract | oceanway-contracts Package、OpenAPI、JSON Schema、事件 Schema | 固定版本或制品摘要 | Core 与 Gateway 共同使用 Attempt Contract |
| Runtime | HTTPS/内部 RPC/队列事件,带 Workload 身份与 Audience | 接口主版本固定 | API Edge 调用 Core Admission |
| Artifact | Image Digest、SBOM、签名、Migration Bundle、证据文件 | 不可变 Digest | Infrastructure 部署 Core 镜像 |
| Documentation | 固定 Release、Commit、ADR 与 Runbook 链接 | 链接到不可变来源 | Docs 引用 Contracts Release |
仓库依赖矩阵
| 仓库 | 允许依赖 | 主要输出 | 不允许依赖 |
|---|---|---|---|
| Site | Public Read API、公开目录契约 | 公共品牌 Surface | Customer Session、Core DB、Gateway |
| Developer Center | Public Catalog/Pricing/Docs Contract | 公开 Developer Surface | Credential 管理、客户调用日志 |
| Console | Customer BFF Contract、公开目录 | 客户控制体验 | Core/Gateway DB、Workforce Session |
| Studio | Product Contract、Asset/Run/Canvas 引用 | Studio 私有聚合与命令 | Developer 私有控制面、Provider Credential |
| Drama | Product/Asset/Run/Agent Contract | Drama 私有聚合 | 共享钱包或 Asset 第二事实源 |
| Commerce | Product/Asset/Run/MCP Contract | Commerce 私有聚合 | 共享钱包或 Channel Secret 第二事实源 |
| Admin | Workforce Query/Command Contract | BFF/UI 与 Host-only Session | Operations DB、客户 Session、直接改表 |
| Contracts | 无运行仓源码依赖 | 版本化 Schema 与生成制品 | 领域实现和环境 Secret |
| Core | Contracts、Gateway Service Contract | 共享领域事实、事件、私有 Query | 产品仓源码、Provider 私有协议 |
| API Edge | Public/Internal API Contract、Core Runtime | 公网协议终止与低敏 Observation | 业务持久化、Gateway、Provider |
| Text Gateway | Gateway Contract、Provider API | 文本执行与不可变 Evidence | 客户、售价、钱包、正式 Asset |
| Media Gateway | Gateway Contract、Provider API | 媒体执行与不可变 Evidence | 客户、售价、钱包、产品 Run |
| Docs | Contracts Release 与发布元数据 | 文档站与治理记录 | 运行数据库和客户数据 |
| Infrastructure | 各仓不可变发布制品 | 环境、网络、部署与证据 | 应用源码耦合、明文 Secret 入库 |
当前关键依赖
图中的 Infrastructure 箭头表示部署不可变制品,不表示 Infrastructure 成为应用代码依赖;Docs 箭头表示引用固定制品,不表示读取运行时数据库。
Contract 变更门禁
一次跨仓协议变更必须按下列顺序:
- Owner 在架构或 ADR 中说明语义与不变量。
- Contracts 增加新版本、Canonical Golden、JSON Schema 与负向夹具。
- 发布唯一制品,并证明 Registry 与 Release 内容一致。
- 生产者兼容新版本但不切换唯一 Writer。
- 消费者固定依赖并通过 Contract Test。
- Infrastructure 完成目标环境与身份授权。
- 在同一门禁切换生产者版本或流量。
- 观察完成后才下线旧版本。
严格对象增加字段同样可能是不兼容变化,不能因为字段是 Optional 就自动使用 minor 版本。
禁止边
- Surface、产品或 Admin 仓导入 Core 源码或直连 Core 数据库。
- Core 导入 Console、Studio、Drama、Commerce 或 Admin 源码。
- API Edge 或产品仓绕过 Core 调用 Text/Media Gateway。
- Gateway 读取客户、Wallet、Developer Access、产品 Run 或正式 Asset 表。
- 任一仓通过 Git submodule、本地父目录、分支 URL 或复制粘贴维持协议同步。
- Infrastructure 通过 SQL 修复业务事实,或保存可以直接使用的明文 Secret。
发现非法依赖时先停止新能力接入,明确 Owner 与迁移路径;不能用“临时兼容层”把第二事实源永久化。