# WBV2-P3-002 status - task: `WBV2-P3-002` - parent: `WBV2-P3-001` - parity: `ANIMATION.TRS_ACTION` - implementationClass: `LOCAL_EXACT` - status: `done` - fixture: `tests/files/web/generated/WBV2-P3-002-ANIMATION.TRS_ACTION.blend` ## Evidence - Blender desktop and WASM/Main expose the same action identity, target object, nine TRS channels, sampled values, frames and interpolation handles. - Main inserts a location key at frame 25 and changes one F-Curve to LINEAR; a stale frame command is rejected without changing the revision. - Save/reopen preserves the edited action exactly, while malformed input is rejected without replacing the current snapshot. ## Commands - `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P3-002.py -- tests/files/web/generated/WBV2-P3-002-ANIMATION.TRS_ACTION.blend` - `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/check-wbv2-p3-002-desktop.py -- tests/files/web/generated/WBV2-P3-002-ANIMATION.TRS_ACTION.blend tests/golden/WBV2-P3-002/animation-desktop-report.json` - `node --check tools/web/check-generated-gap.mjs` - `npm --prefix web run test:generated-gap -- --task WBV2-P3-002` - `node tools/web/check-generated-gap.mjs --task WBV2-P3-002` - `node tools/web/check-task-context.mjs --task WBV2-P3-002 --write` ## Handoff - nextTask: `WBV2-P3-003` - queue mutation: allowed after manifest and parent hash validation