Files
workinf_Blender_Wasm/tools/web/workflow-cases/B2-source-contracts.json
mes123456 f3e21c6b98
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled
chore: checkpoint web Blender migration source, tools and docs
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>
2026-11-10 11:18:01 +08:00

13 lines
6.1 KiB
JSON

{"schemaVersion":1,"batchId":"B2","status":"REVIEWED_SCOPE","verifiedUnitDelta":0,
"bindings":[{"path":"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp","sha256":"4b14aaa45d78b65130f630284bf5425c707e92b91a7c9c34f9efb452f9c964cc"},{"path":"blender-5.2.0/source/blender/editors/transform/transform_ops.cc","sha256":"e17e6ae6aeca0226cbbf7e5f940a04e0d75415fe3a578edacf659b4af7e7b378"},{"path":"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp","sha256":"e1427f3a4352ea2b625149f777bb0e40508890c54030c67683b29ae4bf418798"},{"path":"blender-5.2.0/source/blender/editors/mesh/editmesh_select.cc","sha256":"bea08ee3ddbe5287dc1f3502eaef5f21e14c61d7dc17ac86695ad9b3f63e794b"},{"path":"blender-5.2.0/source/blender/editors/undo/ed_undo.cc","sha256":"cbbc4f69258a704396b8fc1af1b5c085641e13c55a18aac36b941efad0092618"},{"path":"blender-5.2.0/source/blender/web_engine/web_engine_gpu_ui.cpp","sha256":"f7e08675de04d05a18d4bd74984f8eb6775ece43c9d4c3a72d1b8733494cfdfc"},{"path":"web/app/src/app/WasmGPUCanvas.tsx","sha256":"492c11cf4591c796dd3bc946391b0853c97a984e2f7ba6299c6171c43aa02f6f"},{"path":"web/app/src/workers/web-engine.worker.ts","sha256":"30a914b94f625e7a9a93e8b8fe60778b9e515bee364b34632ffe8cf21c66da87"},{"path":"web/app/src/app/App.tsx","sha256":"813263854ebb574299c28aa93caa645d07d9fca3732b8ebcdcaac5d5e80a1c56"},{"path":"web/app/src/app/WasmEditorContext.tsx","sha256":"40351762be341d2f8ddef0e52e7021d94f40dcf784850ad2e9349075f3d6265f"},{"path":"blender-5.2.0/source/blender/makesrna/intern/rna_object.cc","sha256":"de0c7ab9abe8127dd0c534e94fec469d21fdca7d33d6991c61c1c7667eee9886"},{"path":"blender-5.2.0/source/blender/makesrna/intern/rna_workspace.cc","sha256":"8352540e252b65a3e641711f1ad3b1b9e5b5c36461e2ccfd4950f61cb6684db8"},{"path":"web/app/src/app/wasm-editors.css","sha256":"23f528d5697009849207a90a09f54eeb03faa14b23eeeb812e6ad2c0565368a5"},{"path":"web/protocol/web-engine.ts","sha256":"a66e5cebfa106e6727d2bd3c447a0c8a476c9e61d726cf915940b3c3d7dbcabe"}],
"contracts":[
{"id":"native-cube","scope":"createPrimitive creates a native BMesh cube, converts it into authoritative Main and tags object/scene redraw; only cube case is covered.","sourcePaths":["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp"],"sourceLines":[14342,14367,14442],"proofStages":["opened","added"]},
{"id":"native-grs","scope":"Translate, rotate and scale invoke native modal callbacks with OPTYPE_UNDO; G X 1, R Z 90, S 2 change actual object transforms.","sourcePaths":["blender-5.2.0/source/blender/editors/transform/transform_ops.cc"],"sourceLines":[855,882,972],"proofStages":["confirmed","rotated","scaled"]},
{"id":"native-cancel","scope":"TRANS_CANCEL restores transform; WebEngine retains the pre-gesture Main and commits history only on net persistent change.","sourcePaths":["blender-5.2.0/source/blender/editors/transform/transform_ops.cc","blender-5.2.0/source/blender/web_engine/web_engine_api.cpp"],"sourceLines":[506,4678,4684,4701],"proofStages":["historyBeforeCancel","cancelStarted","cancelFinished","cancelled","historyAfterCancel"]},
{"id":"native-vertex-edit","scope":"Native viewport pick resolves nearest BMesh vertex, SEL_OP_SET updates vertex selection/history, and native global Z translation moves only that selected vertex.","sourcePaths":["blender-5.2.0/source/blender/editors/mesh/editmesh_select.cc","blender-5.2.0/source/blender/editors/transform/transform_ops.cc"],"sourceLines":[2711,2906,2920,855],"proofStages":["editEntered","vertexTarget","vertexClick","vertexSelected","vertexEdited"]},
{"id":"native-keyboard-history","scope":"Canvas forwards keycode/modifiers to native WM handlers; ED_OT_undo/redo step the native stack and refresh, restoring edit-mode vertices/selection and transform data.","sourcePaths":["web/app/src/app/WasmGPUCanvas.tsx","blender-5.2.0/source/blender/web_engine/web_engine_gpu_ui.cpp","blender-5.2.0/source/blender/editors/undo/ed_undo.cc"],"sourceLines":[560,1352,599,636,705,748],"proofStages":["undoFrame","undone","redoFrame","redone"]},
{"id":"main-file-roundtrip","scope":"Worker serializes authoritative Main through Blender writer; browser download delivers bytes and complete memory loader reopens them after a deliberate unsaved change. OPEN/SAVE reserve the mutex after draining autosave. Native File menu and Save As remain B3.","sourcePaths":["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp","blender-5.2.0/source/blender/web_engine/web_engine_api.cpp","web/app/src/workers/web-engine.worker.ts","web/app/src/app/App.tsx"],"sourceLines":[1807,24320,5302,3075,3941,6085],"proofStages":["finalObject","saved","unsaved","reopened"]},
{"id":"tool-and-visible-rna","scope":"Read-only bpy/BMesh oracle reports real WorkSpaceTool idname and Object.loc; Properties renders native transform fields and all XYZ inputs must be fully in viewport with matching values after reopen.","sourcePaths":["blender-5.2.0/source/blender/makesrna/intern/rna_workspace.cc","blender-5.2.0/source/blender/makesrna/intern/rna_object.cc","web/app/src/app/WasmEditorContext.tsx","web/app/src/app/wasm-editors.css"],"sourceLines":[320,3155,2226,2247,46],"proofStages":["added","editEntered","reopened","uiLayout","reopenedUI"]},
{"id":"native-input-transport","scope":"Canvas preserves keycode/modifiers and pointer events; gpuUI frame protocol carries them to Worker native key/event exports; gpuFrame pumps native WM and publishes Main changes. No JS transform geometry is used for the tested modal actions.","sourcePaths":["web/app/src/app/WasmGPUCanvas.tsx","web/protocol/web-engine.ts","web/app/src/workers/web-engine.worker.ts","blender-5.2.0/source/blender/web_engine/web_engine_api.cpp","blender-5.2.0/source/blender/web_engine/web_engine_gpu_ui.cpp"],"sourceLines":[560,488,780,682,4653,1353],"proofStages":["cancelStarted","cancelFinished","confirmFinished","rotateModal","scaleModal","vertexClick","vertexModal","undoFrame","redoFrame"]}],
"continuationNotes":"Eight source contracts reviewed for this B2 workflow only; source-unit verified delta remains0. Bind review in B2 plan, rerun minimal then production on existing candidate, then inspect proof stages/artifacts and aggregate acceptance. All B3-B6/global residuals retained."}