# WBV2-P3-004 status - task: `WBV2-P3-004` - parent: `WBV2-P3-003` - parity: `IO.GLB_ROUNDTRIP` - implementationClass: `LOCAL_EXACT` - status: `done` - fixture: `tests/files/web/generated/WBV2-P3-004-IO.GLB_ROUNDTRIP.blend` ## Evidence - Blender desktop and WASM/Main expose the same bounded GLB roundtrip graph: one mesh with 8 vertices, 12 triangles, one UV layer, one morph target, one two-bone skin, one packed image, and one animation. - Export/import preserves mesh, skin, morph, image, and animation semantics exactly; the emitted GLB is 7,540 bytes with `glTF` magic. - Malformed GLB, external image URI, and over-budget input are rejected by the bounded importer. Blender save/reopen remains exact. ## Commands - `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P3-004.py -- tests/files/web/generated/WBV2-P3-004-IO.GLB_ROUNDTRIP.blend` - `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/check-wbv2-p3-004-desktop.py -- tests/files/web/generated/WBV2-P3-004-IO.GLB_ROUNDTRIP.blend tests/golden/WBV2-P3-004/glb-desktop-report.json` - `node --check tools/web/check-generated-gap.mjs` - `npm --prefix web run test:generated-gap -- --task WBV2-P3-004` - `node tools/web/check-generated-gap.mjs --task WBV2-P3-004` - `node tools/web/check-task-context.mjs --task WBV2-P3-004 --write` ## Handoff - nextTask: `WBV2-P3-005` - queue mutation: allowed after manifest and parent hash validation