批次 520-C · 规范审计回应 · 2026-09-16

批次 520-C · 审计回应:把「用未确认的数字写硬判据」这个新教训堵住

批次:520-C(v3.0 规范审计回应)

日期:2026-09-16

对象:docs/design/SKY-VISUAL-STANDARD-v3.md → v3.0c

触发:外部审计报告(5 类问题 · 一句话结论:「最大的优点是用证据推翻自己,最大的隐患是用同样自信的口吻把一批尚未经老板确认的数字写成硬判据」)

纪律:本批全部落在「建表闸」内 —— 重测、复核、修订文档、补脚本。未写一行渲染代码;主仓 src/ / functions/ 零改动;worktree 未提交未部署;基准资产只读未覆盖。


0. 一句话结论

审计的五条意见,四条完全成立、一条部分成立。全部已修复。其中一条意见反而帮我们挖出了一个新的硬证据 —— 审计怀疑「ref-c 可能是复合图、含标注面板」,实测证明:那条 50.9% 的拼接缝确实存在,但它属于另一个文件(SKY-BASELINE-CT1-annotated.png,2580×969),不属于 ref-c。 这等于把历史「地平线 69.76%」误测的确切来源钉死了。


1. 逐条裁决

#审计意见裁定处置
1「最硬证据」有时间戳漏洞:mtime 可被改写,只证「同一会话内先后生成」,不证「压缩」这个具体变换;仿射拟合方向不敏感完全成立§3.1c 重写:时间戳降为旁证;主证据换为信息损失不可逆检验(见 §2)
2判据体系自我污染:(a) ref-c 疑似「画面+标注面板」复合 (b) JPEG 量化削峰 ⇒ 精确倍数不可靠(a) 不成立(但揭出新事实)<br>(b) 完全成立(a) 四项纯净度检查全通过;同时更正了拼接缝归属<br>(b) V44/V45 改为稳定域判据(见 §3)
3措辞过度自信 + 自我循环:「实测证据 > 老板原文」中「实测」实为「我做的实验」完全成立新增 §1.4 证据等级制度(E0–E3);修正 §2 审计口径;新增 §21 Q7 独立复核
4工程判断两处缺对拍:① 阶段 0→1 无量化回归 ② Voxel 稀疏高度场会塌完全成立新增 §26.1 量化回归闸 G1–G6;§25.2 S7 补稀疏高度场填充三序处理
5遗漏项:色域/显示校准、300ms 为估算非测量、§12.2 红线未含阶段 0 产物完全成立新增 §17.1 验收显示环境;300ms 降为 E2 估算;§12.2 增两条红线

2. 意见 1 的修复:换主证据(从「时间戳」到「信息损失不可逆」)

2.1 审计两点质疑都被证实

质疑实测结果
「mtime 只证先后,不证变换」证实:新发现 ref-c 内嵌 ICC profile 描述为 sRGB、info 含 Google Inc. 2016 —— 这是 Chromium/Chrome 的内嵌 sRGB 指纹 ⇒ ref-c 由 Chromium 系产出(浏览器截图 / 另存图像),其 mtime 记录的是「保存动作」时间,不是内容生成时间
「仿射拟合方向不敏感」证实:仿射关系对方向是对称的,单靠拟合无法定方向

2.2 新主证据:falsify 反命题

设两个假说:

检验法:把 CT-1 下半块按各标准核放大回 ref-c 几何,看能否复现 ref-c。

重采样核MAE梯度能量比(vs ref-c)
NEAREST4.2688.0%
BILINEAR3.9880.2%
BICUBIC3.9388.2%
LANCZOS(最佳)3.9492.5%
BOX4.2688.0%

5 种标准核里最好的一个也只能复原 ref-c 的 92.5% 细节。若 H2 成立,必然存在某个核使比值 ≈ 100%。⇒ H2 被 falsify,H1 唯一成立。

旁证(新的指纹):CT-1 原始下半块的梯度能量(4.226)高于 ref-c(3.934)—— 这是降采样的典型指纹(特征被压进更少像素 ⇒ 相邻像素差变大)。

排除「只是重新编码」:下半部逐像素最大差 243(纯重编码应 < 30)⇒ 内容位置已改变 ⇒ 审计提出的「可能是导出工具的一次重新编码」假说被排除。

2.3 顺带更正的两处数值

项v3.0v3.0c(复算)原因
仿射参数1.36 / −348、73.5%1.355 / −344、73.8%步长 0.01→0.005;插值改 np.interp
上半部逐像素最大差010(JPEG 噪声量级)原值按 5% 采样带测,漏掉个别行;全行扫描后真实上界 10

注意:这两处修正都来自审计的质疑 —— 它逼我们把「抽样测量」升级为「全量测量」。


3. 意见 2 的修复:(a) 归属更正 · (b) 改稳定域

3.1 (a) 拼接缝归属 —— v3.0 原文张冠李戴

文件尺寸最大行跳变最大列跳变
ref-c1920×9697.11 @y=34.47%10.11
CT-11920×9697.98 @y=88.44%9.78
CT-1-annotated2580×969100.97 @y=50.88%51.00 @x=1921

那条「50.9% 拼接缝」属于 SKY-BASELINE-CT1-annotated.png。 该文件是 2580 = 1920(画面)+ 660(标注面板) 的横向复合图:列均值在 x=1919→1920 由 12.83 跳到 60.00(面板左边框),面板底色 9.00–12.30。50.88% 的强行跳变由面板内容在纵向上的起止造成,与画面地平线无关。

⇒ 历史「地平线 69.76%」正是在这张 2580px 复合图上误测的 —— 这解释了该错误的确切来源。

3.2 (a) ref-c 纯净度四项检查 —— 全部通过

查项实测判定
上下边带 UI 条(行标准差)上 3.98 / 下 36.49 vs 全图 18.96✅ 无条带
左右边带滚动条(列标准差)左 6.80 / 右 6.79 vs 全图 22.5✅ 无滚动条
纯色面板底(最长同值游程)318px = 16.56%(阈值 25%)✅ 无面板
四角 logo/水印TL max 2.7 / TR max 2.0(纯黑)✅ 无浮层

⇒ ref-c 是单幅画面。§19 全部基准值未被污染。

3.3 (b) JPEG 量化敏感度 —— 审计完全正确

把 CT-1(PNG 无损)按各质量重编码后重测:

质量p99.9Δp99.9近白 L>200Δ倍数
95163.00+0.000.0071%0.97×
80163.33+0.330.0075%1.03×
70163.67+0.670.0078%1.07×
50163.00+0.000.0082%1.12×

编解码噪声是「个位点数」量级(≤ ±1.4 / ≤ ×1.12),而 480 批与目标的差距是 ~70 点 / 两个数量级 ⇒ 判据方向与量级不受 JPEG 影响。但「134 倍」这类精确倍数确实不该写进硬阈值。

修复:V44/V45 改为稳定域判据,阈值与目标值的余量放宽到噪声的 10 倍以上:

判据原阈值新阈值(稳定域)目标噪声余量
p99.9≤ 180≤ 185164.3~15×
近白 L>200≤ 0.05%≤ 0.06%0.0062%~10×

表述也从「134 倍」改为「两个数量级」。


4. 意见 3 的修复:证据等级制度(制度性)

4.1 承认循环

v3.0 写「实测证据 > 老板原文 > 既有规范 > 我的推断」,但「实测证据」在本批全部是 我单方做的实验 —— 等于把「我的推断」换了个名字排到第二位。这构成循环:用自己未复核的实测去推翻别人,再用自己定的规则为自己背书。

4.2 新增制度(§1.4)

等级定义可否推翻他人结论可否写入硬判据
E0确定性脚本 + 原始资产 + 第三方复现成功✅✅
E1确定性脚本 + 原始资产,本端单方✅(须标 E1)⚠️ 仅作临时口径
E2估算 / 类比推理❌❌
E3推断、记忆、直觉❌❌

强制要求:每处关键测量须注明 ①脚本路径 ②输入资产 ③随机性 ④证据等级 ⑤复核路径。

「靶子级」测量清单(改一项等于改整张判据表):两图地平线位置 / ref-c 三区 mean / 下半部仿射参数 / p99.9 与近白占比 / 层面积配额。

4.3 配套修正


5. 意见 4 的修复:两处工程缺口

5.1 新增 §26.1 阶段 0 → 1 量化回归闸

审计原话:「阶段 1『数据进来后视觉语言不塌』只有一句五问,没有量化回归 —— 这是下一个『方向漂移』最可能发生的位置。」

#判据(阶段 1 vs 阶段 0 已合格产物)阈值
G1九层面积配额逐层偏移≤ ±20%
G2三区 mean≤ ±12%
G3地平线位置仍在 57 ± 3%
G4p99.9 / 近白占比仍满足稳定域
G5⑤ 中轴辐射网条数 5–7、存在
G6青蓝占比(下半区·严格)≥ 85%

关键设计:只比「阶段 1 vs 阶段 0」,不与 ref-c 比绝对值 —— 阶段 0 已过五问,是「已知合格」的内部参照。这样能把「换数据导致的语言漂移」与「阶段 0 本身就还差的差距」分开。

纪律:G1–G6 全过 + 五问全过,才允许进阶段 2;只过五问而 G 超差 ⇒ 视为「偶然像」,必须回退查因。

5.2 S7 补「稀疏高度场填充三序处理」

审计质疑:诸暨式 Level 2 城市的高度场极稀疏 ⇒ 剪影会塌。v3.0 只在 §15 讲了降级,没落到 S7 技术要点。

新增(S7 内):

  1. 以真实 footprint 为种子,沿真实路网两侧做各向异性膨胀(沿街权重高、垂直权重低)⇒ 建筑呈「沿街连续」而非「孤立孤岛」
  2. 膨胀后仍低于 h_min 的区域,用低频噪声底床填充至 h_min(保证剪影连续不塌)
  3. 全部填充体标 synth:true 与 fill:expand|bed,与实测建筑可区分(§14.2 规则 3)
  4. 新增连通性判据:单行连通段数 ≤ 8、最长连通段 ≥ 15% 宽

6. 意见 5 的修复:三个遗漏项

项修复
显示校准新增 §17.1 验收显示环境:① 测量一律 sRGB 数值域 ② 五问必须同设备同亮度作答,换设备重答 ③ 每轮 ROUND 记「验收设备 / 亮度 / 夜间模式」④ 数值判据为硬约束、观感为软约束,冲突时以眼睛为准但须记录冲突
300ms 是估算§17 拆成两档:拉取/烘焙 = E1 实测;首屏 ≤300ms = E2 估算(由「CPU 10–20s ⇒ shader <10ms」类比推出,非测量)。阶段 2 必须以真实 profile 替换,在那之前任何「性能达标」声明无效
阶段 0 产物红线§12.2 增两条:① 阶段 0/1 沙箱产物禁止直接进线上前端 ② 复合 / 标注图禁止作测量基准(只能人工阅读)

7. 额外产出:把审计意见变成可复现能力

新增脚本 proto2d/verify_baseline_chain.py(确定性、无随机、无抽样),一次跑完五节:

节内容对应审计意见
A溯源与元数据(EXIF / ICC / mtime / JFIF)意见 1
B拼接缝归属核查(三图行列跳变 + 面板边界)意见 2(a)
Cref-c 纯净度四查 + 左右边带 + 首末行意见 2(a)
D方向性 falsify:仿射复算 + 逐像素 + 多滤波器反解 + 排除重编码意见 1
EJPEG 量化敏感度(q=50–95 重编码重测)意见 2(b)

产物:assets-520/VERIFY-baseline-chain.png(1720×1580 证据图)· verify-baseline-chain.json(全部数值)· verify-baseline-chain.log.txt(全文报告)

复现:<python 3.13> proto2d/verify_baseline_chain.py(依赖 numpy / Pillow)

当前等级:E1 —— 任一方复跑成功即升 E0(§21 Q7)


8. 门禁与状态

闸内容状态
闸 1 · 建表闸(纯测量 / 文档,可逆)重测、复核、修订文档、补脚本✅ 通过(本批全部工作在此闸内)
闸 2 · 施工闸(产出画面与代码)阶段 0 的 S1–S12🔒 关闭中 —— 等 §21 Q0 / Q1 / Q2

v3.0 原文的自相矛盾已修复:原文写「Q1 确认前不进入实施阶段」,却又「同批完成」S0 回填。现拆成两道闸 —— 建表闸的产物是数字,施工闸的产物是方向;前者即使被否也只需重跑脚本,后者押错就重演 440–490。

纪律核查:


9. 需要老板拍板的(Q0 是第一开关)

#问题说明
Q0CT-1 对 ref-c 的那个压缩 —— 是你当时要求的修改,还是一次无意的走样?本端已证实「压缩」这一事实,但无法从文件推断意图。新增选项 (C)「无意走样 / 不记得有此改动」。这是唯一的开关 —— 若选 (B),CT-2 方向本身错误,全部数字需翻转
Q1CT-2(地平线 57±3%)是否取代 CT-1?建议 A
Q2是否现在开工阶段 0?建议 A
Q6(新)五问在什么设备 / 亮度下作答?建议 A:就用现在这台,以后每轮同一台
Q7(新)是否指定一方复跑验证脚本?建议 B:这是把本文件核心结论从 E1 升到 E0 的唯一途径

10. 产物清单

类型路径
主交付docs/design/SKY-VISUAL-STANDARD-v3.md → v3.0c(1316 行 / 99.5 KB / 30 章 / 79 子节)
同内容 HTMLdocs/design/SKY-VISUAL-STANDARD-v3.html(88.4 KB,深色自包含,核心结论荧光绿)
证据图docs/sky/assets-520/VERIFY-baseline-chain.png(A–F 六节,1720×1580)
数值 / 日志docs/sky/assets-520/verify-baseline-chain.json · .log.txt
验证脚本D:\workbuddy\2026-09-15-00-01-41\sky-build\proto2d\verify_baseline_chain.py
转换器升级sky-build/md2html.py(v2:支持引用块内嵌表格;备份 .bak_520c)
本批记录docs/sky/ROUND-20260916-520C-审计回应.md + .html
任务状态task_status.md(§批次 520-C)
批次 520-C · 规范审计回应 · 2026-09-16 | 主仓零改动 · 未提交 · 未部署