Skip to content

metadata-admin:唯一候选规则存在一个 5 改善/0 退化的「证据深度」谓词,但它换掉了规则的理据 — 需设计裁决 #3707

Description

@yinlianghui

发现于 #3694 的测量(PR #3706)。观察类,不是用户今天会撞到的回归 —— 5 个形状的诊断偏泛化,path 已经准确。分诊定级请自行裁决。

背景:#3694 测出了一个「不存在的」东西的反面

#3694 问「范畴判定只认 invalid_type 是不是漏进语义的实现细节」,授权是再定性 invalid_value,并规定「每一处变化必须是严格改善,否则停手」。

测量结论(PR #3706,51 形状):再定性 invalid_value 的两个方向都不合格 ——

谓词 改善 退化
视作类型层拒绝 5 8
类型感知(仅当无允许字面量与值同 typeof 时才算拒绝) 6 6

于是 #3694 不放宽,把两个方向都钉住结案。

但同一轮测量顺带发现:存在一个 5 改善 / 0 退化的谓词。 它落在授权外,因为它根本不看 issue 的 code —— 它回答的是另一个问题。本单就是记录它。

这个谓词

「证据深度」两层:

  1. 先取在值内部报过位置的成员(自身相对 path 非空);恰好一个 → 选它。
  2. 一个都没有 → 回落到今天的普查(只认 invalid_type),恰好一个候选 → 选它。

单调性可证,不是测出来的运气:在值内部报过位置的成员必然没有根上的 invalid_type,所以第 1 层的集合是今天候选集的子集。故第 1 层命中时今天的 k 必 ≥ 1 —— 这条规则只会新增激活,永不去激活。实测 51 形状印证:5 改善 / 0 退化。

改善的 5 处都在 columns[].summary(enum | {type, field}),值是对象时:

config.columns.0.summary        / Invalid input          (今天)
config.columns.0.summary.type   / Invalid option: expected one of "none"|"count"|…   (该谓词)

含容器 list.…listViews.v1.… 两条路由。逐处核对过选中的都是作者意图的成员:作者写的是对象,选中的就是 {type, field} 成员。

为什么 #3694 没有顺手做

不是漏做,是刻意不做 —— 它把唯一候选规则的理据换掉了:

两者恰好在 enum-vs-object 上分叉,而这正是全部收益的来源。#3626 / #3677 两次把「不发明偏好」写进代码注释并靠它挡住了 config.sort 的误选;「报进内部的证据强于整体字面量拒绝」是一条新的偏好排序,虽然讲得通,但它是设计裁决,不该由一张授权「再定性某个 code」的卡顺手做掉。

代价已经测过

PR #3706 已把「现状塌陷」也钉住,所以采纳该谓词的代价是确定的:4 条测试变红,全部是钉住现状塌陷的钉子,零回归(对照:视作类型层拒绝 9 红含 5 条真回归;类型感知 8 红含真回归)。按 fixture 三分诊做整体替换即可。

判断这值不值得做

  • 赞成:严格改善且单调性可证;代价已量化;现在钉子齐了,做起来是机械动作。
  • 反对:收益上限很小(只有 summary 写成对象这一类形状,且 path 今天已准确);它要立第三条局部规则,而这三条的既定归宿是随 objectstack#6391 一起退休;新的偏好排序会伸进未来任何 enum-vs-object 的 union。

倾向:低优先,且优先级应低于 objectstack#6391 —— 若 spec 侧给 union 补上判别入口,summary 这类 union 自带判别式,#3626 / #3678 / #3694 连同本单一起消解,这条规则一天都不用活。

相关:#3626#3678#3694、PR #3677、PR #3693、PR #3706、objectstack#6391。


Generated by Claude Code

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