# UtiliVera Image 0.8.1 独立审核报告（Round 2）

审核日期：2026-09-04  
审核角色：与 Round 1 相同的独立高级 Windows 桌面软件审核师（未参与构建或整改）  
审核范围：仅复核 Round 1 唯一 P1 的整改，并确认新精确 EXE/Inno、功能/UI、压力、安装、10 语言与真实升级没有回归  

## 1. 最终判定

**PASS — 97.2 / 100。**

- P0：0
- P1：0
- P2：3
- Round 1 的唯一 P1：**CLOSED**
- Top 5 增量门禁：**PASS**

Round 1 发现的 pyogrio 过滤误伤已被完整修复。审核员独立递归比较 0.8.0 与新 0.8.1 归档，确认原先误删的 **78 个 GDAL CSV 和 11 个 CMake 文件共 89/89 全部恢复**，禁止的 `.c/.pyx/.pxd/.pxi` 为 0；剩余 300 个被删条目全部属于 pydicom/pyogrio/Shapely 测试夹具、真正源码扩展、旧 pillow-avif 组件或根目录重复 DLL，没有新的计划外运行时删除。

新的冻结 EXE 在 EPSG:2227 State Plane Shapefile 黑盒中保持几何、字段、sidecar 与 CRS 语义；19 项 release evidence、全功能矩阵、UI、1,000 文件压力、安装、10 种安装语言和真实 0.8.0→0.8.1 升级均绑定新候选并通过。由此可以确认 0.8.1 是相对已审 0.8.0 的受控打包/体积增量，没有发现功能或 UI 退步，并可继承 0.8.0 的 Top 5 比较结论。

## 2. 本报告绑定的精确候选

| 对象 | 字节数 | SHA-256 | 版本 | Authenticode |
|---|---:|---|---|---|
| `dist-0.8.1-candidate/UtiliVeraImage.exe` | **106,376,590** | `886552BDD401C5DCA3E4531D7F4AEDB66514475991717AA72C4D88EF81A30D28` | File/Product `0.8.1` | `NotSigned` |
| `dist/installer/UtiliVeraImage-Setup-0.8.1-Windows-x64.exe` | **107,149,248** | `41819264CD8D64C28957E46353146B1665D87CF056CF97E95CB32F4E8F55B92A` | File `0.8.1.0` / Product `0.8.1` | `NotSigned` |

审核员独立重算字节数、SHA-256、版本资源和签名状态，全部与本轮委托身份、manifest 和 `SHA256SUMS.txt` 一致。

对照 0.8.0：

- EXE 减少 16,569,229 bytes（13.48%）
- Inno 减少 16,417,277 bytes（13.29%）
- 新 Inno 相对内嵌 EXE 的封装开销为 772,658 bytes（约 0.73%）

体积改善真实且对 30 天 1,000 有效下载目标有利。

## 3. Round 1 P1 关闭证据

### P1-01：pyogrio 过滤误删 GDAL 运行时 CSV — CLOSED

`UtiliVeraImage.spec` 已从不安全的任意子串判断：

```python
'.c' in source_path
```

改为真实扩展名判断：

```python
Path(entry[0]).suffix.lower() not in {'.c', '.pyx', '.pxd', '.pxi'}
```

审核员独立执行当前归档审计并使用 `pyi-archive_viewer -r -b` 递归进入 PYZ/PKG 复核，结果为：

| 复核项 | 独立结果 |
|---|---:|
| CArchive 成员 | 1,936 |
| 非空递归归档条目 | 2,725 |
| pyogrio `.csv` | 78 |
| pyogrio `.cmake` | 11 |
| 必需 pyogrio CSV/CMake | 89 |
| 已归档 pyogrio CSV/CMake | **89/89** |
| 缺失运行时 CSV/CMake | **0** |
| `.c/.pyx/.pxd/.pxi` | **0** |
| 旧 `pillow_avif` 代码/本地库/dist-info | 0 |
| 根目录重复 `libredwg-0.dll` / `jpeg62.dll` | 0 |
| helper 旁必需的上述 DLL | 2/2 |
| pydicom test fixtures | 0 |

与精确 0.8.0 递归归档比较：旧版 3,022 条，新版 2,725 条，删除 300、增加 3。删除项经审核员重新分类后全部属于计划范围；Round 1 的 89 个计划外删除已归零。

### EPSG:2227 黑盒

精确新 EXE 的 CAD/GIS 矩阵为 19/19 PASS，其中 `roads-b.shp` 独立记录：

- 期望/观察几何：`LineString / LineString`
- 期望/观察 features：`1 / 1`
- 期望/观察 CRS：`EPSG:2227 / EPSG:2227`
- 字段：`Name`
- sidecars：`shx/dbf/prj`
- PNG 1,400×1,100、PDF 1 page，结构和语义门禁 PASS

这直接覆盖了 Round 1 要求的非默认 State Plane CRS 路径。

## 4. 新候选证据完整性与独立复跑

`outputs/image-081-size-optimization-evidence-manifest.json`：7,732 bytes，SHA-256 `291B21FDA12495E09F8A9C0728053CE765BB29B73E4E2A7491D4C6DD41EC7CAB`。

- 19 项证据：19/19 存在，字节数和 SHA-256 全匹配
- 13 项变更源码：13/13 存在，字节数和 SHA-256 全匹配
- 32 个 UI record 对应的截图/sidecar：64/64 哈希匹配

审核员独立重跑当前源码测试：

- **366 passed、15 skipped、3 warnings，33.28 秒**
- 14 个 Office skip 由精确 EXE 的 Office 14/14 黑盒覆盖；1 个是既有授权 RAW 外部夹具延后项

新精确 EXE 的冻结结果：

| 门禁 | 结果 |
|---|---|
| 输出格式 | 75/75，含 AVIF 与损坏输入受控拒绝 |
| 常规输入 | 18/18 |
| CAD/GIS | 19/19，含 EPSG:2227 |
| CAD loading | 17/17 |
| CAD pack | 6/6 |
| Office/Visio pack | 14/14 |
| RECOIL | 150/150 |
| Advanced / structure / TIFF / ICO | 全部通过 |
| 压力 | 1,000/1,000，0 `.uvtmp`，10 个 album 各 100，44.26 秒 |
| UI | 32/32 records；10 代表语言、RTL、明暗主题、三视口、100%–200% 应用缩放 |

审核员另以精确新 EXE 独立执行 PNG→AVIF：退出 0，生成 7,007-byte AVIF，独立解码为 `AVIF / RGB / 1000×520 / 1 frame`。

## 5. 安装、10 语言和真实升级

### 5.1 审核员独立安装生命周期

审核员对精确 `418192…B92A` Inno 候选另做新的静默安装/卸载：

- `/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-` 安装退出 0
- 安装后 EXE 为 106,376,590 bytes，SHA-256 精确为 `886552…D28`
- `THIRD-PARTY-NOTICES.md` 存在
- 静默卸载退出 0
- 安装目录和应用载荷移除，HKCU 卸载项为 0

### 5.2 冻结证据复核

- 安装/same-version repair/实际 CLI 转换/卸载均退出 0；安装和 repair 后载荷等于冻结 EXE
- 10 种语言均为安装 0、卸载 0，且每次安装载荷 SHA-256 均为 `886552…D28`
- 审核员确认 20/20 语言安装/卸载日志存在并包含成功结束标记
- 真实 0.8.0→0.8.1：先安装 `11C652…90D2C`，再升级到 `886552…D28`；用户数据 marker 保留；升级后 AVIF CLI 退出 0并产生 1 个文件；卸载退出 0且载荷删除
- 当前普通安装、语言和真实升级 JSON 全部绑定最终 Inno `107,149,248 / 418192…B92A`

安装器实际内嵌载荷与经审 EXE 一致，不存在“验证 A、打包 B”。

## 6. P0 / P1 / P2

### P0

无。

### P1

无。Round 1 的 P1-01 已按原验收条件关闭，未发现新 P1。

### P2-01：许可清单仍过度列出已删除的 pillow-avif-plugin — OPEN

递归归档确认候选不含该插件代码、本地库或 dist-info，但 notices、license index、收集脚本和归档许可文件仍把它列为 bundled component。

**验收标准：**从精确运行时组件清单删除该组件，或明确标为“仅附带历史许可文本、不含代码”；用机器可读组件/版本/许可/归档路径映射做一致性门禁。

### P2-02：缺少冻结 EXE/Inno 重复构建稳定性证据 — OPEN

当前证据锁定一个最终 EXE 和 Inno，但没有 3/3 或 10/10 唯一哈希/可解释差异记录。

**验收标准：**锁定构建工具和输入，在同一干净输入至少重建 3 次；记录 EXE/Inno bytes/SHA。若工具包含不可避免时间字段，证明去除该字段后的归档成员和载荷根哈希一致。

### P2-03：安装平台、交互语言、失败恢复和日志哈希矩阵可加强 — OPEN

当前实证集中于 Windows 10 build 19045、x64、当前用户静默路径；尚无 Windows 11、SYSTEM `/ALLUSERS`、10 语言交互页面、自动系统语言、运行中升级/空间不足中断回滚以及所有系统对象的完整残留白名单。当前 20 份语言日志和普通/升级日志虽存在，但最终 JSON 未逐份记录 bytes/SHA-256。

**验收标准：**在干净 Windows 10/11 加入 per-user 与 all-users/SYSTEM 生命周期、失败恢复、完整残留白名单和 10 语言交互检查；把全部日志 bytes/SHA 纳入最终 manifest。

## 7. Top 5 结论

0.8.0 独立最终审核已以 97.1/100、P0=0、P1=0 证明其在 Windows 批量图片转换任务域达到并总体超过 XnConvert/NConvert、reaConverter Pro、FastStone Photo Resizer、Caesium/CLT 与 IrfanView + Plugins。

本轮确认 0.8.1 的代码变化只影响版本、依赖初始化和打包组成；所有核心功能和 UI 黑盒均以新 SHA 复跑，Round 1 发现的唯一计划外删除也已清零。同时，0.8.1 将 EXE/Inno 体积降低约 13.5%，并补齐真实 Inno、10 语言静默安装和真实 0.8.0→0.8.1 升级。因此本候选可以继承并小幅提高基线评分至 **97.2/100**，Top 5 增量结论为 PASS。

## 8. 未签名公开发布边界

依当前 `AGENTS.md`，未签名不是本轮软件审核阻断项。正式激活下载前仍必须：

1. 每个直接下载动作旁披露 unsigned、Windows Unknown publisher/信誉警告；
2. 提供精确 Inno SHA-256 `41819264CD8D64C28957E46353146B1665D87CF056CF97E95CB32F4E8F55B92A`、`Get-FileHash` 方法及官网验证指南；
3. 只从 utilivera.com HTTPS 稳定/版本化 URL 分发，线上 bytes/SHA 必须与本报告候选一致；
4. 公开应用与安装审核，不得声称已由受信任发布者签名；
5. 日后签名会改变内外层身份，须重跑安装、升级、哈希与独立发布检查。

这些是网站/发布激活门槛，不是当前内部软件候选的 P1；本报告不替代网站上线审核。

## 9. 独立签署

**Round 2 最终判定：PASS；97.2 / 100；P0=0，P1=0，P2=3。**

本签署只绑定第 2 节的精确 EXE 与 Inno。任何二进制、安装器、归档组成或签名变化均使本签署失效并要求重新复核。
