{ "schemaVersion": 1, "task": "M16-GAP-00214", "parentTask": "M16-GAP-00213", "status": "in_progress", "goal": "Make the same minimal fixture produce observable operator:anim.view_curve_in_graph_editor data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.", "scope": { "gap": "operator:anim.view_curve_in_graph_editor", "ownerFamily": "OPERATOR", "implementationClass": "LOCAL_EXACT" }, "commands": [ "build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00214.py -- tests/files/web/generated/M16-GAP-00214-operator-anim.view_curve_in_graph_editor.blend", "npm --prefix web run test:generated-gap -- --task M16-GAP-00214", "node tools/web/check-generated-gap.mjs --task M16-GAP-00214" ], "inputPaths": [], "inputSelection": { "schemaVersion": 1, "limits": { "maxFiles": 12, "evidenceBytes": 8192, "contextRemainingBytes": 1746, "contextRemainingTokens": 436 }, "source": { "bytes": 8158, "tokens": 2040 }, "selected": [], "excluded": [ { "path": "tests/files/web/generated/M16-GAP-00214-operator-anim.view_curve_in_graph_editor.blend", "bytes": 87074, "reason": "EVIDENCE_BYTE_BUDGET" }, { "path": "tools/web/generated/M16-GAP-00214.py", "bytes": 2640, "reason": "CONTEXT_REMAINING_SPACE" }, { "path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "bytes": 235367, "reason": "EVIDENCE_BYTE_BUDGET" }, { "path": "tools/web/check-generated-gap.mjs", "bytes": 549459, "reason": "EVIDENCE_BYTE_BUDGET" }, { "path": "tests/golden/M16-GAP-00214/", "bytes": null, "reason": "GENERATED_EVIDENCE_OUTPUT" }, { "path": "docs/status/M16-GAP-00214.md", "bytes": null, "reason": "GENERATED_EVIDENCE_OUTPUT" }, { "path": "tests/golden/M16-GAP-00214/manifest.json", "bytes": null, "reason": "GENERATED_EVIDENCE_OUTPUT" } ], "totals": { "files": 0, "bytes": 0, "tokens": 0 } }, "exitCriteria": [ "desktop fixture evidence exists", "WASM uses the same fixture", "comparator passes", "save/reopen preserves Main", "manifest hashes all artifacts" ], "nextTask": "M16-GAP-00215", "sourceDocuments": { "queue": "docs/EXECUTION_QUEUE.md", "taskCard": "docs/tasks/M16-GAP-00214.md", "taskIndex": "tests/golden/M15-03A/task-index.json", "parentManifest": "tests/golden/M16-GAP-00213/manifest.json", "parentStatus": "docs/status/M16-GAP-00213.md" }, "readPolicy": { "required": [ "docs/EXECUTION_QUEUE.md", "docs/tasks/M16-GAP-00214.md", "tests/golden/M16-GAP-00213/manifest.json", "docs/status/M16-GAP-00213.md" ], "machineOnly": [ "tests/golden/M15-03A/task-index.json", "tests/golden/M15-03A/task-catalog.jsonl" ], "optionalByNeed": [ "docs/WEB_BLENDER_MODELER_V1_SCOPE.md", "任务卡列出的精确协议/生产路径", "任务卡明确命名的长期计划小节" ], "forbiddenByDefault": [ "完整 CURRENT_EXECUTION_PLAN.md", "完整 PROJECT_STATUS_AND_NEXT_WORK.md", "全部 docs/status/*.md", "完整 parity/WBS 计划", "README 历史和 test-results/" ] }, "parent": { "manifest": { "schemaVersion": 1, "task": "M16-GAP-00213", "parentTask": "M16-GAP-00212", "status": "done", "nextTask": "M16-GAP-00214", "artifactCount": 16 }, "statusSummary": [ "# M16-GAP-00213 Status", "status: done", "task: anim.version_bone_hide_property operator LOCAL_EXACT slice", "updated: 2026-08-22 America/New_York", "scope:", "- The minimal fixture contains one selected armature object, one bone, an armature-data Action with `bones[\"WebGapVersionBoneHideBone\"].hide`, and an object Action with an anchor channel.", "- Desktop runs `ANIM_OT_version_bone_hide_property` (`poll=true`, `FINISHED`) and copies the hide F-curve into the object Action as `pose.bones[\"WebGapVersionBoneHideBone\"].hide`, retaining the armature source channel.", "- The existing Main reader exposes both Action channels and the armature data; no unrelated data-block, editor, or browser behavior was changed." ] }, "budgets": { "queueBytes": 4096, "taskBytes": 1844, "parentManifestBytes": 24576, "parentStatusBytes": 6144, "evidenceFiles": 12, "evidenceBytes": 8192, "contextTokens": 3500, "contextEnvelopeTokens": 1024, "taskLines": 38, "taskTokens": 461 }, "size": { "documents": [ { "path": "docs/EXECUTION_QUEUE.md", "bytes": 2168, "lines": 45, "tokens": 542 }, { "path": "docs/tasks/M16-GAP-00214.md", "bytes": 1844, "lines": 38, "tokens": 461 }, { "path": "tests/golden/M16-GAP-00213/manifest.json", "bytes": 2878, "lines": 30, "tokens": 720 }, { "path": "docs/status/M16-GAP-00213.md", "bytes": 1268, "lines": 20, "tokens": 317 } ], "sourceTokens": 2040, "evidenceFiles": 0, "evidenceBytes": 0, "evidenceTokens": 0, "totalTokens": 2040, "reservedEnvelopeTokens": 1024, "estimatedContextTokens": 3064, "serializedContextTokens": 727, "withinBudget": true } }