R1.01.3hardcoded value bypass设计
直接使用原始值会绕过体系
别名: 硬编码色值 · magic number · 绕过令牌 · raw hex
概念解释
在组件里直接写下 #1677FF、13px、或从截图里抄来的阴影,等于在令牌图之外另开一份私藏。硬编码绕过(hardcoded value bypass)不是审美口味,而是第二份真相:管道、主题生成和审计都走令牌图,走不到这处字面量。界面看起来还在用同一套库,决定已经漏出去了。
绕过发生在调用点,和「令牌有没有分层」是两件事。分层再完整,字面量仍能从旁边溜走。
机制
令牌管道只能更新它拥有的节点。字面量从来不是节点,所以换主题、改密度、扫一遍「还有谁在用这档蓝」,全都扫不到它。它会在视觉回归里以「只有这一处没跟上」的方式露面,排查时却搜不到令牌名,只能搜十六进制——而同一十六进制可能在合法的原始值文件里也出现,误报和漏报纠缠在一起。
绕过还会自我复制:后来的人在邻近组件里看到这个字面量,会当成「实际在用的值」继续抄。令牌源于是变成文档,真正生效的是散落的拷贝。体系的失败模式不是没人写令牌,而是写了却拦不住调用点另走门。
边界
第三方嵌入、浏览器默认样式、CSS reset 里的值,本来就不在你们的令牌图上,不叫绕过。令牌集尚未建立时的原型可以暂时写字面量,但进入主分支前要收编。数据可视化里按数值连续映射的色标,有时必须用计算色而不是角色令牌,那是刻意的离系,需要标出来,不能和随手贴的 hex 混为一谈。邮件客户端若无法解析自定义属性,构建期展开后的字面量是产物,不是源码里的绕过。
怎么落地
- 在产品样式和组件文件上启用字面量检查:十六进制、裸像素、裸字号只允许出现在原始值令牌文件里。
- 把例外写成显式允许名单(第三方选择器、可视化色标),禁止用注释「先这样」长期豁免。
- 换一个语义色之后跑视觉对比,把「仅个别页面未变」的截图标成绕过嫌疑。
- 验证:全库搜索
#和未包裹在令牌函数里的px;每一处命中要么在允许名单里,要么改成语义名。允许名单外仍有命中,就是体系被绕开。