实现 ADR-0130(docs/adr/0130-release-artifact-as-co-ownership-boundary.md)D4,epic #14122 实现面第 1 行——本卡是全链的先行卡,行 2/3/4 均依赖它。
要求(单源在 ADR-0130 D4,此处只列判据)
ObjectStackDefinitionSchema(packages/spec/src/stack.zod.ts:240 一带)新增可选packages: [...] 键;manifest(单数)保留。- 读取语义:有
packages 则遍历;无则把 manifest 当单元素列表——schema 形状本身就是兼容机制,⛔ 不是替换。 - 分段加载键位结构性预留:
packages[] 元素恒为对象,永不是拍平内联的 manifest 体——未来 {ref, integrity} 外部分段是加键不是改形。⛔ 不实现分段本体(ADR-0130 Non-goals)。 - 前向兼容走既有
manifest.engines.protocol(ADR-0025),⛔ 不引入新版本协商机制。 os compile/os build 写出侧(packages/cli/src/commands/compile.ts:271 解析、:596 写出)对齐 schema;编译产物默认行为不变(单包工程照旧写 manifest)。
Clause-②
packages/spec/src/** 命中路径肢;公共面扩宽(新增可选键)属实 ⇒ 自报 yes,挂 needs:contract-review,PR 恒 draft 待复审。
验收
- 存量单
manifest 产物 parse 结果逐位不变; - 新增键为可选,现有产物与调用方零改动通过全部既有测试;
- 换档:minor(扩宽零收窄,无 BREAKING 横幅)。
实现 ADR-0130(
docs/adr/0130-release-artifact-as-co-ownership-boundary.md)D4,epic #14122 实现面第 1 行——本卡是全链的先行卡,行 2/3/4 均依赖它。要求(单源在 ADR-0130 D4,此处只列判据)
ObjectStackDefinitionSchema(packages/spec/src/stack.zod.ts:240一带)新增可选packages: [...]键;manifest(单数)保留。packages则遍历;无则把manifest当单元素列表——schema 形状本身就是兼容机制,⛔ 不是替换。packages[]元素恒为对象,永不是拍平内联的 manifest 体——未来{ref, integrity}外部分段是加键不是改形。⛔ 不实现分段本体(ADR-0130 Non-goals)。manifest.engines.protocol(ADR-0025),⛔ 不引入新版本协商机制。os compile/os build写出侧(packages/cli/src/commands/compile.ts:271解析、:596写出)对齐 schema;编译产物默认行为不变(单包工程照旧写manifest)。Clause-②
packages/spec/src/**命中路径肢;公共面扩宽(新增可选键)属实 ⇒ 自报 yes,挂needs:contract-review,PR 恒 draft 待复审。验收
manifest产物 parse 结果逐位不变;