Skip to content

ADR-0087 里另外两处「松散键抬进声明块」的 lift 仍是无条件遮蔽 —— #4923 的按值裁决刻意没覆盖它们 #5732

Description

@os-zhuang

观察类发现,实施 #4923(PR #5731)时顺手清点,未修、不在该单范围内。今天没有用户会撞到,故只记录不排期。

事实

#4923 的维护者裁决把 renameKey / renameConfigKey 遇「两个拼法同时存在」的处置改成按值拆分:等值删冗余 + 发 notice,异值双保留交给 strict 门点名双键。liftNotifySourceShape 按 issue 点名一并跟进。

conversions/registry.ts 里还有两处结构不同、但同样以「规范/声明的一侧赢,另一侧原样遮蔽」收场的分支,它们没有跟着动,而且是刻意的:

位置 形状 当前分支
liftWaitEventConfig(WAIT_EVENT_CONFIG_LIFTS) 松散 config.duration 等 → 声明块 waitEventConfig.timerDuration waitEventConfig 已有值则不抬,松散键原样留下
connector_action 的声明块 lift config.connectorIdconnectorConfig.connectorId cc[key] != nullcontinue,松散键原样留下

PR #5731liftWaitEventConfig 的注释里写明了为什么不扩张,并在 conversions.test.ts 对应用例上留了同样的说明,免得下一个读者以为是漏改。

为什么它和 #4923 不是同一个问题

所以按 #4923 的口径直接套过来是不成立的,需要单独判一次。

待裁定的问题(若认为值得动)

  1. 松散候选与声明块的值结构相等时,是否也按无损卫生删掉松散键 + 发 notice?
  2. 多候选情形下,等值比较的对象是「声明块的现值」还是「第一个 present 的候选」?被判定等值的候选是删一个还是删全部?
  3. 不等时保留松散键——这一半已经是现状,strict 契约也已按此拒绝,应该无需变更。

现状为何不算缺陷

松散键留下后由收紧后的 wait / connector_action 契约拒绝,并带处方;也就是说最终结果是响的、可行动的,只是元数据在静止态没被清干净(和 #4923 修掉的那一半同源的卫生问题,程度更轻)。没有「今天能跑、17 上硬停」的可达回归——那正是 #4923 之所以要修的理由,而这两处不具备。

相关

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions