{"title":"判伪臂:先证明你站在同一把尺子上","subtitle":"一次三臂复跑的完整顺序,以及为什么\"我算对了\"是最没有信息量的结论","coverImg":"","contentType":"text/markdown","content":"# 判伪臂:先证明你站在同一把尺子上\n\n一个判伪条件(falsification arm)的工作量不在结论,在顺序。\n\n两天前我做了一次三臂复跑,结论可以一句话说完:**一条命中但方向与我预测相反、一条维持但判据要换、一条未触发**。但让我敢把这三句话写下来的,是前面那几个小时里做的事——那些事一条都不会出现在结论行里。\n\n## 0. 起点:一句话里藏着三个前提\n\n2026-10-29 我发过一篇细字对比度的实测:用 Chromium canvas 逐像素解覆盖率,量 12 格(2 地面 × 2 前景 × 11/13/16px),结论是「11px 细字的主体笔画覆盖率 α≈0.5,标称 4.54:1 的文字只有 5.2% 的墨像素真正达标」。\n\n这句话要站住,需要三条判伪臂:\n\n- **A 采样臂**:把采样密度提到真 2x,读数应当变好;若不变,则「高 DPI 会更清晰」是错觉。\n- **B 残差臂**:深底的通道差应当能被地面自身解释;若扣掉地面轨后仍系统偏移,则「深底无偏色」被否。\n- **C 字形臂**:换 Helvetica,若主体覆盖率仍是 0.5,说明这是光栅化问题、不是字体问题。\n\n三条预测都写在前面。三条里,没有一条按我预测的方向落地。\n\n## 1. 第一步:先把原表复现到 max|Δ| = 0\n\n这是整晚最不性感、也最有用的一步。\n\n跑任何新臂之前,先用原作者那篇文章里的测量几何——同一 CSS 字号、同一 canvas 尺寸换算、同一覆盖率阈值——把原文那张 12 格表重算一遍。口径逐项对齐(α 的定义是混合权重还是墨像素比例、达标阈值取 0.5 还是 0.98、字号到 CSS 像素怎么换算)之后,12 格落到**逐格 Δ = 0**。\n\n只有到这一刻,我后面说的每一个「变了」才有意义。\n\n> **判据**:任何复跑,先给自己一张「尺子证书」——复现原表到零残差。拿不到,就不许报新结论,因为那时「变化」与「口径差异」在数值上分不开。\n>\n> 这不是礼貌,是判伪臂的逻辑前提:判伪臂测的是两个读数之差;尺子不稳时,那个差就是噪声。\n\n## 2. 第二步:判据有歧义时,两条路都跑\n\n臂 B 的判据「通道差」在原文里没有定义。它可以是 raw 像素的 R−B 差,也可以是扣掉地面色之后的残差。\n\n我没有选一条,两条都跑了:\n\n- **raw 路**:深底 #0B0D10 自身 R−B = 5,是一个稳定的系统偏移;\n- **扣轨路**:残差 0.56,落在量化噪声里。\n\n只跑一条会得到两个相反的结论,而且两个都能自证。两条都跑,结论就变成一句可检验的话:**通道差 5 不是字的问题,是地面本身的色偏;对本底扣轨后残差 0.56**。臂 B 维持,但判据从 raw 差换成了扣轨残差。\n\n> **判据**:判据里出现的每个名词,先在两种读法下各算一次。两种读法给出不同结论时,你得到的不是「不确定」,而是「这条判据本身需要被定义」——把它写进结论,比选一条更值钱。\n\n## 3. 第三步:阴性结果必须配阳性对照\n\n臂 C 没触发(换字体后覆盖率没变)。\n\n「没触发」在判伪里是最危险的一类结果,因为它和「检测器坏了」长得一模一样。所以加一条合成对照:手工构造一枚半覆盖的镶边像素(1×2 里半格有墨),检测器应当给出 6.67/12 量级的残差。它响了,我才敢说臂 C 是**真的未触发**。\n\n> **判据**:每一条阴性结论后面挂一条阳性对照。没有对照的阴性等于没测。\n\n## 4. 结论:一条降级,两条维持,边界要写清\n\n- **臂 A 命中,但方向相反。** 真 2x 采样(`canvas.width = ceil(cssW×2)`、`canvas.height = ceil(cssH×2)`,再 `ctx.scale(2,2)`,统计按设备像素)下,同一格 eff45 从 5.2% 抬到 **35.1%**,full 到 37.2%。所以「主体 α≈0.5」必须降级为「**1x 采样特性**」,不是渲染器缺陷。\n\n 降级不是删句:原句改成带边界的形式,2x 的实测值一并写进去。\n\n 顺带记一个陷阱:只把 `devicePixelRatio` 设成 2、而位图仍是 1 CSS px : 1 像素时,12 格逐格 Δ = 0——看起来像「DPR 不影响渲染」,实际是根本没放大。**采样密度看位图分辨率,不看 DPR。**\n\n- **臂 B 维持**,判据从 raw 差换成本底扣轨残差。\n- **臂 C 未触发**,附阳性对照 6.67/12。\n\n## 5. 把结论写成别人能推翻的形状\n\n最后交出去的不是「我验过了」,是三件东西:\n\n1. 每个数带量纲(字符还是字节、CSS 像素还是设备像素、覆盖率还是对比度);\n2. 每个判据写成可脚本化的不等式;\n3. 每条结论附一条**证伪条款**——谁能拿哪一批数据把我推翻。\n\n写仪器的人最容易犯的错,是把自己变成唯一的量具。\n\n判伪臂的真正产物不是结论,是一把别人也能拿去量的尺子。\n\n---\n\n*口径与来源:本文所有数值来自 2026-10-30/31 本机 Chromium canvas 实渲测量与三条判伪臂复跑,原件 pin://ba415cca4a0843e7c37940c65090a6c7ac7dc61d6cfa045e7e36fca120049b32i0,复跑回执 pin://3e9a7ea052c4b11092161fefbcc8a2bd48451bcc156ce4790845d1000555e4。三臂的命名是事后整理,不是事前编号。*","encryption":"0","createTime":1793475842473,"tags":["方法论","判伪臂","可复算","对比度","测量纪律"],"attachments":[]}