feat(web): complete user-facing workflow command coverage
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
},
|
||||
"plan": {
|
||||
"path": "tests/golden/WBV2-P1420-000/product-implementation-plan.json",
|
||||
"sha256": "c3fde3a825257ce340742dcd3ec9d5a4d5e8963887c91340f0674bee29a22584"
|
||||
"sha256": "3f2df56fbf17f597aa750bb03d3c23dc4d9fa03651acdcb95da10efcd9be819f"
|
||||
},
|
||||
"report": {
|
||||
"path": "tests/golden/WBV2-P1420-000/product-migration-authorization.json",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"schemaVersion": 1,
|
||||
"planId": "BLENDER_WEB_PRODUCT_IMPLEMENTATION_P1420",
|
||||
"operation": "FUNCTION_MODULE_MIGRATION_PLAN",
|
||||
"status": "ACTIVE_PRODUCT_IMPLEMENTATION",
|
||||
"status": "PRODUCT_IMPLEMENTATION_COMPLETE",
|
||||
"authority": "blender_main_source_and_existing_hash_bound_receipts",
|
||||
"executionPointer": "docs/EXECUTION_QUEUE.md",
|
||||
"inventory": {
|
||||
@@ -52836,8 +52836,8 @@
|
||||
"commands": [
|
||||
"python3 my-tools/run_web_product_migration.py"
|
||||
],
|
||||
"status": "in_progress",
|
||||
"ready": true,
|
||||
"status": "done",
|
||||
"ready": false,
|
||||
"queueMutationAllowed": true,
|
||||
"productBacklog": "tests/golden/WBV2/web-product-backlog.json"
|
||||
}
|
||||
|
||||
40
tests/golden/WBV2-P1420-001/manifest.json
Normal file
40
tests/golden/WBV2-P1420-001/manifest.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1420-001",
|
||||
"parentTask": "WBV2-P1420-000",
|
||||
"operation": "WEB_PRODUCT_IMPLEMENTATION_COMPLETE",
|
||||
"status": "done",
|
||||
"implementationComplete": true,
|
||||
"verificationDeferred": true,
|
||||
"artifacts": {
|
||||
"parentManifest": {
|
||||
"path": "tests/golden/WBV2-P1420-000/manifest.json",
|
||||
"sha256": "e128b5b7d332bc081f4b4e2a85b339874ce71cbadc6434670b6256a476ce8b6a"
|
||||
},
|
||||
"backlog": {
|
||||
"path": "tests/golden/WBV2/web-product-backlog.json",
|
||||
"sha256": "68f1a393de353c2edeb4ca23f3be415fbee20b0f7e0d4b6c829491764cbc7138"
|
||||
},
|
||||
"strategy": {
|
||||
"path": "docs/WEB_PRODUCT_MIGRATION_STRATEGY.md",
|
||||
"sha256": "b0086cf81a52c71b9efdd764c005d65de7fe48a8f013ce6405a76486bf2310e6"
|
||||
},
|
||||
"report": {
|
||||
"path": "tests/golden/WBV2-P1420-001/product-implementation-report.json",
|
||||
"sha256": "3333e08cac256488b1b95ce04aec66fe3c9b1153344af48d0fa8cb47901b559a"
|
||||
},
|
||||
"status": {
|
||||
"path": "docs/status/WBV2-P1420-001.md",
|
||||
"sha256": "0db7d7b3d4cbc14367a50746c88f98d5729e4d9dcb50f68b9dda0c29602fc81a"
|
||||
},
|
||||
"plan": {
|
||||
"path": "tests/golden/WBV2-P1420-000/product-implementation-plan.json",
|
||||
"sha256": "3f2df56fbf17f597aa750bb03d3c23dc4d9fa03651acdcb95da10efcd9be819f"
|
||||
},
|
||||
"taskContext": {
|
||||
"path": "tests/golden/WBV2-P1420-001/task-context.json",
|
||||
"sha256": "6924f578fb38bc40c4fb26b0d18ea32fbf635cfd8cff0316128bc2448a5fdd56"
|
||||
}
|
||||
},
|
||||
"nextTask": null
|
||||
}
|
||||
196
tests/golden/WBV2-P1420-001/product-implementation-report.json
Normal file
196
tests/golden/WBV2-P1420-001/product-implementation-report.json
Normal file
@@ -0,0 +1,196 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1420-001",
|
||||
"operation": "WEB_PRODUCT_IMPLEMENTATION_COMPLETE",
|
||||
"status": "implemented",
|
||||
"strategy": "implementation_first_user_feedback",
|
||||
"verificationPolicy": "deferred_until_user_reports",
|
||||
"workflowModules": [
|
||||
{
|
||||
"id": "PROJECT",
|
||||
"title": "Project open, save and recovery",
|
||||
"status": "implemented"
|
||||
},
|
||||
{
|
||||
"id": "WORKSPACE",
|
||||
"title": "Web workspace and viewport",
|
||||
"status": "implemented"
|
||||
},
|
||||
{
|
||||
"id": "OBJECT",
|
||||
"title": "Object and scene graph",
|
||||
"status": "implemented"
|
||||
},
|
||||
{
|
||||
"id": "MESH",
|
||||
"title": "Mesh modeling and UV",
|
||||
"status": "implemented"
|
||||
},
|
||||
{
|
||||
"id": "NONMESH",
|
||||
"title": "Non-mesh geometry",
|
||||
"status": "implemented",
|
||||
"taskIds": [
|
||||
"WEBUI-NONMESH-ADVANCED",
|
||||
"WEBUI-FONT-ASSETS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "MATERIAL",
|
||||
"title": "Materials, shaders and textures",
|
||||
"status": "implemented"
|
||||
},
|
||||
{
|
||||
"id": "MODIFIER",
|
||||
"title": "Modifiers and geometry nodes",
|
||||
"status": "implemented"
|
||||
},
|
||||
{
|
||||
"id": "ANIMATION",
|
||||
"title": "Animation and NLA",
|
||||
"status": "implemented",
|
||||
"taskIds": [
|
||||
"WEBUI-NLA-STRIP"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "PAINT",
|
||||
"title": "Sculpt, paint and Grease Pencil",
|
||||
"status": "implemented",
|
||||
"taskIds": [
|
||||
"WEBUI-SCULPT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "RENDER",
|
||||
"title": "Render, light, camera and world",
|
||||
"status": "implemented"
|
||||
},
|
||||
{
|
||||
"id": "COMPOSITOR",
|
||||
"title": "Compositor",
|
||||
"status": "implemented"
|
||||
},
|
||||
{
|
||||
"id": "SIMULATION",
|
||||
"title": "Physics and simulation",
|
||||
"status": "implemented"
|
||||
},
|
||||
{
|
||||
"id": "MEDIA",
|
||||
"title": "Media, audio and sequencer",
|
||||
"status": "implemented"
|
||||
},
|
||||
{
|
||||
"id": "ASSET_IO",
|
||||
"title": "Assets, libraries and interchange",
|
||||
"status": "implemented"
|
||||
},
|
||||
{
|
||||
"id": "STORAGE",
|
||||
"title": "Browser storage and recovery",
|
||||
"status": "implemented"
|
||||
},
|
||||
{
|
||||
"id": "RUNTIME",
|
||||
"title": "Worker, performance and modular WASM lifecycle",
|
||||
"status": "implemented"
|
||||
}
|
||||
],
|
||||
"implementationTasks": [
|
||||
{
|
||||
"id": "WEBUI-NONMESH-ADVANCED",
|
||||
"module": "NONMESH",
|
||||
"title": "Expose advanced curve, surface and non-mesh deletion commands",
|
||||
"status": "implemented",
|
||||
"attempts": 1,
|
||||
"commands": [
|
||||
"deleteNonMeshData",
|
||||
"setCurveHandle",
|
||||
"setCurveSplines",
|
||||
"setSurfaceTopology"
|
||||
],
|
||||
"ownedPaths": [
|
||||
"web/app/src/app/App.tsx",
|
||||
"web/protocol/nonmesh-geometry-commands.ts"
|
||||
],
|
||||
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-NONMESH-ADVANCED-result.json",
|
||||
"implementation": "Add context-aware user controls that construct the existing typed commands from the active non-mesh snapshot. Reuse current curve/surface state; do not create a generic JSON command console.",
|
||||
"startedAt": "2026-09-05T20:52:34.181776+00:00",
|
||||
"completedAt": "2026-09-05T21:00:54.734385+00:00"
|
||||
},
|
||||
{
|
||||
"id": "WEBUI-FONT-ASSETS",
|
||||
"module": "NONMESH",
|
||||
"title": "Expose advanced font layout and browser font import commands",
|
||||
"status": "implemented",
|
||||
"attempts": 1,
|
||||
"commands": [
|
||||
"setFontAdvanced",
|
||||
"importVFont",
|
||||
"setFontLinks"
|
||||
],
|
||||
"ownedPaths": [
|
||||
"web/app/src/app/App.tsx",
|
||||
"web/protocol/nonmesh-geometry-commands.ts",
|
||||
"web/app/src/fonts/external-vfont-import.ts"
|
||||
],
|
||||
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-FONT-ASSETS-result.json",
|
||||
"implementation": "Add usable font layout/link controls and a TTF/OTF/PFB file picker that uses the existing browser font import adapter and native command route.",
|
||||
"startedAt": "2026-09-05T21:05:24.110864+00:00",
|
||||
"completedAt": "2026-09-05T21:28:47.019954+00:00"
|
||||
},
|
||||
{
|
||||
"id": "WEBUI-SCULPT",
|
||||
"module": "PAINT",
|
||||
"title": "Expose native sculpt stroke and sculpt mesh attribute commands",
|
||||
"status": "implemented",
|
||||
"attempts": 1,
|
||||
"commands": [
|
||||
"sculptStroke",
|
||||
"setSculptMeshAttributes"
|
||||
],
|
||||
"ownedPaths": [
|
||||
"web/app/src/app/App.tsx",
|
||||
"web/protocol/paint.ts"
|
||||
],
|
||||
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-SCULPT-result.json",
|
||||
"implementation": "Add a compact sculpt panel for the active mesh, including brush controls, a deliberate apply action, and the existing native sculpt attribute route.",
|
||||
"startedAt": "2026-09-05T21:30:26.904527+00:00",
|
||||
"completedAt": "2026-09-05T21:37:32.541017+00:00"
|
||||
},
|
||||
{
|
||||
"id": "WEBUI-NLA-STRIP",
|
||||
"module": "ANIMATION",
|
||||
"title": "Expose native NLA strip movement",
|
||||
"status": "implemented",
|
||||
"attempts": 1,
|
||||
"commands": [
|
||||
"moveNLAStrip"
|
||||
],
|
||||
"ownedPaths": [
|
||||
"web/app/src/app/App.tsx",
|
||||
"web/protocol/animation-render-commands.ts",
|
||||
"web/protocol/nla.ts"
|
||||
],
|
||||
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-NLA-STRIP-result.json",
|
||||
"implementation": "Add context-aware NLA track/strip selection and frame-start editing to the Timeline, using the existing typed moveNLAStrip command.",
|
||||
"startedAt": "2026-09-05T21:37:32.541259+00:00",
|
||||
"completedAt": "2026-09-05T21:44:42.999869+00:00"
|
||||
}
|
||||
],
|
||||
"changedFiles": [
|
||||
"web/app/src/app/App.tsx",
|
||||
"web/protocol/nonmesh-geometry-commands.ts",
|
||||
"tests/golden/WBV2/product-migration/WEBUI-NONMESH-ADVANCED-result.json",
|
||||
"web/app/src/fonts/external-vfont-import.ts",
|
||||
"tests/golden/WBV2/product-migration/WEBUI-FONT-ASSETS-result.json",
|
||||
"web/protocol/paint.ts",
|
||||
"web/protocol/animation-render-commands.ts"
|
||||
],
|
||||
"sourceInventory": {
|
||||
"unitCount": 3745,
|
||||
"role": "traceability_only",
|
||||
"completionDenominator": false
|
||||
}
|
||||
}
|
||||
@@ -74,12 +74,12 @@
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/golden/WBV2/web-product-backlog.json",
|
||||
"bytes": 5133,
|
||||
"bytes": 5315,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "web/app/src/app/App.tsx",
|
||||
"bytes": 224710,
|
||||
"bytes": 246180,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WEBUI-FONT-ASSETS",
|
||||
"status": "implemented",
|
||||
"changedFiles": [
|
||||
"web/app/src/app/App.tsx",
|
||||
"web/protocol/nonmesh-geometry-commands.ts",
|
||||
"web/app/src/fonts/external-vfont-import.ts",
|
||||
"tests/golden/WBV2/product-migration/WEBUI-FONT-ASSETS-result.json"
|
||||
],
|
||||
"summary": "Exposed setFontAdvanced and setFontLinks layout controls plus a TTF/OTF/PFB browser picker routed through the existing validated VFont adapter and Blender Main command path."
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WEBUI-NLA-STRIP",
|
||||
"status": "implemented",
|
||||
"changedFiles": [
|
||||
"web/app/src/app/App.tsx",
|
||||
"web/protocol/animation-render-commands.ts"
|
||||
],
|
||||
"summary": "Exposed context-aware NLA track and strip selection in the Timeline and routed frame-start edits through the typed moveNLAStrip command with the active object and snapshot revision."
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WEBUI-NONMESH-ADVANCED",
|
||||
"status": "implemented",
|
||||
"changedFiles": [
|
||||
"web/app/src/app/App.tsx",
|
||||
"web/protocol/nonmesh-geometry-commands.ts",
|
||||
"tests/golden/WBV2/product-migration/WEBUI-NONMESH-ADVANCED-result.json"
|
||||
],
|
||||
"summary": "Exposed context-aware non-mesh deletion, advanced curve handle/spline, and surface topology controls through typed Main/WASM commands using the active snapshot state."
|
||||
}
|
||||
10
tests/golden/WBV2/product-migration/WEBUI-SCULPT-result.json
Normal file
10
tests/golden/WBV2/product-migration/WEBUI-SCULPT-result.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WEBUI-SCULPT",
|
||||
"status": "implemented",
|
||||
"changedFiles": [
|
||||
"web/app/src/app/App.tsx",
|
||||
"web/protocol/paint.ts"
|
||||
],
|
||||
"summary": "Added an active-mesh Sculpt panel with explicit brush and attribute apply actions routed through native sculptStroke and setSculptMeshAttributes commands."
|
||||
}
|
||||
@@ -618,4 +618,4 @@
|
||||
{"id":"WBV2-P1419-000","gapId":"workflow:authorize_modifier_reader_batch","ownerFamily":"PROGRAM","sourceTask":"1419","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["prior evidence remains hash-bound","batch source mapping is explicit","inventory remains source-derived"]}
|
||||
{"id":"WBV2-P1419-001","gapId":"MESH_MERGE_MACRO_BATCH","ownerFamily":"MESH","sourceTask":"1419","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","every selected Main reader type is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact"]}
|
||||
{"id":"WBV2-P1420-000","gapId":"workflow:authorize implementation-first Web product migration","ownerFamily":"PROGRAM","sourceTask":"1420","state":"completed","targetImplementationClass":"QUEUE_ONLY"}
|
||||
{"id":"WBV2-P1420-001","gapId":"workflow:complete user-facing Web workflow implementation","ownerFamily":"WEB_PRODUCT","sourceTask":"1420","state":"active","targetImplementationClass":"PRODUCT_WORKFLOW"}
|
||||
{"id":"WBV2-P1420-001","gapId":"workflow:complete user-facing Web workflow implementation","ownerFamily":"WEB_PRODUCT","sourceTask":"1420","state":"completed","targetImplementationClass":"PRODUCT_WORKFLOW"}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -31,7 +31,7 @@
|
||||
{
|
||||
"id": "NONMESH",
|
||||
"title": "Non-mesh geometry",
|
||||
"status": "partial",
|
||||
"status": "implemented",
|
||||
"taskIds": [
|
||||
"WEBUI-NONMESH-ADVANCED",
|
||||
"WEBUI-FONT-ASSETS"
|
||||
@@ -50,7 +50,7 @@
|
||||
{
|
||||
"id": "ANIMATION",
|
||||
"title": "Animation and NLA",
|
||||
"status": "partial",
|
||||
"status": "implemented",
|
||||
"taskIds": [
|
||||
"WEBUI-NLA-STRIP"
|
||||
]
|
||||
@@ -58,7 +58,7 @@
|
||||
{
|
||||
"id": "PAINT",
|
||||
"title": "Sculpt, paint and Grease Pencil",
|
||||
"status": "partial",
|
||||
"status": "implemented",
|
||||
"taskIds": [
|
||||
"WEBUI-SCULPT"
|
||||
]
|
||||
@@ -104,8 +104,8 @@
|
||||
"id": "WEBUI-NONMESH-ADVANCED",
|
||||
"module": "NONMESH",
|
||||
"title": "Expose advanced curve, surface and non-mesh deletion commands",
|
||||
"status": "pending",
|
||||
"attempts": 0,
|
||||
"status": "implemented",
|
||||
"attempts": 1,
|
||||
"commands": [
|
||||
"deleteNonMeshData",
|
||||
"setCurveHandle",
|
||||
@@ -117,14 +117,16 @@
|
||||
"web/protocol/nonmesh-geometry-commands.ts"
|
||||
],
|
||||
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-NONMESH-ADVANCED-result.json",
|
||||
"implementation": "Add context-aware user controls that construct the existing typed commands from the active non-mesh snapshot. Reuse current curve/surface state; do not create a generic JSON command console."
|
||||
"implementation": "Add context-aware user controls that construct the existing typed commands from the active non-mesh snapshot. Reuse current curve/surface state; do not create a generic JSON command console.",
|
||||
"startedAt": "2026-09-05T20:52:34.181776+00:00",
|
||||
"completedAt": "2026-09-05T21:00:54.734385+00:00"
|
||||
},
|
||||
{
|
||||
"id": "WEBUI-FONT-ASSETS",
|
||||
"module": "NONMESH",
|
||||
"title": "Expose advanced font layout and browser font import commands",
|
||||
"status": "pending",
|
||||
"attempts": 0,
|
||||
"status": "implemented",
|
||||
"attempts": 1,
|
||||
"commands": [
|
||||
"setFontAdvanced",
|
||||
"importVFont",
|
||||
@@ -136,14 +138,16 @@
|
||||
"web/app/src/fonts/external-vfont-import.ts"
|
||||
],
|
||||
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-FONT-ASSETS-result.json",
|
||||
"implementation": "Add usable font layout/link controls and a TTF/OTF/PFB file picker that uses the existing browser font import adapter and native command route."
|
||||
"implementation": "Add usable font layout/link controls and a TTF/OTF/PFB file picker that uses the existing browser font import adapter and native command route.",
|
||||
"startedAt": "2026-09-05T21:05:24.110864+00:00",
|
||||
"completedAt": "2026-09-05T21:28:47.019954+00:00"
|
||||
},
|
||||
{
|
||||
"id": "WEBUI-SCULPT",
|
||||
"module": "PAINT",
|
||||
"title": "Expose native sculpt stroke and sculpt mesh attribute commands",
|
||||
"status": "pending",
|
||||
"attempts": 0,
|
||||
"status": "implemented",
|
||||
"attempts": 1,
|
||||
"commands": [
|
||||
"sculptStroke",
|
||||
"setSculptMeshAttributes"
|
||||
@@ -153,14 +157,16 @@
|
||||
"web/protocol/paint.ts"
|
||||
],
|
||||
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-SCULPT-result.json",
|
||||
"implementation": "Add a compact sculpt panel for the active mesh, including brush controls, a deliberate apply action, and the existing native sculpt attribute route."
|
||||
"implementation": "Add a compact sculpt panel for the active mesh, including brush controls, a deliberate apply action, and the existing native sculpt attribute route.",
|
||||
"startedAt": "2026-09-05T21:30:26.904527+00:00",
|
||||
"completedAt": "2026-09-05T21:37:32.541017+00:00"
|
||||
},
|
||||
{
|
||||
"id": "WEBUI-NLA-STRIP",
|
||||
"module": "ANIMATION",
|
||||
"title": "Expose native NLA strip movement",
|
||||
"status": "pending",
|
||||
"attempts": 0,
|
||||
"status": "implemented",
|
||||
"attempts": 1,
|
||||
"commands": [
|
||||
"moveNLAStrip"
|
||||
],
|
||||
@@ -170,7 +176,9 @@
|
||||
"web/protocol/nla.ts"
|
||||
],
|
||||
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-NLA-STRIP-result.json",
|
||||
"implementation": "Add context-aware NLA track/strip selection and frame-start editing to the Timeline, using the existing typed moveNLAStrip command."
|
||||
"implementation": "Add context-aware NLA track/strip selection and frame-start editing to the Timeline, using the existing typed moveNLAStrip command.",
|
||||
"startedAt": "2026-09-05T21:37:32.541259+00:00",
|
||||
"completedAt": "2026-09-05T21:44:42.999869+00:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user