{ "schemaVersion": 1, "task": "WBV2-P1424-001", "job": "ARMATURE-EDITOR-COVERAGE", "parentSha256": "46a3ce65d56747da8684af422a1a94540612c767a6dcc42da7939930731399d5", "acceptance": "pending independent local validation", "result": { "status": "ready", "summary": "Selected-bone authoring with shared native transaction recovery", "workflow": "Edit bones, roll, mirror state, parenting and targeted pose constraints; retain the selected armature and verify each route through desktop Main readback, rejection, history, persistence and replay", "sourceUnits": [ "web-command:armatureEditOperations", "web-command:setBoneRoll", "web-command:setBoneSymmetry", "web-command:setBoneParenting", "web-command:setPoseConstraint" ], "routeIds": [ "web-command:armatureEditOperations", "web-command:setBoneRoll", "web-command:setBoneSymmetry", "web-command:setBoneParenting", "web-command:setPoseConstraint" ], "sourceReferences": [ "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", "blender-5.2.0/source/blender/blenkernel/intern/armature.cc", "blender-5.2.0/source/blender/blenkernel/BKE_armature.hh" ], "changedFiles": [ "web/tests/e2e/armature-editor-coverage-ui-production.spec.ts", "web/tests/fixtures/armature-authoring-main-snapshots.py", "my-tools/prepare_wbv2_armature_workflow.py", "web/app/src/app/App.tsx", "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" ], "dependencies": [ ".emscripten-web", "blender-5.2.0/source/blender/blenkernel/BKE_armature.hh", "blender-5.2.0/source/blender/blenkernel/intern/armature.cc", "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", "build_web_blender6/CMakeCache.txt", "my-tools/build_local_webengine.py", "my-tools/prepare_wbv2_armature_workflow.py", "tests/files/web/pose_constraint_scene.blend", "tools/web/incremental-web-build.mjs", "tools/web/sync-web-engine-runtime.mjs", "web/app/src/app/App.tsx", "web/app/src/engine-client/WebEngineClient.ts", "web/app/src/workers/web-engine.worker.ts", "web/app/vite.config.ts", "web/package.json", "web/playwright.config.ts", "web/protocol/scene-ir.ts", "web/protocol/web-engine.ts", "web/tests/e2e/armature-editor-coverage-ui-production.spec.ts", "web/tests/fixtures/armature-authoring-main-snapshots.py", "web/tests/fixtures/native-ui-workflow.ts", "web/tsconfig.json" ], "artifacts": [ "build_web_blender6/bin/web_engine.wasm", "build_web_blender6/bin/web_engine.js", "build_blender_native/bin/blender" ], "checks": [ { "id": "wasm-source-build", "argv": [ "python3", "my-tools/build_local_webengine.py" ], "cwd": ".", "kinds": [ "source_build" ], "timeoutSeconds": 1200, "continueOnFailure": true }, { "id": "web-build", "argv": [ "node", "tools/web/incremental-web-build.mjs" ], "cwd": ".", "kinds": [ "typecheck" ], "dependsOn": [ "wasm-source-build" ], "timeoutSeconds": 300, "continueOnFailure": true }, { "id": "authoring-lint", "argv": [ "node", "node_modules/eslint/bin/eslint.js", "app/src/app/App.tsx", "tests/e2e/armature-editor-coverage-ui-production.spec.ts" ], "cwd": "web", "kinds": [ "lint" ], "timeoutSeconds": 90, "continueOnFailure": true }, { "id": "chromium-panel", "argv": [ "env", "WEB_TEST_PORT=5378", "node", "node_modules/@playwright/test/cli.js", "test", "--config", "playwright.config.ts", "tests/e2e/armature-editor-coverage-ui-production.spec.ts", "--grep", "armature panel ", "--workers=1", "--max-failures=1" ], "cwd": "web", "kinds": [ "chromium" ], "dependsOn": [ "wasm-source-build", "web-build", "authoring-lint" ], "timeoutSeconds": 75, "continueOnFailure": true }, { "id": "chromium-edit", "argv": [ "env", "WEB_TEST_PORT=5378", "node", "node_modules/@playwright/test/cli.js", "test", "--config", "playwright.config.ts", "tests/e2e/armature-editor-coverage-ui-production.spec.ts", "--grep", "armature edit ", "--workers=1", "--max-failures=1" ], "cwd": "web", "kinds": [ "chromium", "positive", "negative", "undo_redo", "save_reopen", "determinism" ], "dependsOn": [ "wasm-source-build", "web-build", "authoring-lint" ], "timeoutSeconds": 75, "continueOnFailure": true }, { "id": "chromium-roll", "argv": [ "env", "WEB_TEST_PORT=5378", "node", "node_modules/@playwright/test/cli.js", "test", "--config", "playwright.config.ts", "tests/e2e/armature-editor-coverage-ui-production.spec.ts", "--grep", "armature roll ", "--workers=1", "--max-failures=1" ], "cwd": "web", "kinds": [ "chromium", "positive", "negative", "undo_redo", "save_reopen", "determinism" ], "dependsOn": [ "wasm-source-build", "web-build", "authoring-lint" ], "timeoutSeconds": 75, "continueOnFailure": true }, { "id": "chromium-symmetry", "argv": [ "env", "WEB_TEST_PORT=5378", "node", "node_modules/@playwright/test/cli.js", "test", "--config", "playwright.config.ts", "tests/e2e/armature-editor-coverage-ui-production.spec.ts", "--grep", "armature symmetry ", "--workers=1", "--max-failures=1" ], "cwd": "web", "kinds": [ "chromium", "positive", "negative", "undo_redo", "save_reopen", "determinism" ], "dependsOn": [ "wasm-source-build", "web-build", "authoring-lint" ], "timeoutSeconds": 75, "continueOnFailure": true }, { "id": "chromium-parent", "argv": [ "env", "WEB_TEST_PORT=5378", "node", "node_modules/@playwright/test/cli.js", "test", "--config", "playwright.config.ts", "tests/e2e/armature-editor-coverage-ui-production.spec.ts", "--grep", "armature parent ", "--workers=1", "--max-failures=1" ], "cwd": "web", "kinds": [ "chromium", "positive", "negative", "undo_redo", "save_reopen", "determinism" ], "dependsOn": [ "wasm-source-build", "web-build", "authoring-lint" ], "timeoutSeconds": 75, "continueOnFailure": true }, { "id": "chromium-constraint", "argv": [ "env", "WEB_TEST_PORT=5378", "node", "node_modules/@playwright/test/cli.js", "test", "--config", "playwright.config.ts", "tests/e2e/armature-editor-coverage-ui-production.spec.ts", "--grep", "armature constraint ", "--workers=1", "--max-failures=1" ], "cwd": "web", "kinds": [ "chromium", "positive", "negative", "undo_redo", "save_reopen", "determinism" ], "dependsOn": [ "wasm-source-build", "web-build", "authoring-lint" ], "timeoutSeconds": 75, "continueOnFailure": true } ], "cases": [ { "id": "armature-edit-positive", "kind": "positive", "checkId": "chromium-edit", "receipt": "unallocated/edit-positive.json", "unitIds": [ "web-command:armatureEditOperations" ] }, { "id": "armature-edit-negative", "kind": "negative", "checkId": "chromium-edit", "receipt": "unallocated/edit-negative.json", "unitIds": [ "web-command:armatureEditOperations" ] }, { "id": "armature-edit-undo_redo", "kind": "undo_redo", "checkId": "chromium-edit", "receipt": "unallocated/edit-undo_redo.json", "unitIds": [ "web-command:armatureEditOperations" ] }, { "id": "armature-edit-save_reopen", "kind": "save_reopen", "checkId": "chromium-edit", "receipt": "unallocated/edit-save_reopen.json", "unitIds": [ "web-command:armatureEditOperations" ] }, { "id": "armature-edit-determinism", "kind": "determinism", "checkId": "chromium-edit", "receipt": "unallocated/edit-determinism.json", "unitIds": [ "web-command:armatureEditOperations" ] }, { "id": "armature-roll-positive", "kind": "positive", "checkId": "chromium-roll", "receipt": "unallocated/roll-positive.json", "unitIds": [ "web-command:setBoneRoll" ] }, { "id": "armature-roll-negative", "kind": "negative", "checkId": "chromium-roll", "receipt": "unallocated/roll-negative.json", "unitIds": [ "web-command:setBoneRoll" ] }, { "id": "armature-roll-undo_redo", "kind": "undo_redo", "checkId": "chromium-roll", "receipt": "unallocated/roll-undo_redo.json", "unitIds": [ "web-command:setBoneRoll" ] }, { "id": "armature-roll-save_reopen", "kind": "save_reopen", "checkId": "chromium-roll", "receipt": "unallocated/roll-save_reopen.json", "unitIds": [ "web-command:setBoneRoll" ] }, { "id": "armature-roll-determinism", "kind": "determinism", "checkId": "chromium-roll", "receipt": "unallocated/roll-determinism.json", "unitIds": [ "web-command:setBoneRoll" ] }, { "id": "armature-symmetry-positive", "kind": "positive", "checkId": "chromium-symmetry", "receipt": "unallocated/symmetry-positive.json", "unitIds": [ "web-command:setBoneSymmetry" ] }, { "id": "armature-symmetry-negative", "kind": "negative", "checkId": "chromium-symmetry", "receipt": "unallocated/symmetry-negative.json", "unitIds": [ "web-command:setBoneSymmetry" ] }, { "id": "armature-symmetry-undo_redo", "kind": "undo_redo", "checkId": "chromium-symmetry", "receipt": "unallocated/symmetry-undo_redo.json", "unitIds": [ "web-command:setBoneSymmetry" ] }, { "id": "armature-symmetry-save_reopen", "kind": "save_reopen", "checkId": "chromium-symmetry", "receipt": "unallocated/symmetry-save_reopen.json", "unitIds": [ "web-command:setBoneSymmetry" ] }, { "id": "armature-symmetry-determinism", "kind": "determinism", "checkId": "chromium-symmetry", "receipt": "unallocated/symmetry-determinism.json", "unitIds": [ "web-command:setBoneSymmetry" ] }, { "id": "armature-parent-positive", "kind": "positive", "checkId": "chromium-parent", "receipt": "unallocated/parent-positive.json", "unitIds": [ "web-command:setBoneParenting" ] }, { "id": "armature-parent-negative", "kind": "negative", "checkId": "chromium-parent", "receipt": "unallocated/parent-negative.json", "unitIds": [ "web-command:setBoneParenting" ] }, { "id": "armature-parent-undo_redo", "kind": "undo_redo", "checkId": "chromium-parent", "receipt": "unallocated/parent-undo_redo.json", "unitIds": [ "web-command:setBoneParenting" ] }, { "id": "armature-parent-save_reopen", "kind": "save_reopen", "checkId": "chromium-parent", "receipt": "unallocated/parent-save_reopen.json", "unitIds": [ "web-command:setBoneParenting" ] }, { "id": "armature-parent-determinism", "kind": "determinism", "checkId": "chromium-parent", "receipt": "unallocated/parent-determinism.json", "unitIds": [ "web-command:setBoneParenting" ] }, { "id": "armature-constraint-positive", "kind": "positive", "checkId": "chromium-constraint", "receipt": "unallocated/constraint-positive.json", "unitIds": [ "web-command:setPoseConstraint" ] }, { "id": "armature-constraint-negative", "kind": "negative", "checkId": "chromium-constraint", "receipt": "unallocated/constraint-negative.json", "unitIds": [ "web-command:setPoseConstraint" ] }, { "id": "armature-constraint-undo_redo", "kind": "undo_redo", "checkId": "chromium-constraint", "receipt": "unallocated/constraint-undo_redo.json", "unitIds": [ "web-command:setPoseConstraint" ] }, { "id": "armature-constraint-save_reopen", "kind": "save_reopen", "checkId": "chromium-constraint", "receipt": "unallocated/constraint-save_reopen.json", "unitIds": [ "web-command:setPoseConstraint" ] }, { "id": "armature-constraint-determinism", "kind": "determinism", "checkId": "chromium-constraint", "receipt": "unallocated/constraint-determinism.json", "unitIds": [ "web-command:setPoseConstraint" ] } ] } }