Skip to content

finding: record:alert 是唯一没接 #4075/#4077 行绑定的谓词面 —— 裸 { record } 作用域下 row-action 简写与 data.* 拼法 unbound,fail-soft 使作者门控的横幅永远显示 #4807

Description

@yinlianghui

发现来源

#3941(PR #4803)实施时 dev 回传,PM 查重后立卡(关键词/符号名检索零重复)。

事实(dev 实读 + probe,基线 8a9dece)

  • packages/plugin-detail/src/renderers/record-alert.tsx:141useCondition(predicateInput, { record }) —— 裸 root-only 作用域;
  • 四个通用 action 渲染器(action-button/menu/group/icon)与 app-shell 的 DeclaredActionsBar 都走 usePredicateRecordContext(record)(spread + record + data 三拼法);
  • 后果:record:alert 横幅上 canonical 的 record.status 拼法可解析,但 row-action 简写(status == 'x')与 legacy data.* 拼法抛 unbound-identifier fault —— 而该调用点是 fail-soft,fault 落成 SHOWN:作者写了门控的横幅永远可见(console 有报错,UI 上不可见的失效);
  • 渲染器自己的头注释(record-alert.tsx:32-37)声称与「every ActionButton / ActionBar」同一作用域求值 —— 对行绑定不成立,注释失真。

#4075 家族的关系(为何不直接修)

采用共享 helper 是生产行为变更,且拼法口径(简写/data.* 的存废)正是 #4075 step 3 挂在决策箱的契约题(visible/disabled 两契约)。PR #4803 的新钉子刻意只钉 canonical record. 拼法、对简写零断言 —— 不预决该裁定。本卡排程应 sequencing:#4075 step 3 裁定后,届时修法大概率是一行换 usePredicateRecordContext + 注释改真 + 按裁定补简写钉。

参考

observation-class,未认领。

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