# WBV2-P1109-000: IO format module - task: `WBV2-P1109-000` - parent: `WBV2-P1108-000` - status: `in_progress` - gap: `workflow:module_io_format` - ownerFamily: `MEDIA` - targetImplementationClass: `LOCAL_BOUNDED` ## 目标 按功能模块验证 GLB/GLTF/OBJ/STL/PLY/USD/ALEMBIC 的 capability routing、runtime receipt、恢复状态机和 fail-closed 文件 UI;复用已有 M12 receipt,不把未验证格式声明为完成。 ## 输入与范围 - Main/API: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`, `blender-5.2.0/source/blender/web_engine/web_engine_api.cpp` - Format protocols: `web/protocol/asset-library-io.ts`, `web/protocol/io-format-capability-matrix.ts`, `web/protocol/io-format-receipt-binding.ts`, `web/protocol/io-format-runtime-receipt.ts`, `web/protocol/io-format-recovery.ts`, `web/protocol/io-format-ui-gate.ts` - GLB/non-mesh analysis: `web/protocol/glb-export.ts`, `web/protocol/glb-import.ts`, `web/protocol/nonmesh-export.ts` - Runtime: `web/app/src/engine-client/WebEngineClient.ts`, `web/app/src/workers/web-engine.worker.ts`, `web/app/src/app/App.tsx` - Existing receipts: `tests/golden/M12-05E/manifest.json`, `tests/golden/M12-07J/manifest.json` ## 验收 ```bash node tools/web/check-io-format-receipt-bindings.mjs node tools/web/check-io-format-runtime-receipts.mjs node tools/web/check-io-format-recovery.mjs node tools/web/check-io-format-ui-gate.mjs npm --prefix web run test:e2e -- --workers=1 tests/e2e/io-format-recovery.spec.ts tests/e2e/io-format-ui-gate.spec.ts npm --prefix web run typecheck ``` 必须记录 READY/UNVERIFIED 路由、取消/OOM/Worker restart、未知扩展 fail-closed、Chromium 和确定性恢复。`check-io-format-capability-matrix`、runtime inventory 的历史 hash 漂移以及 GLB 临时打包缺依赖继续作为后续修复项,不能通过改 hash 或放宽断言掩盖。 ## 交付与回滚 - Receipt: `tests/golden/WBV2-P1109-000/module-receipt.json` - Manifest: `tests/golden/WBV2-P1109-000/manifest.json` - Status: `docs/status/WBV2-P1109-000.md` - 回滚:恢复 P1108 manifest 为 queue parent,不改写 M12 历史 receipt。