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>
This commit is contained in:
202
my-tools/local-workflows/IO-ROUTE-COMPLETION.json
Normal file
202
my-tools/local-workflows/IO-ROUTE-COMPLETION.json
Normal file
@@ -0,0 +1,202 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1424-001",
|
||||
"job": "IO-ROUTE-COMPLETION",
|
||||
"parentSha256": "46a3ce65d56747da8684af422a1a94540612c767a6dcc42da7939930731399d5",
|
||||
"acceptance": "pending independent local validation",
|
||||
"result": {
|
||||
"status": "ready",
|
||||
"summary": "Native OBJ geometry import/export; external materials and other formats remain outside this bounded workflow.",
|
||||
"workflow": "Import OBJ into Main, reject empty geometry without mutation, export OBJ, undo/redo, save/reopen and independently replay; compare browser blends and exported geometry with desktop Blender.",
|
||||
"sourceUnits": [
|
||||
"operator:WM_OT_obj_export",
|
||||
"operator:WM_OT_obj_import",
|
||||
"operator:WM_OT_open_mainfile"
|
||||
],
|
||||
"routeIds": [
|
||||
"operator:WM_OT_obj_export",
|
||||
"operator:WM_OT_obj_import",
|
||||
"operator:WM_OT_open_mainfile"
|
||||
],
|
||||
"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/windowmanager/intern/wm_files.cc",
|
||||
"blender-5.2.0/source/blender/io/wavefront_obj/exporter/obj_exporter.cc",
|
||||
"blender-5.2.0/source/blender/io/wavefront_obj/importer/obj_importer.cc"
|
||||
],
|
||||
"changedFiles": [
|
||||
"web/tests/e2e/io-format-operator-production.spec.ts",
|
||||
"web/tests/fixtures/io-route-main-snapshots.py",
|
||||
"my-tools/prepare_wbv2_io_route_workflow.py"
|
||||
],
|
||||
"dependencies": [
|
||||
".emscripten-web",
|
||||
"blender-5.2.0/source/blender/io/CMakeLists.txt",
|
||||
"blender-5.2.0/source/blender/io/wavefront_obj/exporter/obj_exporter.cc",
|
||||
"blender-5.2.0/source/blender/io/wavefront_obj/importer/obj_importer.cc",
|
||||
"blender-5.2.0/source/blender/nodes/shader/node_shader_util.cc",
|
||||
"blender-5.2.0/source/blender/web_engine/CMakeLists.txt",
|
||||
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
|
||||
"blender-5.2.0/source/blender/web_engine/web_engine_headless_fallback.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/web_engine/web_rna_fallback.cpp",
|
||||
"blender-5.2.0/source/blender/windowmanager/intern/wm_files.cc",
|
||||
"build_web_blender6/CMakeCache.txt",
|
||||
"my-tools/build_local_webengine.py",
|
||||
"my-tools/prepare_wbv2_io_route_workflow.py",
|
||||
"tests/files/web/basic_scene.blend",
|
||||
"tests/files/web/m12_obj_multi_v1/multi-object.mtl",
|
||||
"tests/files/web/m12_obj_multi_v1/multi-object.obj",
|
||||
"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/io-format-operator-production.spec.ts",
|
||||
"web/tests/fixtures/io-route-main-snapshots.py",
|
||||
"web/tsconfig.json"
|
||||
],
|
||||
"artifacts": [
|
||||
"build_blender_native/bin/blender",
|
||||
"build_web_blender6/bin/web_engine.wasm",
|
||||
"build_web_blender6/bin/web_engine.js",
|
||||
"web/app/public/vendor/blender/web_engine.wasm",
|
||||
"web/app/public/vendor/blender/web_engine.js",
|
||||
"web/app/public/wasm-module-manifest.json"
|
||||
],
|
||||
"checks": [
|
||||
{
|
||||
"id": "wasm-source-build",
|
||||
"argv": [
|
||||
"python3",
|
||||
"my-tools/build_local_webengine.py"
|
||||
],
|
||||
"cwd": ".",
|
||||
"kinds": [
|
||||
"source_build"
|
||||
],
|
||||
"timeoutSeconds": 1800
|
||||
},
|
||||
{
|
||||
"id": "web-build",
|
||||
"argv": [
|
||||
"node",
|
||||
"tools/web/incremental-web-build.mjs"
|
||||
],
|
||||
"cwd": ".",
|
||||
"kinds": [
|
||||
"typecheck"
|
||||
],
|
||||
"dependsOn": [
|
||||
"wasm-source-build"
|
||||
],
|
||||
"timeoutSeconds": 300
|
||||
},
|
||||
{
|
||||
"id": "authoring-lint",
|
||||
"argv": [
|
||||
"node",
|
||||
"node_modules/eslint/bin/eslint.js",
|
||||
"app/src/app/App.tsx"
|
||||
],
|
||||
"cwd": "web",
|
||||
"kinds": [
|
||||
"lint"
|
||||
],
|
||||
"timeoutSeconds": 90
|
||||
},
|
||||
{
|
||||
"id": "chromium-authoring",
|
||||
"argv": [
|
||||
"env",
|
||||
"WEB_TEST_PORT=5391",
|
||||
"node",
|
||||
"node_modules/@playwright/test/cli.js",
|
||||
"test",
|
||||
"tests/e2e/io-format-operator-production.spec.ts",
|
||||
"--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": 180
|
||||
}
|
||||
],
|
||||
"cases": [
|
||||
{
|
||||
"id": "io-route-completion-positive",
|
||||
"kind": "positive",
|
||||
"checkId": "chromium-authoring",
|
||||
"receipt": "unallocated/io-route-completion-positive.json",
|
||||
"unitIds": [
|
||||
"operator:WM_OT_obj_export",
|
||||
"operator:WM_OT_obj_import",
|
||||
"operator:WM_OT_open_mainfile"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "io-route-completion-negative",
|
||||
"kind": "negative",
|
||||
"checkId": "chromium-authoring",
|
||||
"receipt": "unallocated/io-route-completion-negative.json",
|
||||
"unitIds": [
|
||||
"operator:WM_OT_obj_export",
|
||||
"operator:WM_OT_obj_import",
|
||||
"operator:WM_OT_open_mainfile"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "io-route-completion-undo_redo",
|
||||
"kind": "undo_redo",
|
||||
"checkId": "chromium-authoring",
|
||||
"receipt": "unallocated/io-route-completion-undo_redo.json",
|
||||
"unitIds": [
|
||||
"operator:WM_OT_obj_export",
|
||||
"operator:WM_OT_obj_import",
|
||||
"operator:WM_OT_open_mainfile"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "io-route-completion-save_reopen",
|
||||
"kind": "save_reopen",
|
||||
"checkId": "chromium-authoring",
|
||||
"receipt": "unallocated/io-route-completion-save_reopen.json",
|
||||
"unitIds": [
|
||||
"operator:WM_OT_obj_export",
|
||||
"operator:WM_OT_obj_import",
|
||||
"operator:WM_OT_open_mainfile"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "io-route-completion-determinism",
|
||||
"kind": "determinism",
|
||||
"checkId": "chromium-authoring",
|
||||
"receipt": "unallocated/io-route-completion-determinism.json",
|
||||
"unitIds": [
|
||||
"operator:WM_OT_obj_export",
|
||||
"operator:WM_OT_obj_import",
|
||||
"operator:WM_OT_open_mainfile"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user