审计要看真实产物,而非断言
上级:disciplines。 上位:site-audits-where-checking-is-cheap——本条是那条判据的推论。产物才是让检查变便宜的那个东西;描述会让每一个检查都变贵。
更深一层的失败:没有硬工具的审计只是表演
第一轮"通过"其实是假的,是负责人亲眼抓到一段沉闷、无声、黑白的视频,才把它揭穿:那次审计没有任何工具——它读的是一份文字计划加上我自己的断言("假设音频没问题"),从来没有看过渲染出来的文件。没有工具的审计者只会盖章放行;agent 则会不断地宣称胜利。修法是做一个带硬工具、直接检查产物的审计(services/media-audit/video_audit.py):ffprobe(到底有没有音轨?)、volumedetect(能不能听见,还是实质静音 → FAIL)、以及视觉判官必须看的抽帧(钩子 / 是真实素材还是抽象画面 / 字幕 / 色彩 / 运动)。审计一份计划或一句声明,是无效的。
比"硬工具"更根本的规则是:审计的输入必须是独立取得的真实产物——绝不能是来自生成者或编排者的一句声明、一份计划、一段描述或一个假设。硬工具只是你用来读取非文本产物的手段;真正的不变量是你审计的对象是什么。把"假设音频没问题"交给审计者去审,本质上是在审计自己的断言——无论有没有工具,这在结构上就是无效的。(判断的第一法则:发布者对已提交的内容重新运行;审计者读的也是已提交的内容。)
这和整个信任基座的教训是同一条——验证真实产物,永远不要验证断言——只是应用到了媒体上。
看帧审计持续证明自己的价值(动画那一轮,2026-07-17)
给 Remotion 视频加动效时(用 animate 技能:逐行错开入场、用 ease-out-quint/expo 代替生硬的 spring、共享的进度轨、卡片入场、偏冷色调的中性色)——带硬工具、真正去看渲染出来的帧的审计,立刻抓到了两个只靠读代码或读断言的审计会放过的缺陷:(1)CTA 卡片上出现了字面上的 \n——这是一个 JSX 的坑:字符串属性(text="a\nb")不会解释反斜杠转义,而 {} 里的 JS 表达式(.split("\n"))会,于是两者悄悄地对不上;用 | 作哨兵字符解决。(2)mean_volume −91 dB——Remotion 生成的是一条无声的 aac 音轨(只看 has_audio_stream:true 这个标志是个陷阱;只有 audible 才能抓到问题);靠混入背景音乐(−30 dB)解决。同时还修复了硬工具本身的一个漏报(vertical_9x16 把 1080x1920x 解析错了)。这些问题没有一个是"代码看起来没问题"能看出来的——只有读真实的字节才能看见。同一条法则,再一次:验证真实产物,永远不要验证断言。