# Web Blender 内部子模块一次性烟测计划 ## 范围 本计划承接 34 个产品功能烟测,继续覆盖功能内部的命令和运行时子模块。唯一执行清单是 [`tests/golden/WBV2/internal-submodule-smoke-plan.json`](../tests/golden/WBV2/internal-submodule-smoke-plan.json):12 个业务模块、111 条功能绑定归并为 101 个唯一子模块,其中 72 个编辑命令、22 个 JSON 路由、7 个运行时路由。 每个子模块拥有唯一 `smokeId`,固定 `runOnce=true`、`maxAttempts=1`。计划禁止重复 ID、自动重试和全量二次执行;已经通过的子模块只能复用现有证据。 ## 执行顺序 1. 复用 34 个产品功能的一次性烟测结果,不重启完整浏览器矩阵。 2. 加载一次当前 source-matched WebEngine 构件和最小 `.blend` fixture。 3. 对 72 个编辑命令和 22 个 JSON 路由各发送一次最小请求;成功或按命令自身错误关闭均表示入口已识别,通用 `not implemented` 表示失败。 4. 对 7 个运行时路由检查其生产入口,不重复调用浏览器或服务。 5. 将失败项移入独立定点修复验证;原始报告保持只读,已通过子模块不重跑。 6. 用闭环 checker 核对唯一性、尝试次数、失败集合、修复证据、构件摘要和最终完成数。 ## 一次性约束 - 计划检查:`node tools/web/run-wbv2-submodule-smoke.mjs` - 首次执行入口:`node tools/web/run-wbv2-submodule-smoke.mjs --execute` - 已有报告时,执行入口必须拒绝再次运行。 - 中断只允许从尚未尝试的用例继续;checkpoint 中 `attempts=1` 的用例必须跳过。 - 定点修复验证只处理首次失败集合,不得转化为第二次全量烟测。 - 完整 API、性能、安全、跨浏览器和发布矩阵不在本次烟测范围内。 ## 执行结果 首次执行共 101 次且无重试:92 项通过,9 项进入定点处理。问题包括 C++ 异常捕获构建选项、Worker NLA 适配识别、相机/渲染外层分发遗漏、五个物理高层命令缺口。 定点处理首次验证解决 8 项;`addModifier` 进一步暴露 UI 使用 RNA 标识 `SUBSURF`、原生入口只接受内部标识 `Subdivision` 的契约不一致。原生入口改为复用快照序列化的同一类型映射后,单独一次回归通过。最终闭环为 101/101,原始烟测次数仍为 101,烟测重试为 0,未解决项为 0。 现有 NLA 生产证据 [`tests/golden/WBV2-P1112-000/nla-production.json`](../tests/golden/WBV2-P1112-000/nla-production.json) 证明 `moveNLAStrip` 经 Worker 适配后支持移动、撤销、重做、保存重开和求值;本轮直接复用该证据,没有重复执行浏览器烟测。 ## 证据 - 首次计划:[`internal-submodule-smoke-plan.json`](../tests/golden/WBV2/internal-submodule-smoke-plan.json) - 首次报告:[`internal-submodule-smoke-report.json`](../tests/golden/WBV2/internal-submodule-smoke-report.json) - 定点修复:[`internal-submodule-smoke-fix-report.json`](../tests/golden/WBV2/internal-submodule-smoke-fix-report.json) - 单点回归:[`internal-submodule-smoke-regression-report.json`](../tests/golden/WBV2/internal-submodule-smoke-regression-report.json) - 闭环 manifest:[`internal-submodule-smoke-manifest.json`](../tests/golden/WBV2/internal-submodule-smoke-manifest.json) 闭环检查命令: ```bash node tools/web/check-wbv2-submodule-smoke-plan.mjs ```