裁决(2026-09-01,维护者,逐字) 立 ADR 起草卡派发
语境:总监席对 #14122 (hotlong,一物 N 包提案)的评估结论为「方案合理,建议接受;应当先写 ADR 再派实现」,维护者以上句批准进入 ADR 起草通道。终局接受/修订在 ADR draft PR 的人工合并上落定 ,本卡只产出 ADR 草案。
交付物 docs/adr/ 新增一篇 ADR(编号取现有最大号 +1,起草时以 ls docs/adr 实测为准),主题:发布物(release artifact)作为共同所有权边界 —— 编译按包、产物一个 JSON、物内保留 N 份 manifest、装载按依赖拓扑序注册 N 个包 。Status: Proposed。
必须涵盖(取向已裁,ADR 负责论证与留痕) Context :引 One artifact, N packages: let a release bundle carry co-owning packages so a product can be split into modules without renaming objects #14122 的实测证据(fork 税、Studio 平铺、token 预算无模块边界、CPQ 无可售单元),以及 §2 三条替代路的否决理由(module 标签 = 假模块无边界原语;独立命名空间 = rename-on-install,ADR-0048 明拒;composeStacks = 压平丢身份)。Decision 核心原则 :同一发布物内的包由同一发布者原子交付,物本身即共同所有权声明 ——安装闸判据从「同一包 id」修正为「同一物内共同所有者」;⛔ 不新增 manifest owner/publisher 字段(推迟至模块独立成物售卖时,与 ADR-0048 2026-08-08 addendum D2 对齐,记入 Non-goals)。对 ADR-0019 的边界记录 :消费者模型一根不动(装一个/开一个/卸一个,D1-D3 原样);发布物停在控制面 ,⛔ 永不成为消费者可浏览/安装/卸载的 suite(D3 苹果论证原样适用);D4「a set of namespaces」原文即容纳本案。按仓内惯例以交叉引用/addendum 记录,⛔ 不改写 0019 原文。对 ADR-0048 的闸变更记录 :命名空间独占今天顺带代理着「无两包同名对象」;放宽(§5.4)必须与安装时逐对象名唯一性检查 (§5.6)同批,且机器不可拆 ——同一 PR 落地 + 一条门测试断言「闸已放宽 ⇒ 唯一性检查存在且拒绝同名对象」。写入 Consequences 作机器判据。产物 schema 决策 :manifest 单数 → packages: [...],新增可选键、两种都读 (有 packages 遍历,无则把 manifest 当单元素列表);前向兼容走既有 manifest.engines.protocol;分段加载的键位在本 ADR 定稿时预留 (不必实现,但格式是最难回头改的决策,One artifact, N packages: let a release bundle carry co-owning packages so a product can be split into modules without renaming objects #14122 ④)。拓扑序为验收条件而非实现细节 :物内包注册必须按依赖拓扑序,复用 resolvePluginOrder (⛔ 不写第二排序机制);顺序错误静默失效(扩展不生效不报错),必须有测试钉住。一物一版 (One artifact, N packages: let a release bundle carry co-owning packages so a product can be split into modules without renaming objects #14122 ③ 已认):版本矩阵消失、扩展不悬空;代价(不能单独热修模块)如实写入;要单独售卖的模块独立成物。兼容性与验收 :存量单 manifest 产物经新装载路径注册结果逐位相同 (包记录、对象 FQN、_packageId、命名空间所有者集合)——写成测试的机器判据(One artifact, N packages: let a release bundle carry co-owning packages so a product can be split into modules without renaming objects #14122 §6.4),不靠 review 判断。Consequences 枚举后续实现面 (One artifact, N packages: let a release bundle carry co-owning packages so a product can be split into modules without renaming objects #14122 §5 表,含 objectui 侧 Studio 选择器另开),实现卡待 ADR 合并后按 ADR 派发,⛔ 本卡不写实现代码。起草纪律 关联
裁决(2026-09-01,维护者,逐字)
语境:总监席对 #14122(hotlong,一物 N 包提案)的评估结论为「方案合理,建议接受;应当先写 ADR 再派实现」,维护者以上句批准进入 ADR 起草通道。终局接受/修订在 ADR draft PR 的人工合并上落定,本卡只产出 ADR 草案。
交付物
docs/adr/新增一篇 ADR(编号取现有最大号 +1,起草时以ls docs/adr实测为准),主题:发布物(release artifact)作为共同所有权边界 —— 编译按包、产物一个 JSON、物内保留 N 份 manifest、装载按依赖拓扑序注册 N 个包。Status: Proposed。必须涵盖(取向已裁,ADR 负责论证与留痕)
manifest单数 →packages: [...],新增可选键、两种都读(有packages遍历,无则把manifest当单元素列表);前向兼容走既有manifest.engines.protocol;分段加载的键位在本 ADR 定稿时预留(不必实现,但格式是最难回头改的决策,One artifact, N packages: let a release bundle carry co-owning packages so a product can be split into modules without renaming objects #14122 ④)。resolvePluginOrder(⛔ 不写第二排序机制);顺序错误静默失效(扩展不生效不报错),必须有测试钉住。manifest产物经新装载路径注册结果逐位相同(包记录、对象 FQN、_packageId、命名空间所有者集合)——写成测试的机器判据(One artifact, N packages: let a release bundle carry co-owning packages so a product can be split into modules without renaming objects #14122 §6.4),不靠 review 判断。起草纪律
registry.ts:1456多所有者 Map、registry.ts:3582-3595命名空间闸——可直接引用。docs/adr/**是受管面:PR 恒 draft,终局为维护者直合或钉头批准入队;⛔ 不入队不转 ready。--test与 lint 门为准)。关联