校验
24 门检查:仓库与产物检查、故障夹具反证,以及对真实公开契约的可运行查询。一个不可能失败的检查比没有检查更糟——它的绿色会被当成证据引用。
24 门
| 门 | 查什么 | 它抓到过什么 |
|---|---|---|
check:tokens | 每个 var(--x) 都能解析到定义 | 重构前的示例引用了 52 个从未定义的 token |
check:colors | 每个前景色对它可能落在的每个面测对比度,加语法色板与两两 ΔE;主题开关必须接到 color-scheme | 代码块注释 2.87:1、标点 3.52:1、元数据行 4.41:1,两个主题都不达 AA |
check:forbidden | forbidden.json 里六条可执行禁令 | 三处 2px 逻辑属性边框长期畅通 |
check:components | 契约解析 + 契约在文档中可见 + 每个 wx- 类可解析 | 站点在用 7 个 kit 里不存在的类 |
check:contracts | kit/wenxin.json 与来源逐字节一致 | —(新增) |
check:site | 标签配平、单一 h1、标题不跳级、链接与锚点解析 | 一个游离 </div> 让半页脱出布局栅格 |
check:site:selftest | 站点检查器必须拒绝空目录、断裂资源、错误导航与失效锚点 | 首页有“目录”按钮却没有可打开的目录 |
check:pattern-tool | 工具页从真实 kit/wenxin.json 查询 71 条公开契约 | 空查询、无结果和请求失败没有恢复路径 |
check:calendar-demo | 日历示例切换日期时,选择态与状态说明必须同步 | 按钮有 aria-pressed,点击后却不改变选中日期 |
check:entry-demo | 开关状态与滑块文字读数必须同步 | 开关看似可点却不更新 aria-checked;滑块读数停在初始值 |
check:overlay | 首条 toast 前已有稳定、polite、atomic 的 live region | 首条消息与 live region 同时创建,读屏器可能漏报 |
check:markdown-admonitions | GitHub alerts 的容器、标题与语义变体必须同样被样式覆盖 | 只给 .markdown-alert-tip 局部上色,却没有可读的提示块结构 |
check:llms | 索引与来源一致,且每条链接可解析 | —(新增) |
check:a11y | 地标、标签、可访问名、唯一 ID、ARIA 引用、原生控件契约 | 导航页两个 id="skip" 让目录落到错误标题;带 href 的假禁用链接仍可由键盘激活 |
check:cli | 11 种调用行为正确,含一份应通过与一份应失败的合同审计;files/exports/bin 路径都存在 | 只测到任意文件的失败 JSON,却没有测到合法消费者审计 |
check:render-audit | 审计器的正反夹具,以及外链 CSS 未检查范围的警告 | 审计矩阵读错字段,每页硬失败却显示 0 failing;外链样式被静默忽略 |
check:a11y:selftest | 11 种故障必须同时被拒:无标签、断裂 ARIA、缺 alt、重复 ID、隐式按钮、缺状态、错误日历状态、假禁用链接、不可聚焦或无名称的宽表 | — |
check:components:selftest | 无样式的类名必须被拒 | — |
反向控制是这里的核心纪律
这个仓库有过三次"绿色掩盖真实缺陷":
- 审计矩阵读了一个从不存在的字段,每个示例都硬失败,而看板打印"0 failing"
- 五个文字 token 不达 AA,最低 1.54:1,而当时没有任何检查测量过 token 数值
- 对比度只对页面底色测,代码块在两个主题下都不合格,绿了整个仓库生命周期
三次的形状一样:检查没有洞,是检查的坐标系少了一维。 所以规矩是——你新加的每个检查,都要先故意制造它该抓的缺陷,确认它真的失败,再声称通过, 并在提交信息里写明怎么验的。
误报同样致命
check:components 的类名解析门第一次运行时把五个页面原型全报成未定义——
它的 CSS 来源清单漏了 patterns/。比检查对象窄的检查器会产生误报,
而误报是让一道门被无视的最快方式。修好才敢用。
审计你自己的页面
完成本地安装后,在消费者项目根目录运行:
npm exec --no -- wenxin audit dist/<slug>/index.html
上面 24 门是这个仓库的自检,不会跑在你的页面上。
你的页面用 audit——它读同一份 token 真源,所以 token 一变,判定标准跟着变,
不会留下一份硬编码的副本慢慢腐烂。它只覆盖合同、DOM 与内联样式;外链 CSS、计算后样式、读屏器和五条判断规则仍须人工验证。
还没有被检查覆盖的
诚实记录比虚假的完整清单有价值:
- 5 条需判断的规则——卡片几何、色块背景分区、强调色预算、填充主动作语义、装饰插画。原因见给 agent 用。
- 窄屏渲染——已有最近一次本地 390px 手工走查,但尚未形成可复放的自动视觉回归基线。
forced-colors——Windows 高对比模式下这套依赖发丝线与墨色的语言表现如何,尚未实测。