# 求解器验证书 Web 这里版本化管理“求解器智能体团队验证书”的 Web 源码与构建工具。 本目录负责 Web 应用、交互行为、构建契约、静态验证器和部署验证脚本。场景包、运行回执和原始截图继续作为外部构建输入,避免让 DesireCore 核心 Agent 的 bootstrap 体积增加数百 MB。 ## 图片查看器 截图预览支持: - 适应窗口与 1:1 原始像素模式; - 有上下限的缩放按钮,以及 `+` / `-` / `0` / `1` 键盘快捷键(移动端也能达到截图的 1:1 原始像素); - `Ctrl`/`Command` + 滚轮或触控板捏合,以指针位置为中心缩放; - 双击缩放、鼠标/单指拖动平移; - 双指触控捏合缩放; - 原图下载入口和可访问的实时缩放状态。 每次打开新图片都从“适应窗口”开始;关闭后重新打开不会保留旧的缩放或平移状态。 ## 构建 构建输入目录需要包含 `scenario-packs/`、`evidence/`,产物默认写到 `report-web/dist/`。Markdown、公式和图片处理依赖从 DesireCore 应用 checkout 解析。 公网构建还必须提供 `evidence/public-release-attestation.json`。它按 [Draft-07 Schema](./public-release-attestation.schema.json) 绑定全部公开消息与 174 张截图的内容根哈希,并明确记录审查方法、证据归属和公开发布结论。消息或截图发生任何变化,旧证明都会失效,构建直接失败。 站点只消费 `evidence/screenshots/public-screenshot-plan.json`。该派生计划通过每张图的 `sourceSha256` 将公开脱敏图绑定到不可变原始证据;含本地路径的原始截图绝不能直接作为公网原图。 ```bash export SOLVER_REPORT_INPUT_ROOT=/absolute/path/to/scenario-book export DESIRECORE_APP_ROOT=/absolute/path/to/desirecore node scripts/build-report-web.mjs node scripts/validate-report-web.mjs ``` 可选环境变量: - `SOLVER_REPORT_OUTPUT_ROOT`:覆盖生成路径;为避免递归清理误伤,它必须位于 `/report-web/` 的子目录内,且不得与 Agent 源码或 DesireCore 应用目录重叠。 - `LATEST_PLATFORM_REGRESSION_FILE`:覆盖最新回归摘要路径。 - `SOLVER_REPORT_PUBLIC_RELEASE_ATTESTATION_FILE`:覆盖公开发布证明路径。 - `SOLVER_REPORT_VALIDATION_FILE`:覆盖静态验证结果路径。 - `REPORT_BASE_URL`:`validate-deployed-report.mjs` 使用的公网地址。 - `SOLVER_REPORT_DEPLOYMENT_VALIDATION_FILE`:覆盖部署验证结果路径。 源码契约测试:`node --test tests/*.test.mjs`。 签署公开发布证明前,必须以可读分辨率逐张检查全部原始截图。联系表只用于核对场景 ID、截图哈希和覆盖范围,不能替代小字凭据审查。在 macOS 上还要运行原图级 Apple Vision OCR 门禁,作为第二条独立检查路径: ```bash export SOLVER_REPORT_SCREENSHOT_OCR_FILE=/private/tmp/solver-report-ocr.json export SOLVER_REPORT_SCREENSHOT_OCR_VALIDATION_FILE=/private/tmp/solver-report-ocr-validation.json npm run privacy:ocr ``` 验证器要求 174 张计划内原图按顺序全部出现,重新计算每张源图哈希,并对识别文字复用 fail-closed 敏感信息策略。OCR 与全分辨率人工视觉审查必须同时通过后,才能更新公开发布证明;审查产物不会进入站点或 Agent bootstrap。 ## 部署边界 构建器只允许公开 provenance 白名单字段,并会拒绝本机路径、邮箱、私有 URL、常见密钥和具名凭据。部署验证同时要求 `build.json#gates.publicReleasePrivacy=pass` 且证明哈希与 manifest 一致。 每次生成新的不可变 release,切换前逐项验证 `integrity.json`,然后原子更新服务端 `current` 软链接。禁止覆盖既有 release,也禁止把历史证据重新标记为新版平台产物。