维护者 2026-08-07 拍板:客户元数据项目的 v17 升级做成「AI 一键升级」体验,时点放 v17 GA、不是 rc(rc 期间 RETIRED_*_BY_MAJOR[17] 登记集仍在增长,剧本要对冻结后的处方集写才一次到位)。方案三层,AI 骑在确定性转换之上、不替代它:
分层设计
- 机械层(底座,已存在):
os migrate meta --from 16 跑 D2 conversions(field-mapping-transform-removed、storage-service-list-retired、…),applyConversionsToStoredItem 对存量行 rehydration 重放。确定性、幂等、有测试钉着 —— AI 不碰这一层。
- 语义残余层(AI 的活):conversion 表达不了的意图选择 —— 例:被退役的
transform 键的真实需求要在「导入映射 transform」与「ETL 步骤」间按业务二选一;调用已退役 API 的自定义代码(D3 语义注册所指);客户项目内的散文/注释。指令集已在仓内现成:changeset 的 FROM→TO 表、retiredKey() 报错自带的处方、ADR-0087 登记、生成的 upgrade-guide —— 升级 skill 把它们作为输入。
- 验收层:元数据 typed + parse-gated,墓碑当场拒收错误形状并给处方;
validate 绿 + diff 报告 = 升级完成的机器判据。
交付形态
一个升级 skill/playbook(面向客户项目运行的 agent 剧本):输入 = 客户元数据项目;流程 = CLI migrate(机械层)→ AI 按 v17 登记集处理语义残余 → validate 绿 + 人类可读 diff 报告出门。
前置(重启条件)
关联
交分诊座位定级与归属车道(域标签由分诊补)。
维护者 2026-08-07 拍板:客户元数据项目的 v17 升级做成「AI 一键升级」体验,时点放 v17 GA、不是 rc(rc 期间
RETIRED_*_BY_MAJOR[17]登记集仍在增长,剧本要对冻结后的处方集写才一次到位)。方案三层,AI 骑在确定性转换之上、不替代它:分层设计
os migrate meta --from 16跑 D2 conversions(field-mapping-transform-removed、storage-service-list-retired、…),applyConversionsToStoredItem对存量行 rehydration 重放。确定性、幂等、有测试钉着 —— AI 不碰这一层。transform键的真实需求要在「导入映射 transform」与「ETL 步骤」间按业务二选一;调用已退役 API 的自定义代码(D3 语义注册所指);客户项目内的散文/注释。指令集已在仓内现成:changeset 的 FROM→TO 表、retiredKey()报错自带的处方、ADR-0087 登记、生成的 upgrade-guide —— 升级 skill 把它们作为输入。validate绿 + diff 报告 = 升级完成的机器判据。交付形态
一个升级 skill/playbook(面向客户项目运行的 agent 剧本):输入 = 客户元数据项目;流程 = CLI migrate(机械层)→ AI 按 v17 登记集处理语义残余 → validate 绿 + 人类可读 diff 报告出门。
前置(重启条件)
关联
IStorageService.list(prefix)—— 零消费方、双适配器语义分叉 (#5540) #5983(spec: 按 ADR-0049 摘除IStorageService.list(prefix)契约成员(零消费方,双适配器语义分叉 —— #5266 方案 2,维护者已批) #5540 storage list 退役,D3 首例)、PR refactor(spec)!: 按 ADR-0049 退役 FieldMapping.transform 与整个 FieldMappingTransform 联合 —— 五成员零执行者 (#5552) #6078(shared/mapping.zod.ts 的 javascript 变换 describe 推荐 dialect="js",而 ExpressionDialect 只有 cel/cron/template —— 照着写会被拒 #5552 退役,两张 v17 登记表首批条目)spec-property-retirement(退役侧的对偶:本单是消费侧)交分诊座位定级与归属车道(域标签由分诊补)。