Skip to content

finding: packages/formula 一包两话 —— SCOPE_ROOTS 不含 current_user 而 introspectScope 宣告它;字段级 visibleWhen 的 lint 拒绝还附错误修法「Write record.current_user」 #6290

Description

@qq9340100

#6146 的 2026-08-07 12:10Z 构建期实测评论拆出(该评论出自 #6128 / PR #6248 的根集合定标工作)。#6146 已按方向 1(文档收窄)派发,本卡记录的是不在该单范围的独立缺陷面,立此存档交分诊定级。

事实(引自该实测,待接手者对 origin/main 复核)

  1. 同包自相矛盾:packages/formula/src/cel-engine.tsSCOPE_ROOTS 列了 user 但没有 current_user;而同包 validate.tsintrospectScope 对外宣告的 roots 包含 current_user,checkRoleCatalog 的四条正则也全按 current_user 写。一边宣告合法根,一边把它判成裸引用。
  2. lint 的修法提示是错的:字段级 visibleWhencurrent_user 会被 validateStackExpressions 拒收,错误消息教作者「Write record.current_user」—— 该写法在任何一层都不是绑定,会把作者推向更坏的形状。
  3. 覆盖差一层: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),记录不认领,交分诊座位定级路由。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions