Repository navigation
[spec] api 补进 DEFAULT_METADATA_TYPE_REGISTRY 与 BUILTIN_METADATA_TYPE_SCHEMAS(#5206 第 1 步,拆单) #5271
Description
Activity
- addedbugSomething isn't workingSomething isn't working
on Aug 4, 2026 认领:PM 循环第 2 批(spec 车道,维护者已核准 batch:5;本单列 A2 —— #5206 contract-first 第 1 步,engine 半边 PR #5279 在等)
会话:session_01ErbEDVAg1No9gdg1pgDAGB
分支:claude/issue-5271-api-metadata-type-registry
Worktree:objectstack-issue-5271
域:domain:spec
文件面:packages/spec/src/kernel/metadata-plugin.zod.ts(DEFAULT_METADATA_TYPE_REGISTRY)、packages/spec/src/kernel/metadata-type-schemas.ts(BUILTIN_METADATA_TYPE_SCHEMAS)、配套测试、spec 生成基线(与同批 #5021/#5015/#4938/#5235 在生成物上重叠,落地时按 os-regen 四步互保)、.changeset/*.md执行注记:旗标语义按 E7/ADR-0121 + #5086(PR #5263)code-only 门定;证据闸照单执行 —— 仓内可及的存量
api行(examples/fixtures/E8 showcase 端点)全量试 parse,干净直落,有脏行停下带清单回报。
Generated by Claude Code
- added a commit that references this issue
on Aug 4, 2026 验收:ACCEPT(PM 复核毕,PR #5312,返工 1 轮通过)
复核依据(GitHub 实据 + 返工报告):
- 首轮交付:
api补进枚举 + 双注册表 + 保护信封,旗标语义三证据裁定(code-only 被否:会让api不在 metadata 类型注册表里 —— Studio 直写路径完全不校验端点,publishPackageDrafts 也没有 E7 门 #5206 第 2 步无 draft 可门);证据闸 4 条存量全绿、线上不可扫的边界如实声明并给运维处方;收紧尝试被 10 红实测否掉归STILL_STRIP并立ApiEndpointSchema无法对未知键收紧 —— 同一个 schema 既解析作者声明又解析存量行(行上带packageId/state) #5309;fixture 三分逐条裁定;反向验证含特意预测的「空产出假绿」记录; - 返工 1 轮(三项)全部落地:(1) liveness 走路线 1 —— GOVERNED + 播种
liveness/api.json,27 键分类(live 25 / planned 2 / dead 0),每键 file:line 按消费层引证,E 系列窗口如期兑现;transform判planned的理由成立(已被响亮拒绝的键不是 enforce-or-remove 候选);(2)check:docs—— 纠正了派发简报「同步已修」的误判(gen:docs是独立生成链),三份文档重生成且 delta 纯属本单;(3) publish 门测试适配已随同步落地(388 全过,门测门、写入门测写入门); - 三个衍生单(
ApiEndpointSchema无法对未知键收紧 —— 同一个 schema 既解析作者声明又解析存量行(行上带packageId/state) #5309/ApiEndpointSchema.path的.describe()举的例子会被 ADR-0121 D1 当场拒绝 —— 而这段文案正是 Studio 端点表单显示给作者的提示 #5310/saveMetaItem的 direct-active 写入是api的第三条门外通路 —— 命名空间门(ADR-0121 D1/D2)与去重门在这条路上无人跑 #5311)已验证存在并入队/持有;两条过程注记(dist 前置、双生成链)有沉淀价值。
后续:PR #5312 进落地链尾部,新头 CI 全绿后按串行接力入队。#5206 第 1 步就此完成,engine 半边 PR #5279 解除等待。
Generated by Claude Code
- 首轮交付:
- added a commit that references this issue
on Aug 4, 2026 - added a commit that references this issue
on Aug 5, 2026 - added a commit that references this issue
on Aug 8, 2026 - added a commit that references this issue
on Aug 17, 2026
Part of #5206(按跨域拆单规则移交 spec 车道;第 2 步 publishPackageDrafts 门由 engine 车道在父单执行,两步互不依赖)。
要做什么(#5206 第 1 步原文范围)
packages/spec/src/kernel/metadata-plugin.zod.ts的DEFAULT_METADATA_TYPE_REGISTRY补{ type: 'api', … }条目(旗标取值需按 E7/ADR-0121 语义定:runtime 直写是否允许 —— 参照 metadata: allowRuntimeCreate:false is not enforced — PUT /meta creates job and agent items the registry declares code-only #5086 刚落地的 code-only 门语义);packages/spec/src/kernel/metadata-type-schemas.ts的BUILTIN_METADATA_TYPE_SCHEMAS补api: ApiEndpointSchema;saveMetaItem既有 422 路径自动生效,getMetaTypes()可枚举、Studio 表单可渲染 —— 一处修,两面得。给此前不校验的类型接上 schema,会让越界存量行在下次写入时被 422 拒绝。实现时先扫存量(sys_metadata 中的
api行按ApiEndpointSchema全量试 parse):干净则无语义抉择直接落;有脏行则停下带清单回报(是否宽限/迁移是维护者裁决)。关联
#5206(父单,含全部代码证据)、#5189/PR #5203(装载期兜底与门函数导出,已合)、#5086/PR #5263(saveMetaItem 的 code-only 门,已合 —— 注意与其 hoist 出的授权块协同)、ADR-0121。
由 engine/services 车道 PM 拆单移交(会话
session_01Pbu27iNUfQCHeuS551Rqo7);labeling ≠ claiming,spec 车道经队列标签接手。