# WBV2-P1132-001: verify Curve handle module - task: WBV2-P1132-001 - parent: WBV2-P1132-000 - status: in_progress - gap: workflow:curve_handle_gizmo - ownerFamily: EDITOR - targetImplementationClass: LOCAL_EXACT - moduleId: CURVE_HANDLE_GIZMO - Implementation entrypoint: `node tools/web/run-wbv2-module-task.mjs --task WBV2-P1132-001 --write` ## 目标 Verify the source-backed Curve handle gizmo position transaction through Blender Main, protocol, Worker, renderer preview and frontend paths. ## 输入与范围 - Source paths: - `blender-5.2.0/source/blender/web_engine/web_engine_api.cpp` - `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp` - `blender-5.2.0/source/blender/web_engine/web_engine_main_state.h` - `web/protocol/nonmesh-interaction.ts` - `web/app/src/workers/nonmesh-interaction-test.worker.ts` - `web/app/src/app/App.tsx` - `web/app/src/three-adapter/nonmesh.ts` - `web/app/src/three-adapter/viewport.ts` - `web/app/src/three-adapter/offscreen-viewport.ts` - `web/tests/e2e/wbv2-curve-handle-production.spec.ts` - Reused receipts: - `tests/golden/WBV2-P1101-000/manifest.json` + `tests/golden/WBV2-P1101-000/module-receipt.json` - Production test: `web/tests/e2e/wbv2-curve-handle-production.spec.ts` ## 验收 - Positive: Curve handle position Main mutation, local handle gizmo preview, save/reopen preserves handle state - Negative: invalid handle identity, stale base revision, malformed handle position - Recovery: undo, redo, save/reopen, Worker termination and deterministic preview - Commands: - `npm --prefix web run typecheck` - `npm --prefix web run build` - `WEB_TEST_PORT=5348 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-curve-handle-production.spec.ts` - malformed input, missing source, hash drift or Chromium failure remains in_progress and does not advance the queue. ## 交付与回滚 - Receipt: `tests/golden/WBV2-P1132-001/module-receipt.json` - Manifest: `tests/golden/WBV2-P1132-001/manifest.json` - Status: `docs/status/WBV2-P1132-001.md` - Rollback: restore WBV2-P1132-000 as the queue parent and leave this module in_progress.