177 lines
12 KiB
JSON
177 lines
12 KiB
JSON
{
|
|
"schema": "freecad-web-module-batch-pipeline/v1",
|
|
"generatedAt": "2026-09-12T16:39:49.446491+00:00",
|
|
"status": "implementation_ready",
|
|
"implementationMode": "feature-first-deferred-validation",
|
|
"validationDeferred": true,
|
|
"implementationReceipt": {
|
|
"batchId": "web-camera-host-20260913",
|
|
"module": "Web",
|
|
"tier": "feature-workflow",
|
|
"family": "desktop-command-commandview",
|
|
"recordIds": [
|
|
"Web:desktop:Std_ViewTop",
|
|
"Web:desktop:Std_ViewBottom",
|
|
"Web:desktop:Std_ViewFront",
|
|
"Web:desktop:Std_ViewRear",
|
|
"Web:desktop:Std_ViewLeft",
|
|
"Web:desktop:Std_ViewRight",
|
|
"Web:desktop:Std_ViewIsometric",
|
|
"Web:desktop:Std_ViewDimetric",
|
|
"Web:desktop:Std_ViewTrimetric",
|
|
"Web:desktop:Std_ViewZoomIn",
|
|
"Web:desktop:Std_ViewZoomOut",
|
|
"Web:desktop:Std_ViewFitAll",
|
|
"Web:desktop:Std_ViewRotateLeft",
|
|
"Web:desktop:Std_ViewRotateRight",
|
|
"Web:desktop:Std_StoreWorkingView",
|
|
"Web:desktop:Std_RecallWorkingView"
|
|
],
|
|
"recordCount": 16,
|
|
"selectedRecordCount": 16,
|
|
"remainingRecordCount": 0,
|
|
"status": "implementation_ready",
|
|
"validation": "user_during_use",
|
|
"target": "FreeCADWebReactProduct",
|
|
"buildTree": "web",
|
|
"artifacts": [
|
|
"web/dist/index.html"
|
|
],
|
|
"source": "outer-build",
|
|
"scope": "feature-capability",
|
|
"updatedAt": "2026-09-12T16:39:48.496283+00:00"
|
|
},
|
|
"implementationReceipts": [
|
|
{
|
|
"batchId": "web-camera-host-20260913",
|
|
"module": "Web",
|
|
"tier": "feature-workflow",
|
|
"family": "desktop-command-commandview",
|
|
"recordIds": [
|
|
"Web:desktop:Std_ViewTop",
|
|
"Web:desktop:Std_ViewBottom",
|
|
"Web:desktop:Std_ViewFront",
|
|
"Web:desktop:Std_ViewRear",
|
|
"Web:desktop:Std_ViewLeft",
|
|
"Web:desktop:Std_ViewRight",
|
|
"Web:desktop:Std_ViewIsometric",
|
|
"Web:desktop:Std_ViewDimetric",
|
|
"Web:desktop:Std_ViewTrimetric",
|
|
"Web:desktop:Std_ViewZoomIn",
|
|
"Web:desktop:Std_ViewZoomOut",
|
|
"Web:desktop:Std_ViewFitAll",
|
|
"Web:desktop:Std_ViewRotateLeft",
|
|
"Web:desktop:Std_ViewRotateRight",
|
|
"Web:desktop:Std_StoreWorkingView",
|
|
"Web:desktop:Std_RecallWorkingView"
|
|
],
|
|
"recordCount": 16,
|
|
"selectedRecordCount": 16,
|
|
"remainingRecordCount": 0,
|
|
"status": "implementation_ready",
|
|
"validation": "user_during_use",
|
|
"target": "FreeCADWebReactProduct",
|
|
"buildTree": "web",
|
|
"artifacts": [
|
|
"web/dist/index.html"
|
|
],
|
|
"source": "outer-build",
|
|
"scope": "feature-capability",
|
|
"updatedAt": "2026-09-12T16:39:48.496283+00:00"
|
|
}
|
|
],
|
|
"coalescedBatchCount": 1,
|
|
"staticReadiness": {
|
|
"selected": 16,
|
|
"ready": 16,
|
|
"missing": 0,
|
|
"missingIds": [],
|
|
"rejectedMarkers": [],
|
|
"blockingGaps": [],
|
|
"uiContainers": 0,
|
|
"uiOnly": false
|
|
},
|
|
"batchId": "web-camera-host-20260913",
|
|
"module": "Web",
|
|
"target": "FreeCADWebReactProduct",
|
|
"buildKind": "frontend",
|
|
"buildTree": "web",
|
|
"buildRequired": true,
|
|
"buildReuse": {
|
|
"reason": "rebuilt",
|
|
"cacheHit": false,
|
|
"inputDigest": "c8e303edee01f618303628d08807e0c64f9851c1d7cbc1d392d0d6759af50a7e",
|
|
"inputHashCacheHits": 0,
|
|
"inputFiles": 19,
|
|
"artifactHashCacheHits": 0,
|
|
"artifacts": 1,
|
|
"directLinkDependencies": 0,
|
|
"dependencyDirty": false
|
|
},
|
|
"totalSeconds": 11.095,
|
|
"steps": [
|
|
{
|
|
"name": "module-registry",
|
|
"command": [
|
|
"/usr/bin/python3",
|
|
"tools/generate_web_module_registry.py"
|
|
],
|
|
"seconds": 0.104,
|
|
"exitCode": 0,
|
|
"stdout": "{\"output\": \"web/src/module-registry.generated.ts\", \"modules\": 32, \"bytes\": 34475, \"changed\": false}",
|
|
"stderr": ""
|
|
},
|
|
{
|
|
"name": "capability-registry",
|
|
"command": [
|
|
"/usr/bin/python3",
|
|
"tools/generate_feature_capability_registry.py"
|
|
],
|
|
"seconds": 8.423,
|
|
"exitCode": 0,
|
|
"stdout": "{\"status\": \"generated\", \"modules\": 32, \"commands\": 1451, \"routed\": 1208, \"implementationRequired\": 243, \"interactive\": 94, \"genericApiEntry\": 25, \"genericCommandEntry\": 1004, \"reactNavigation\": 85, \"needsParameterUi\": 0, \"needsReactWorkflow\": 243, \"artifactModules\": 32, \"validationDeferred\": 1451}",
|
|
"stderr": ""
|
|
},
|
|
{
|
|
"name": "build",
|
|
"command": [
|
|
"/home/mes123456/FreeCADWasmDev/working/FreeCAD/web/node_modules/.bin/vite",
|
|
"build"
|
|
],
|
|
"seconds": 1.633,
|
|
"exitCode": 0,
|
|
"stdout": "vite v8.2.1 building client environment for production...\nPublic assets synchronized incrementally in 0.056s\n\u001b[2K\ntransforming...✓ 2236 modules transformed.\nrendering chunks...\ncomputing gzip size...\ndist/assets/dynamic-worker-bootstrap-CX1JKGrb.js 0.73 kB\ndist/part-inspect.html 0.90 kB │ gzip: 0.45 kB\ndist/partdesign-save.html 0.91 kB │ gzip: 0.41 kB\ndist/sketcher-inspect.html 0.92 kB │ gzip: 0.46 kB\ndist/part.html 0.97 kB │ gzip: 0.46 kB\ndist/partdesign-inspect.html 0.97 kB │ gzip: 0.47 kB\ndist/part-io.html 0.98 kB │ gzip: 0.46 kB\ndist/points.html 0.98 kB │ gzip: 0.46 kB\ndist/sandbox.html 0.98 kB │ gzip: 0.46 kB\ndist/surface.html 0.98 kB │ gzip: 0.46 kB\ndist/start.html 0.98 kB │ gzip: 0.46 kB\ndist/part-save.html 0.98 kB │ gzip: 0.46 kB\ndist/sketcher.html 0.98 kB │ gzip: 0.46 kB\ndist/robot-save.html 0.99 kB │ gzip: 0.46 kB\ndist/meshpart.html 0.99 kB │ gzip: 0.47 kB\ndist/robot-create.html 0.99 kB │ gzip: 0.46 kB\ndist/robot-python.html 0.99 kB │ gzip: 0.47 kB\ndist/show-inspect.html 0.99 kB │ gzip: 0.47 kB\ndist/spreadsheet.html 0.99 kB │ gzip: 0.46 kB\ndist/part-python.html 0.99 kB │ gzip: 0.47 kB\ndist/show-python.html 0.99 kB │ gzip: 0.47 kB\ndist/sandbox-save.html 1.00 kB │ gzip: 0.47 kB\ndist/plot-python.html 1.00 kB │ gzip: 0.47 kB\ndist/robot-inspect.html 1.00 kB │ gzip: 0.47 kB\ndist/templatepymod.html 1.00 kB │ gzip: 0.47 kB\ndist/start-python.html 1.00 kB │ gzip: 0.47 kB\ndist/sandbox-python.html 1.00 kB │ gzip: 0.47 kB\ndist/surface-save.html 1.00 kB │ gzip: 0.47 kB\ndist/points-save.html 1.00 kB │ gzip: 0.48 kB\ndist/sketcher-python.html 1.00 kB │ gzip: 0.47 kB\ndist/surface-python.html 1.01 kB │ gzip: 0.47 kB\ndist/sandbox-inspect.html 1.01 kB │ gzip: 0.47 kB\ndist/surface-inspect.html 1.01 kB │ gzip: 0.47 kB\ndist/start-inspect.html 1.01 kB │ gzip: 0.48 kB\ndist/partdesign-python.html 1.01 kB │ gzip: 0.47 kB\ndist/spreadsheet-save.html 1.01 kB │ gzip: 0.47 kB\ndist/spreadsheet-python.html 1.02 kB │ gzip: 0.47 kB\ndist/sketcher-persistence.html 1.02 kB │ gzip: 0.48 kB\ndist/templatepymod-python.html 1.02 kB │ gzip: 0.48 kB\ndist/spreadsheet-inspect.html 1.03 kB │ gzip: 0.48 kB\ndist/reverseengineering-save.html 1.03 kB │ gzip: 0.48 kB\ndist/reverseengineering-create.html 1.03 kB │ gzip: 0.48 kB\ndist/reverseengineering-python.html 1.04 kB │ gzip: 0.48 kB\ndist/reverseengineering-inspect.html 1.04 kB │ gzi...",
|
|
"stderr": "\u001b[33m[INEFFECTIVE_DYNAMIC_IMPORT] \u001b[0msrc/techdraw-desktop-adapter.ts is dynamically imported by src/workbench-shell.tsx but also statically imported by src/desktop-command-dispatcher.ts, src/techdraw-dimension-task.tsx, dynamic import will not move module into another chunk.\n\n[plugin builtin:vite-reporter] \n(!) Some chunks are larger than 500 kB after minification. Consider:\n- Using dynamic import() to code-split the application\n- Use build.rolldownOptions.output.codeSplitting to improve chunking: https://rolldown.rs/reference/OutputOptions.codeSplitting\n- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.\n\u001b[33m[INEFFECTIVE_DYNAMIC_IMPORT] \u001b[0msrc/draft-desktop-adapter.ts is dynamically imported by src/workbench-shell.tsx but also statically imported by src/desktop-command-dispatcher.ts, src/workbench-shell.tsx, dynamic import will not move module into another chunk.\n\n\u001b[33m[INEFFECTIVE_DYNAMIC_IMPORT] \u001b[0msrc/bim-desktop-adapter.ts is dynamically imported by src/workbench-shell.tsx but also statically imported by src/bim-frame-task.tsx, src/desktop-command-dispatcher.ts, src/workbench-shell.tsx, dynamic import will not move module into another chunk.\n\n\u001b[33m[INEFFECTIVE_DYNAMIC_IMPORT] \u001b[0msrc/openscad-desktop-adapter.ts is dynamically imported by src/workbench-shell.tsx but also statically imported by src/desktop-command-dispatcher.ts, src/workbench-shell.tsx, dynamic import will not move module into another chunk.\n\n\u001b[33m[INEFFECTIVE_DYNAMIC_IMPORT] \u001b[0msrc/test-desktop-output.tsx is dynamically imported by src/workbench-shell.tsx but also statically imported by src/workbench-shell.tsx, dynamic import will not move module into another chunk."
|
|
},
|
|
{
|
|
"name": "business-audit",
|
|
"command": [
|
|
"/usr/bin/python3",
|
|
"tools/generate_web_business_completion_audit.py"
|
|
],
|
|
"seconds": 0.935,
|
|
"exitCode": 0,
|
|
"stdout": "{\"status\": \"generated\", \"verdict\": \"incomplete\", \"featureReceiptBacklog\": 14, \"workbenchCommands\": 257, \"formatWorkflows\": 0, \"productWorkflows\": 0}",
|
|
"stderr": ""
|
|
}
|
|
],
|
|
"supportHashes": {
|
|
"web/src/dock-overlay-commands.json": "a8492cc4bb0d41708ad5d481103535b70263ef77f305e22e046905218466e2eb",
|
|
"web/src/dock-overlay-adapter.ts": "9747d185e07e7d3f1a89dc70dee575bb1730408fd08789f9a663c445816db50e",
|
|
"web/src/dock-overlay-host.tsx": "19e88ed3af82884ad80137aec1a74a22683c3b580cd11f6a85904d9ecc484c87",
|
|
"web/src/dock-overlay.css": "2eca079c1296a8ca2587d7934a6acc0fe5252bb1f97ad7df65c80f9d78db9e5c",
|
|
"web/src/scene-display-commands.json": "01ef6d2aacae5d5be5c191d3dbe34b1d3c1854b807b9c6ab3a3ae724159d7a17",
|
|
"web/src/scene-command-adapter.ts": "e74a54c7ff1c88d6edccf938264c9a2224034ed792360645956a14ea418a65d3",
|
|
"web/src/scene-command-host.ts": "a2c532eb39de3136981a19f71121a6e5c5f9f51ee235411741b6d1f8690a8037",
|
|
"web/src/scene-command-host.css": "b61941c5e25941d263db6506f60108bc02407cab12c35125299ed486a51f8dd1",
|
|
"web/src/scene-overlap-picker.ts": "1568993d85e3a8f0b1fd358e3b0edb5bade07d205162e8a62f9258f54593b359",
|
|
"web/src/scene-camera-commands.ts": "fc65d9dc5cd9c7d905e188b67ce9f7c5688150cffe5062190be380d3350e9aba",
|
|
"web/src/import-render-bridge.ts": "7b62cd05907f69aae6538b504104ef7c7b1b759d303ddcfb0df924cd58e7d0f8",
|
|
"web/src/openscad-desktop-view.tsx": "f8c0f750602d1eb5c0637f637ecb5ac5e5daf42f3ac5eb94352a0609c9108c1a",
|
|
"web/src/desktop-command-dispatcher.ts": "830ed20ba99d548779b69aa85d2c3b8bd58cb3a4e8b215653905206ba29f6e79",
|
|
"web/src/workbench-shell.tsx": "95e4f6bb257689b402156835ddb08cca12befd474793cfb834f80e4733afaf84",
|
|
"web/src/facade-envelope.ts": "b61a6eb35a5a80b7fbef0c4e93772b48c2ece1f5af17fe015789b47fce6e8a46",
|
|
"web/workbench.html": "cb816d9e15e2eeec51802c4d5920ffabbba909eebda6a8d53ad46dd97cffec1c"
|
|
}
|
|
}
|