从 #6146 的 2026-08-07 12:10Z 构建期实测评论拆出(该评论出自 #6128 / PR #6248 的根集合定标工作)。#6146 已按方向 1(文档收窄)派发,本卡记录的是不在该单范围的独立缺陷面,立此存档交分诊定级。
事实(引自该实测,待接手者对 origin/main 复核)
- 同包自相矛盾:
packages/formula/src/cel-engine.ts 的 SCOPE_ROOTS 列了 user 但没有 current_user;而同包 validate.ts 的 introspectScope 对外宣告的 roots 包含 current_user,checkRoleCatalog 的四条正则也全按 current_user 写。一边宣告合法根,一边把它判成裸引用。
- lint 的修法提示是错的:字段级
visibleWhen 写 current_user 会被 validateStackExpressions 拒收,错误消息教作者「Write record.current_user」—— 该写法在任何一层都不是绑定,会把作者推向更坏的形状。
- 覆盖差一层:
validate-expressions.ts 只遍历字段级 visibleWhen,不遍历 option 级 —— 而 option 级恰是 current_user 的合法面(ADR-0068 / objectui#2284)。合法用法(如 examples/app-showcase/.../cascading-select.object.ts:85)因此从未撞上这条 lint,矛盾至今无人触发。
与在飞单的边界
待分诊的裁决点
current_user 这个根在 formula 包的终态:SCOPE_ROOTS 收下它(一词之改,与 introspectScope/checkRoleCatalog 对齐),还是从宣告面退役它(introspectScope、checkRoleCatalog、field.zod.ts:136 option 级示例一起改)。前者与 ADR-0068 的 per-option 合法面一致,改动小;后者牵连合法用法,需维护者点头。无论哪侧,错误修法提示「Write record.current_user」都要删。
Filed unassigned by spec 车道 PM(session_011M7UwH25Unfi73UHim7ajY),记录不认领,交分诊座位定级路由。
从 #6146 的 2026-08-07 12:10Z 构建期实测评论拆出(该评论出自 #6128 / PR #6248 的根集合定标工作)。#6146 已按方向 1(文档收窄)派发,本卡记录的是不在该单范围的独立缺陷面,立此存档交分诊定级。
事实(引自该实测,待接手者对 origin/main 复核)
packages/formula/src/cel-engine.ts的SCOPE_ROOTS列了user但没有current_user;而同包validate.ts的introspectScope对外宣告的 roots 包含current_user,checkRoleCatalog的四条正则也全按current_user写。一边宣告合法根,一边把它判成裸引用。visibleWhen写current_user会被validateStackExpressions拒收,错误消息教作者「Writerecord.current_user」—— 该写法在任何一层都不是绑定,会把作者推向更坏的形状。validate-expressions.ts只遍历字段级visibleWhen,不遍历 option 级 —— 而 option 级恰是current_user的合法面(ADR-0068 / objectui#2284)。合法用法(如examples/app-showcase/.../cascading-select.object.ts:85)因此从未撞上这条 lint,矛盾至今无人触发。与在飞单的边界
visibleWhendescribe 宣称 runtime 表单绑定current_user,但字段级条件规则的求值面从未绑过它——按文档写的谓词必然 fault 并 fail-open #6146(在飞,方向 1):把字段级/section 级文档收窄回record(+previous/parent)。落地后「lint 拒绝字段级current_user」与文档一致,但本卡的三条(矛盾宣告、错误修法提示、option 级零覆盖)一条都不会被它修掉。current_user声明为合法根、不报它 —— 有意让本卡的裁决先行,新规则不替它先斩。待分诊的裁决点
current_user这个根在 formula 包的终态:SCOPE_ROOTS收下它(一词之改,与 introspectScope/checkRoleCatalog 对齐),还是从宣告面退役它(introspectScope、checkRoleCatalog、field.zod.ts:136 option 级示例一起改)。前者与 ADR-0068 的 per-option 合法面一致,改动小;后者牵连合法用法,需维护者点头。无论哪侧,错误修法提示「Write record.current_user」都要删。Filed unassigned by spec 车道 PM(
session_011M7UwH25Unfi73UHim7ajY),记录不认领,交分诊座位定级路由。