5.3 KiB
ADR-0297:AI 根实现的领域归属与公开 Subpath 稳定性
- 状态:Accepted
- 日期:2026-08-09
- 关联:D-05、D-06、D-17、D-85、D-87、D-213、D-257、ADR-0040、ADR-0042、ADR-0087、ADR-0276、ADR-0296
上下文
ADR-0296 建立根 source 行数棘轮后,@qinglong/ai 成为最大根实现债务:4 个根文件共 6,187 个审计行。其中 index.ts
只有 16 个审计行并只做公开聚合;modelInvocationMigration.ts、profileComposition.ts 与
localModelInvocationFeatureActivation.ts 分别承载 4,644、872、652 个可见代码行,实际职责已经稳定为 Migration、
Profile Composition 和 Feature Activation。三者继续放在 package root 会把领域实现伪装成入口,也会使 schema v4 的
rootSourceLineHardCap=6187 失去治理价值。
这三个领域没有新的部署、权限、依赖或版本生命周期,拆成 workspace package 会扩大路由设备的 importer/SBOM/构建拓扑。
现有公开消费者已经通过 @qinglong/ai/profile、@qinglong/ai/model-invocation-migration 和
@qinglong/ai/local-feature-activation 使用能力,物理输出路径不是公共契约。
强制 GitNexus 在移动前显示:LocalModelInvocationFeatureActivationRepository 为 CRITICAL(9 direct/27 total/4
process),assertLocalModelInvocationFeatureActive 为 HIGH(6/11/3 process),assertLocalModelInvocationFeatureReady
为 HIGH(2/6/1 process);Migration 文件整体为 MEDIUM(9 direct/19 total/0 process),Profile 文件和两个 bootstrap
入口均为 LOW。高风险来自既有本机 AI admission/completion 与 application bootstrap,不是本批新增流程。
决策
- 将三个根实现原样归入同 package 的 owning domain:
src/migration/modelInvocationMigration.tssrc/profile/profileComposition.tssrc/feature-activation/localModelInvocationFeatureActivation.ts
- 根目录只保留聚合公开导出的
index.ts,不增加兼容 facade 或 wrapper。package ledger 将 AI 的rootSourceFileHardCap从 4 降为 1、rootSourceLineHardCap从 6,187 降为 16;两个值以后只能继续下降或经独立 ADR 复审。 package.json#exports只更新内部disttarget,三个公开 package subpath、根 export symbol、错误 class identity、 migration ID/checksum/顺序与运行行为保持不变。- AI package tests 和 fixtures 改为通过 package self-reference 的公开 subpath 加载,禁止继续依赖旧的根
dist/*.js私有路径。 仓库根 live-contract/benchmark 脚本不是 workspace importer,继续显式加载受审嵌套dist路径,避免虚构 root dependency。 - 不新增 package、生产依赖、migration、数据库对象、connection、timer、watcher、listener、进程或部署单元。
被拒绝的方案
- 保留三个根 facade:根文件数和行数看似下降,但会制造无独立语义的 wrapper,继续让内部代码依赖虚假入口。
- 拆成三个 workspace package:没有独立制品或权限边界,只会增加低配设备安装、lock importer、SBOM 和发布成本。
- 同时拆分 4,644 行 Migration 语义:目录归位可以证明零行为变化;在同批重排 SQL step 会扩大 HIGH/CRITICAL 风险面。
- 继续让测试 require 私有 dist 路径:会把旧编译布局误当公共 API,使后续内部重构不可验证。
- 只提高 6,187 行 hard cap:冻结坏结构不等于治理;已有稳定领域边界时应降低棘轮。
接受条件
- AI 保持 62 个 source,root 只有 1 个
index.ts/16 审计行,nested 58→61;workspace package/source 总数不变。 - 三个公开 subpath 与根导出保持,AI package 及全部生产 consumer 通过 clean build/test。
- migration 定义、Feature Activation repository、Profile disabled/active/drain 行为均由原测试覆盖;旧私有根 dist 引用清零。
- 完整 packages/backend、四项架构审计和十档 artifact/RSS compatible;基础 Edge 不安装 AI。
- GitNexus 保持既有 269 条流程,detect_changes 不出现新增受影响产品流程。
接受证据
- package boundary schema v4 报告 AI 为 62 source、1 root/16 root lines/61 nested,workspace 仍为 19 package、768 source、
45 root、723 nested,
singleSourcePackages=[];7 项 boundary fixture 全部通过。 - AI 212 项为 209 pass/3 条 PostgreSQL 条件 skip;完整 19-package clean build/test 通过;backend 1,112 项为 1,110 pass/2 skip/0 fail。cluster dependency、package boundary、Edge import、local image 四项审计均 compatible。
- 十档 artifact/RSS 全部 compatible。基础 Edge 保持 3,635,004 bytes/332 files/48 loaded modules;AI-only Edge 为 5,022,545/396/49;最大 Standalone Application AI 为 6,123,597/491/104,低于 6 MiB/768 files 门。
- 强制 GitNexus 为 43,284 nodes/98,496 edges/1,695 clusters/269 flows。移动后 CRITICAL/HIGH 符号的 direct/total/process
计数与移动前一致;
bootstrapModelGatewayProfile仍为 LOW(1 direct/1 total/0 process)。detect_changesall/comparedevelop仍为 12 files/31 symbols 与 14/34,均 low/0 affected process。 - 本批没有修改 SQL、migration checksum、生产 dependency 或 Cluster 状态,不重复制造无关 PostgreSQL HA 物理证据; 相关根 live-contract 路径契约 8/8 通过。