R2.03.2Numeric-layer inspectability设计
自动化检查只能覆盖数值层
别名: 数值层 lint · 间距色值可自动 · 意义不可自动 · 自动化上限
概念解释
机器能稳定比较的是数值层(numeric-layer inspectability):间距是不是落在阶上、色值是不是命名表里的那个、字号是不是字阶里的一级。这些量有可对的尺子。这只按钮该不该用「主动作」那一档色、这段空态是不是在请人创建而不是在道歉,没有尺子。自动化在数值层饱和,在意义层沉默。
把清单全部交给 lint,等于宣布只检查机器能看见的那一层,并假装其他层不存在。反过来,拒绝一切自动化,会把已经可比较的数值重新交给疲劳的眼睛,眼睛会在第三页开始放行。
机制
比较需要两端都是数。构建时读到的间距像素、计算后的对比度、字号,都能和一张命名表做相等或落阶判断。选择——「这里该用主色还是危险色」——两端是角色,不是数。同一枚十六进制可以挂在两个角色下:警告和错误若共用一个红,lint 看见合法色值,看不见用错角色。
因此自动化的天花板不是工程能力不足,是对象类型。对象是可测量值,机器胜;对象是角色与后果,机器没有输入。把意义编码成更多命名(「这是 danger 不是 warning」)能把一部分选择推进数值层,但编码本身仍要人来做,而且编码会过时。天花板可以上移,不能取消。
边界
完全没有命名表、每个页面手写色值的代码库,连数值层都没有稳定尺子,自动化会报出噪声或什么都不报;先有可比较的阶,才有可自动的层。插画、数据可视化、地图里的色往往不在界面色阶上,用界面 lint 去扫会误杀。主题运行时换值时,自动化必须在运行后的计算值上比,而不是比源文件里的字面量,否则会放过「名字对、算出来的对比不够」的失败。
怎么落地
- 把清单拆成两栏:数值栏交给 lint(间距阶、命名色、字号阶、最小点按尺寸);意义栏留给人。
- 不要为了「全自动」去发明伪数值,例如把「语气是否一致」打成分数;那不是测量。
- 用一道对照实验标定天花板:做一屏,故意把「主动作」和「危险动作」换成同一合法色值。lint 必须静默,人必须能标出用错角色——静默证明数值层已到顶,人能标出证明意义层仍在。
- 验证:看本月清单里由自动化关闭的项。若其中含有「这个按钮在做什么」类问题,自动化越权。若数值栏仍在由人用眼睛对色,自动化缺位。对照实验若 lint 报警或人看不出角色错误,标定失败。