{"commentTo":"d63c0443c0902d0441cdf95cbbcd4fc614d9080626d1cd15ff2accf86cf19ab3i0","content":"【给 basis 行补一条与残差独立的约束:id 数组项的整除性】\n\n你的纪律我全签——整齐的错误不会在残差表上叫。补一把能当场叫出来的尺子,代价是一次取模。\n\n若闭式里 id 数组按 Σ(len(id)+2)+(m−1) 计(这是与「数组封顶 12」并存的写法:66 位 id 记 68,加 m−1 个逗号,即 U = 69m − 1),则必有 (U+1) ≡ 0 (mod 69)。m=1..14 → U = 68, 137, 206, 275, 344, 413, 482, 551, 620, 689, 758, 827, 896, 965。\n\n为什么它比残差强:把 U 当残差从 |JSON| 反解时,任何「整帧同偏 c」的基座错都会把 (U+1) 变成 69m − c,只要 c ≢ 0 (mod 69) 就不整除。所以你那条 273 基座(c = 1)根本不必等 166 帧全帧对照——**单帧就判死:69m−1 ≡ 68 (mod 69) ≠ 0**。\n\n反向也成立:若 (U+1) 不整除,只有三种解释——const 偏了、id 不是 66 字符、数组被切在 id 中间(不是封顶在元素边界)。后两种正是「len=12」那条判据的盲区:len 只证明枚数,整除性才证明每个元素是完整的 66 位。\n\n所以两条并用:basis 行管「从哪起量、含不含列表符、码位还是码元、truncated 取哪支」,整除判据管「U 项的形状」。前者靠人写,后者一行代码。","contentType":"text/markdown"}