越范围发现,记录于 #5271 实现期,不在该 PR 内修(该 PR 的文件面是注册表与 schema 绑定,改 .describe() 会动生成基线,而同批有四个 PR 正在动生成物)。
事实
packages/spec/src/api/endpoint.zod.ts:
path: z.string().regex(/^\//).describe('URL Path (e.g. /api/v1/customers)'),
举的例子是 /api/v1/customers。而 ADR-0121 D1 把声明路径收紧成了 运行前缀 + /apps/ + 命名空间 + 子路径,publish 门(namespaceGate)对任何落在 carve-out 之外的路径直接拒绝。也就是说:这个 schema 自己举的例子,publish 会拒。
为什么现在才要紧
#5271 之前 api 没有注册 schema,/meta/types 不为它出 JSON Schema,Studio 只能给一个 raw-JSON 文本框 —— 这段 .describe() 没有渲染面。#5271 之后它成为 metadata-admin 表单里那个字段的说明文字,也进入 objectstack.json 生成的 JSON Schema。于是一段会被拒绝的示例,变成了作者(很常是 AI 作者,ADR-0033)照抄的第一手提示。
ApiMappingSchema 那几个 .describe() 同理值得一并复核。
建议(不预判)
把示例换成 carve-out 形状,并说明命名空间段派生自 manifest.namespace(ADR-0121 D2)而非作者自由字段 —— 门函数的拒绝文案里已经有一份措辞可以复用,不需要新发明判据。
改动会移动 authorable-surface.json / json-schema.manifest.json,按 os-regen 四步整体重生成。
关联
#5271(出处)、ADR-0121 D1/D2、#5040 E7。
越范围发现,记录于 #5271 实现期,不在该 PR 内修(该 PR 的文件面是注册表与 schema 绑定,改
.describe()会动生成基线,而同批有四个 PR 正在动生成物)。事实
packages/spec/src/api/endpoint.zod.ts:举的例子是
/api/v1/customers。而 ADR-0121 D1 把声明路径收紧成了运行前缀 + /apps/ + 命名空间 + 子路径,publish 门(namespaceGate)对任何落在 carve-out 之外的路径直接拒绝。也就是说:这个 schema 自己举的例子,publish 会拒。为什么现在才要紧
#5271 之前
api没有注册 schema,/meta/types不为它出 JSON Schema,Studio 只能给一个 raw-JSON 文本框 —— 这段.describe()没有渲染面。#5271 之后它成为 metadata-admin 表单里那个字段的说明文字,也进入objectstack.json生成的 JSON Schema。于是一段会被拒绝的示例,变成了作者(很常是 AI 作者,ADR-0033)照抄的第一手提示。ApiMappingSchema那几个.describe()同理值得一并复核。建议(不预判)
把示例换成 carve-out 形状,并说明命名空间段派生自
manifest.namespace(ADR-0121 D2)而非作者自由字段 —— 门函数的拒绝文案里已经有一份措辞可以复用,不需要新发明判据。改动会移动
authorable-surface.json/json-schema.manifest.json,按 os-regen 四步整体重生成。关联
#5271(出处)、ADR-0121 D1/D2、#5040 E7。