批次:520-C(v3.0 规范审计回应)
日期:2026-09-16
对象:
docs/design/SKY-VISUAL-STANDARD-v3.md→ v3.0c触发:外部审计报告(5 类问题 · 一句话结论:「最大的优点是用证据推翻自己,最大的隐患是用同样自信的口吻把一批尚未经老板确认的数字写成硬判据」)
纪律:本批全部落在「建表闸」内 —— 重测、复核、修订文档、补脚本。未写一行渲染代码;主仓
src//functions/零改动;worktree 未提交未部署;基准资产只读未覆盖。
审计的五条意见,四条完全成立、一条部分成立。全部已修复。其中一条意见反而帮我们挖出了一个新的硬证据 —— 审计怀疑「ref-c 可能是复合图、含标注面板」,实测证明:那条 50.9% 的拼接缝确实存在,但它属于另一个文件(SKY-BASELINE-CT1-annotated.png,2580×969),不属于 ref-c。 这等于把历史「地平线 69.76%」误测的确切来源钉死了。
| # | 审计意见 | 裁定 | 处置 |
|---|---|---|---|
| 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 增两条红线 |
| 质疑 | 实测结果 |
|---|---|
| 「mtime 只证先后,不证变换」 | 证实:新发现 ref-c 内嵌 ICC profile 描述为 sRGB、info 含 Google Inc. 2016 —— 这是 Chromium/Chrome 的内嵌 sRGB 指纹 ⇒ ref-c 由 Chromium 系产出(浏览器截图 / 另存图像),其 mtime 记录的是「保存动作」时间,不是内容生成时间 |
| 「仿射拟合方向不敏感」 | 证实:仿射关系对方向是对称的,单靠拟合无法定方向 |
设两个假说:
CT-1下半部 = 降采样(ref-c下半部, 0.738) —— ref-c 是源ref-c下半部 = 升采样(CT-1下半部, 1.355) —— CT-1 是源检验法:把 CT-1 下半块按各标准核放大回 ref-c 几何,看能否复现 ref-c。
| 重采样核 | MAE | 梯度能量比(vs ref-c) |
|---|---|---|
| NEAREST | 4.26 | 88.0% |
| BILINEAR | 3.98 | 80.2% |
| BICUBIC | 3.93 | 88.2% |
| LANCZOS(最佳) | 3.94 | 92.5% |
| BOX | 4.26 | 88.0% |
5 种标准核里最好的一个也只能复原 ref-c 的 92.5% 细节。若 H2 成立,必然存在某个核使比值 ≈ 100%。⇒ H2 被 falsify,H1 唯一成立。
旁证(新的指纹):CT-1 原始下半块的梯度能量(4.226)高于 ref-c(3.934)—— 这是降采样的典型指纹(特征被压进更少像素 ⇒ 相邻像素差变大)。
排除「只是重新编码」:下半部逐像素最大差 243(纯重编码应 < 30)⇒ 内容位置已改变 ⇒ 审计提出的「可能是导出工具的一次重新编码」假说被排除。
| 项 | v3.0 | v3.0c(复算) | 原因 |
|---|---|---|---|
| 仿射参数 | 1.36 / −348、73.5% | 1.355 / −344、73.8% | 步长 0.01→0.005;插值改 np.interp |
| 上半部逐像素最大差 | 0 | 10(JPEG 噪声量级) | 原值按 5% 采样带测,漏掉个别行;全行扫描后真实上界 10 |
注意:这两处修正都来自审计的质疑 —— 它逼我们把「抽样测量」升级为「全量测量」。
| 文件 | 尺寸 | 最大行跳变 | 最大列跳变 |
|---|---|---|---|
| ref-c | 1920×969 | 7.11 @y=34.47% | 10.11 |
| CT-1 | 1920×969 | 7.98 @y=88.44% | 9.78 |
| CT-1-annotated | 2580×969 | 100.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 复合图上误测的 —— 这解释了该错误的确切来源。
| 查项 | 实测 | 判定 |
|---|---|---|
| 上下边带 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 全部基准值未被污染。
把 CT-1(PNG 无损)按各质量重编码后重测:
| 质量 | p99.9 | Δp99.9 | 近白 L>200 | Δ倍数 |
|---|---|---|---|---|
| 95 | 163.00 | +0.00 | 0.0071% | 0.97× |
| 80 | 163.33 | +0.33 | 0.0075% | 1.03× |
| 70 | 163.67 | +0.67 | 0.0078% | 1.07× |
| 50 | 163.00 | +0.00 | 0.0082% | 1.12× |
编解码噪声是「个位点数」量级(≤ ±1.4 / ≤ ×1.12),而 480 批与目标的差距是 ~70 点 / 两个数量级 ⇒ 判据方向与量级不受 JPEG 影响。但「134 倍」这类精确倍数确实不该写进硬阈值。
修复:V44/V45 改为稳定域判据,阈值与目标值的余量放宽到噪声的 10 倍以上:
| 判据 | 原阈值 | 新阈值(稳定域) | 目标 | 噪声余量 |
|---|---|---|---|---|
| p99.9 | ≤ 180 | ≤ 185 | 164.3 | ~15× |
近白 L>200 | ≤ 0.05% | ≤ 0.06% | 0.0062% | ~10× |
表述也从「134 倍」改为「两个数量级」。
v3.0 写「实测证据 > 老板原文 > 既有规范 > 我的推断」,但「实测证据」在本批全部是 我单方做的实验 —— 等于把「我的推断」换了个名字排到第二位。这构成循环:用自己未复核的实测去推翻别人,再用自己定的规则为自己背书。
| 等级 | 定义 | 可否推翻他人结论 | 可否写入硬判据 |
|---|---|---|---|
| E0 | 确定性脚本 + 原始资产 + 第三方复现成功 | ✅ | ✅ |
| E1 | 确定性脚本 + 原始资产,本端单方 | ✅(须标 E1) | ⚠️ 仅作临时口径 |
| E2 | 估算 / 类比推理 | ❌ | ❌ |
| E3 | 推断、记忆、直觉 | ❌ | ❌ |
强制要求:每处关键测量须注明 ①脚本路径 ②输入资产 ③随机性 ④证据等级 ⑤复核路径。
「靶子级」测量清单(改一项等于改整张判据表):两图地平线位置 / ref-c 三区 mean / 下半部仿射参数 / p99.9 与近白占比 / 层面积配额。
审计原话:「阶段 1『数据进来后视觉语言不塌』只有一句五问,没有量化回归 —— 这是下一个『方向漂移』最可能发生的位置。」
| # | 判据(阶段 1 vs 阶段 0 已合格产物) | 阈值 |
|---|---|---|
| G1 | 九层面积配额逐层偏移 | ≤ ±20% |
| G2 | 三区 mean | ≤ ±12% |
| G3 | 地平线位置 | 仍在 57 ± 3% |
| G4 | p99.9 / 近白占比 | 仍满足稳定域 |
| G5 | ⑤ 中轴辐射网 | 条数 5–7、存在 |
| G6 | 青蓝占比(下半区·严格) | ≥ 85% |
关键设计:只比「阶段 1 vs 阶段 0」,不与 ref-c 比绝对值 —— 阶段 0 已过五问,是「已知合格」的内部参照。这样能把「换数据导致的语言漂移」与「阶段 0 本身就还差的差距」分开。
纪律:G1–G6 全过 + 五问全过,才允许进阶段 2;只过五问而 G 超差 ⇒ 视为「偶然像」,必须回退查因。
审计质疑:诸暨式 Level 2 城市的高度场极稀疏 ⇒ 剪影会塌。v3.0 只在 §15 讲了降级,没落到 S7 技术要点。
新增(S7 内):
h_min 的区域,用低频噪声底床填充至 h_min(保证剪影连续不塌)synth:true 与 fill:expand|bed,与实测建筑可区分(§14.2 规则 3)| 项 | 修复 |
|---|---|
| 显示校准 | 新增 §17.1 验收显示环境:① 测量一律 sRGB 数值域 ② 五问必须同设备同亮度作答,换设备重答 ③ 每轮 ROUND 记「验收设备 / 亮度 / 夜间模式」④ 数值判据为硬约束、观感为软约束,冲突时以眼睛为准但须记录冲突 |
| 300ms 是估算 | §17 拆成两档:拉取/烘焙 = E1 实测;首屏 ≤300ms = E2 估算(由「CPU 10–20s ⇒ shader <10ms」类比推出,非测量)。阶段 2 必须以真实 profile 替换,在那之前任何「性能达标」声明无效 |
| 阶段 0 产物红线 | §12.2 增两条:① 阶段 0/1 沙箱产物禁止直接进线上前端 ② 复合 / 标注图禁止作测量基准(只能人工阅读) |
新增脚本 proto2d/verify_baseline_chain.py(确定性、无随机、无抽样),一次跑完五节:
| 节 | 内容 | 对应审计意见 |
|---|---|---|
| A | 溯源与元数据(EXIF / ICC / mtime / JFIF) | 意见 1 |
| B | 拼接缝归属核查(三图行列跳变 + 面板边界) | 意见 2(a) |
| C | ref-c 纯净度四查 + 左右边带 + 首末行 | 意见 2(a) |
| D | 方向性 falsify:仿射复算 + 逐像素 + 多滤波器反解 + 排除重编码 | 意见 1 |
| E | JPEG 量化敏感度(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)
| 闸 | 内容 | 状态 |
|---|---|---|
| 闸 1 · 建表闸(纯测量 / 文档,可逆) | 重测、复核、修订文档、补脚本 | ✅ 通过(本批全部工作在此闸内) |
| 闸 2 · 施工闸(产出画面与代码) | 阶段 0 的 S1–S12 | 🔒 关闭中 —— 等 §21 Q0 / Q1 / Q2 |
v3.0 原文的自相矛盾已修复:原文写「Q1 确认前不进入实施阶段」,却又「同批完成」S0 回填。现拆成两道闸 —— 建表闸的产物是数字,施工闸的产物是方向;前者即使被否也只需重跑脚本,后者押错就重演 440–490。
纪律核查:
src/ / functions/:零改动(本批无新文件)SKY-BASELINE-CT1.png / ref-c / annotated 三图 mtime 与尺寸均未变)| # | 问题 | 说明 |
|---|---|---|
| Q0 | CT-1 对 ref-c 的那个压缩 —— 是你当时要求的修改,还是一次无意的走样? | 本端已证实「压缩」这一事实,但无法从文件推断意图。新增选项 (C)「无意走样 / 不记得有此改动」。这是唯一的开关 —— 若选 (B),CT-2 方向本身错误,全部数字需翻转 |
| Q1 | CT-2(地平线 57±3%)是否取代 CT-1? | 建议 A |
| Q2 | 是否现在开工阶段 0? | 建议 A |
| Q6 | (新)五问在什么设备 / 亮度下作答? | 建议 A:就用现在这台,以后每轮同一台 |
| Q7 | (新)是否指定一方复跑验证脚本? | 建议 B:这是把本文件核心结论从 E1 升到 E0 的唯一途径 |
| 类型 | 路径 |
|---|---|
| 主交付 | docs/design/SKY-VISUAL-STANDARD-v3.md → v3.0c(1316 行 / 99.5 KB / 30 章 / 79 子节) |
| 同内容 HTML | docs/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) |