# WBV2-P1142-001: verify FCurveSample reader - task: WBV2-P1142-001 - parent: WBV2-P1142-000 - status: in_progress - gap: workflow:fcurve_sample_reader - ownerFamily: ANIMATION - targetImplementationClass: LOCAL_EXACT - moduleId: FCURVE_SAMPLE_READER - Implementation entrypoint: `node tools/web/run-wbv2-module-task.mjs --task WBV2-P1142-001 --write` ## 目标 验证 Blender Main 的 FCurveSample sampled 数据在 Chromium recovery/save-reopen 中保持一致。 ## 输入与范围 - `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp` - `web/protocol/scene-ir.ts` - `web/app/src/workers/web-engine.worker.ts` - `web/app/src/engine-client/WebEngineClient.ts` - `web/tests/e2e/wbv2-fcurve-sample-production.spec.ts` - `web/app/src/vendor/blender/web_engine.wasm` - RNA: `blender-5.2.0/source/blender/makesrna/intern/rna_fcurve.cc` (FCurveSample) - Fixture: `tests/files/web/generated/M16-GAP-00161-action-fcurve-samples.blend` - Production test: `web/tests/e2e/wbv2-fcurve-sample-production.spec.ts` ## 验收 - Positive: FCurveSample Main reader exposes sampled source and values, four native FPoint samples remain ordered, save/reopen preserves sampled data - Negative: malformed blend is rejected without Main mutation, missing sampled payload is fail-closed, non-finite sampled value is not synthesized - Recovery: undo, redo, save/reopen, worker termination and deterministic sampled state - Commands: - `source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm` - `npm --prefix web run typecheck` - `npm --prefix web run build` - `WEB_TEST_PORT=5365 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-fcurve-sample-production.spec.ts` - JS simulation is forbidden; all behavior must come from Blender Main/WASM. ## 交付与回滚 - Receipt: `tests/golden/WBV2-P1142-001/module-receipt.json`; Manifest: `tests/golden/WBV2-P1142-001/manifest.json`; Status: `docs/status/WBV2-P1142-001.md`.