# WBV2-P3-005 status - task: `WBV2-P3-005` - parent: `WBV2-P3-004` - parity: `ASSET.LIBRARY_OPERATIONS` - implementationClass: `LOCAL_BOUNDED` - status: `done` - fixture: `tests/files/web/generated/WBV2-P3-005-ASSET.LIBRARY_OPERATIONS.blend` ## Evidence - Blender desktop retains the external `WBV2P3005Library.blend` ownership and linked object as read-only; the source library contains the declared append Object/Mesh/Material/Image closure with a packed image. Desktop save/reopen is exact. - WASM/Main exposes the missing external library as `EXTERNAL_REQUIRED` without importing unavailable linked data, then appends the declared closure as local Main data in one revision. The appended packed image remains local and exact after save/reopen. - Library operation identity validates APPEND, LINK, and LOCAL_OVERRIDE ownership. Override freshness, linked reload, and missing-library transitions accept current generations and reject stale revision/hash inputs; stale append and closure collision do not change Main revision; malformed input does not mutate Main. ## Commands - `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P3-005.py -- tests/files/web/generated/WBV2-P3-005-ASSET.LIBRARY_OPERATIONS.blend` - `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/check-wbv2-p3-005-desktop.py -- tests/files/web/generated/WBV2-P3-005-ASSET.LIBRARY_OPERATIONS.blend tests/files/web/generated/WBV2P3005Library.blend tests/golden/WBV2-P3-005/library-desktop-report.json` - `node --check tools/web/check-generated-gap.mjs` - `npm --prefix web run test:generated-gap -- --task WBV2-P3-005` - `node tools/web/check-generated-gap.mjs --task WBV2-P3-005` - `node tools/web/check-task-context.mjs --task WBV2-P3-005 --write` ## Handoff - nextTask: `WBV2-P4-001` - queue mutation: allowed after manifest and parent hash validation