Accumulated uncommitted work: GHOST Web backend, WebGL/GPU web layer, web workflow engine and protocol, tooling, docs and task records. Large generated evidence, user-testing archives, build snapshots and imported test assets remain untracked. Co-Authored-By: Claude Code <noreply@anthropic.com>
539 lines
15 KiB
JSON
539 lines
15 KiB
JSON
{
|
|
"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"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|