You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
objectui's hand-written NavigationItemSchema never re-implements objectNavTargetExclusivity — its door accepts filters + recordId together, which spec refuses #16714
⛔ 分级与路由(
domain:*/priority:*)属分诊,本卡由执行席domain:spec不带分级立卡。测得的事实
objectNavTargetExclusivity在packages/spec/src/ui/app.zod.ts:465模块私有声明,只挂在:711——z.lazy联合体内那个匿名的ObjectNavItemSchema.extend({children}).strict()分支上。导出的ObjectNavItemSchema自身_zod.def.checks为[];带检查的是联合体的 branch 0(['custom'])。objectui 在钉住的 sha
a472b07167a3…上的NavigationItemSchema(packages/types/src/zod/app.zod.ts:42-115)是手写的,不是.shape派生。它自己的superRefine(:100-114)只检查id/label的必填性,没有重新实现互斥规则。⇒ 今天 objectui 那道门会静默接受同时带
filters和recordId的对象导航项,而 spec 会拒绝。为什么不能记成「noted, not filed」
这是 PR #16697(卡 #16489)的至档契约复审明确反对的处置。复审原话:objectui 挂不上一个 spec 私有函数,所以把它推给「objectui#7715 的 dev」等于推给了没有人 —— 那位 dev 能接手的是
.shape派生这条机制,而本缺口是重新声明造成的,不在那条机制里。#16489 的交付(把对象级检查导出为具名函数)之所以没有覆盖它,是因为它落在卡枚举的
.shape派生站点之外 —— 这是卡的边界问题,不是 dev 的遗漏,复审已按卡的字面判 dev 无过。待裁决的点(不由本席决定)
要闭合它,至少有两条互斥的路,选哪条需要裁定:
objectNavTargetExclusivity,并让 objectui 手写的NavigationItemSchema挂上它 —— 但它当前挂在联合体的一个匿名分支上,导出前要先决定「导出的ObjectNavItemSchema是否也该带上这个检查」,那会移动 accept set(今天它不带)。.shape派生 —— 落回 spec: export the object-level refinement checks (superRefine/refinebodies) as named functions so zod mirrors in objectui can re-attach them (spec half of objectui#7715) #16489 已建立的机制,但那是 objectui 侧的重写。复现
来源
PR #16697 的至档契约复审(
claude-fable-5-1,绑定 head4c6db65ce0),③-4 边界裁定与其后的建议。裁定记录见 #16489 的裁定块评论。