7.4 KiB
Web Blender 对标 Blender 5.2 的完整验证流程
1. 目的与结论口径
本流程验证 Web 项目是否按 Blender 5.2 源程序的声明路由、原生 WebEngine/WASM、Main/SceneIR、Worker、前端和 Chromium 生产入口工作。它不把“有一个按钮”“路由已分类”或“代表性烟测通过”误报为 Blender 全量等价。
最终报告必须同时给出两个数字:
| 口径 | 当前基线 | 通过条件 |
|---|---|---|
| Web 产品工作流 | 16 模块、34 功能、101 内部子模块 | 既有一次性烟测和定点修复全部通过 |
| Blender 源程序对标单元 | 3802 单元 | 每个单元有 source-backed 行为 receipt;只有路由分类不能通过 |
当前基线来自 dynamic-inventory.json 和 blender-feature-route-catalog.json:3802/3802 已分类,1025 项已有精确行为证据,2777 项仍为 UNVERIFIED。因此在 2777 项补齐前,报告的 sourceParityStatus 必须是 PARTIAL,不得写成全量 parity complete。
2. 强制规则
- 只使用 Chromium;不运行 Firefox/WebKit 作为本项目发布结论。
- 所有编辑必须通过 Blender 5.2 原生 WebEngine/WASM 和权威 Main;JS/Three.js 只能是 UI、视图和协议适配层。
- 复用已有 SHA-256 证据;一次性功能烟测和内部子模块烟测不得重跑。新增修复只重跑对应失败层。
- 源码检索只允许批次入口:
node tools/web/search-wbv2-batch-source.mjs --pattern <text> [--runtime <allowlisted-path>];全量清单只在明确审计命令中读取。 - 每个正例必须配套负例、无突变检查、undo/redo、save/reopen 或明确的 reader-only 证明。
- 任何环境缺失、构件 hash 漂移、Blender 版本/编译能力不匹配、测试失败都保持
BLOCKED,不得用跳过或假结果替代。
3. 验证阶段
A. 上下文和仓库一致性
node tools/web/print-task-context.mjs
node tools/web/check-task-context.mjs
node tools/web/check-context-governance.mjs
git diff --check
验证当前任务、parent manifest、输入预算和工作树证据没有漂移。
B. 源程序清单与路由对标
npm --prefix web run test:wbv2-inventory
node tools/web/check-source-dynamic-inventory.mjs
npm --prefix web run test:blender-rna-inventory
npm --prefix web run test:blender-operator-inventory
npm --prefix web run test:blender-family-inventory
npm --prefix web run test:blender-format-inventory
npm --prefix web run test:blender-editor-inventory
npm --prefix web run test:blender-core-inventory
npm --prefix web run test:blender-parity-map
npm --prefix web run test:blender-gap-audit
node tools/web/audit-wbv2-feature-completeness.mjs
node tools/web/check-wbv2-feature-smoke-plan.mjs
node tools/web/check-wbv2-submodule-smoke-plan.mjs
记录 unitCount、classifiedCount、unavailableUnits、verifiedUnits、unverifiedUnits、sourceTreeSha256。UNAVAILABLE=0 只表示入口分类完整,不表示逐单元行为通过。
C. 协议、静态质量、单元和原生构件
npm --prefix web run typecheck
npm --prefix web run lint
node tools/web/run-unit-tests.mjs
npm --prefix web run test:local-deps
node tools/web/check-web-engine-source-sync.mjs
node tools/web/check-deployment-contract.mjs
node tools/web/check-deployment-http.mjs
node tools/web/check-deployment-cache.mjs
source tools/web/emscripten-env.sh
cmake --build build_web_blender6 --target web_engine --parallel "$(nproc)"
构件必须绑定同一源码指纹,开发/公开/WASM 构件的 SHA-256 必须一致。使用 Blender 对标时记录:
BLENDER_BIN=build_blender_native/bin/blender \
npm --prefix web run release:v1-acceptance
若该 Blender 构建的能力与声明不符(例如 USD=False),必须取得具有对应能力的官方/可复现构件;在此之前 USD 对标项为 BLOCKED,不能伪造通过。
D. V1 声明功能逐项验收
npm --prefix web run release:v1-acceptance
npm --prefix web run test:v1-acceptance-coverage
npm --prefix web run test:v1-acceptance-evidence
npm --prefix web run test:v1-acceptance-release-binding
该阶段按 docs/status/parity-ledger.json 的 N-015 至 N-026 家族去重后执行 49 个唯一入口、50 个声明,覆盖非 Mesh、Grease Pencil、Paint、Physics、Lighting、Compositor、Sequencer、Tracking、Asset、Editor、Scripting、Release。
E. 全量 Chromium 功能验证
npm --prefix web run test:e2e -- --workers=1
npm --prefix web run test:browser
npm --prefix web run test:v1-user-loop
npm --prefix web run test:network-interruption
npm --prefix web run test:device-loss
npm --prefix web run test:oom-recovery
npm --prefix web run test:storage-quota
npm --prefix web run test:malicious-blends
npm --prefix web run test:asset-library
使用 google-chrome,当前实际收集 350 个测试;单元层当前实际收集 429 个测试。数量随源码演进,以运行器实际收集数为准。关注:主线程/Worker、WASM、OPFS、undo/redo、保存重开、取消、恢复、恶意输入和移动/桌面布局。
F. 性能、资源、发布和恢复
npm --prefix web run test:release-performance
npm --prefix web run test:geometry-10m-performance
npm --prefix web run test:texture-4k-performance
npm --prefix web run test:texture-8k-performance
npm --prefix web run test:simulation-cache-performance
npm --prefix web run test:long-media-performance
npm --prefix web run test:release-package
npm --prefix web run release:offline
npm --prefix web run test:binary-archive
npm --prefix web run test:source-archive
npm --prefix web run test:deployment-runbook
npm --prefix web run test:upgrade-runbook
npm --prefix web run test:rollback-runbook
npm --prefix web run test:operations-diagnostics
npm --prefix web run test:operations-rehearsal
npm --prefix web run test:rc-docs
npm --prefix web run release:rc-manifest
G. 发布站点验证
WEB_ORIGIN=https://49.232.250.35:58014 \
node tools/web/check-deployed-web-blender.mjs
至少验证:HTTPS 证书、三项 COOP/COEP/CORP、CSP、HTML/manifest/WASM/SVG MIME、强 ETag、WASM 206 Range、完整 WASM SHA-256、Chromium isSecureContext、crossOriginIsolated、WASM ready、打开真实 .blend、执行一次原生 Add CUBE Main mutation、保存/重开和无控制台/网络错误。
4. 失败处理
sourceParityStatus=PARTIAL:保留 2777 个未验证单元清单,生成下一批 source-backed evidence 任务。- 单个功能失败:只重跑其 family 和直接依赖,不重跑已通过的一次性烟测。
- 构件 hash 漂移:停止浏览器验证,重新 build、同步 receipt、再继续。
- Blender 对标环境缺能力:记录
BLOCKED及可执行文件/归档 SHA-256,禁止降级为“通过”。 - 线上部署失败:保留当前 release,检查回滚目录,不删除浏览器数据或旧 release。
5. 机器报告
执行器:tools/web/run-web-source-parity-validation.mjs。
node tools/web/run-web-source-parity-validation.mjs
报告:tests/golden/WBV2/full-source-parity-validation-report.json,每个阶段记录命令、退出码、耗时、日志路径和 SHA-256,并写出:
sourceParityStatus: READY | PARTIAL | BLOCKED
webProductStatus: READY | BLOCKED
releaseStatus: READY | BLOCKED
只有 sourceParityStatus=READY、webProductStatus=READY、releaseStatus=READY 且报告自身 hash 已绑定,才允许声明“按源程序全量对标验证完成”。