{ "schema": "freecad-web-module-batch-pipeline/v1", "generatedAt": "2026-09-11T21:00:22.235357+00:00", "status": "implementation_ready", "implementationMode": "feature-first-deferred-validation", "validationDeferred": true, "implementationReceipt": { "batchId": "6ddac2a4890acabc61f83f19", "module": "CAM", "tier": "feature-workflow", "family": "desktop-command-initgui", "recordIds": [ "CAM:desktop:CAM_OpActiveToggle", "CAM:desktop:CAM_OperationCopy", "CAM:desktop:CAM_Pocket3D", "CAM:desktop:CAM_Pocket_Shape", "CAM:desktop:CAM_Post", "CAM:desktop:CAM_PostSelected", "CAM:desktop:CAM_Probe", "CAM:desktop:CAM_Profile", "CAM:desktop:CAM_SelectLoop" ], "recordCount": 9, "selectedRecordCount": 9, "remainingRecordCount": 0, "status": "implementation_ready", "validation": "user_during_use", "target": "FreeCADWebCAMProbe", "buildTree": "freecad-source/build-web/cam-configure-r1", "artifacts": [ "freecad-source/build-web/cam-configure-r1/bin/FreeCADWebCAMProbe.js", "freecad-source/build-web/cam-configure-r1/bin/FreeCADWebCAMProbe.wasm" ], "source": "outer-build", "scope": "feature-capability", "updatedAt": "2026-09-11T21:00:21.321894+00:00" }, "implementationReceipts": [ { "batchId": "6ddac2a4890acabc61f83f19", "module": "CAM", "tier": "feature-workflow", "family": "desktop-command-initgui", "recordIds": [ "CAM:desktop:CAM_OpActiveToggle", "CAM:desktop:CAM_OperationCopy", "CAM:desktop:CAM_Pocket3D", "CAM:desktop:CAM_Pocket_Shape", "CAM:desktop:CAM_Post", "CAM:desktop:CAM_PostSelected", "CAM:desktop:CAM_Probe", "CAM:desktop:CAM_Profile", "CAM:desktop:CAM_SelectLoop" ], "recordCount": 9, "selectedRecordCount": 9, "remainingRecordCount": 0, "status": "implementation_ready", "validation": "user_during_use", "target": "FreeCADWebCAMProbe", "buildTree": "freecad-source/build-web/cam-configure-r1", "artifacts": [ "freecad-source/build-web/cam-configure-r1/bin/FreeCADWebCAMProbe.js", "freecad-source/build-web/cam-configure-r1/bin/FreeCADWebCAMProbe.wasm" ], "source": "outer-build", "scope": "feature-capability", "updatedAt": "2026-09-11T21:00:21.321894+00:00" } ], "coalescedBatchCount": 1, "staticReadiness": { "selected": 9, "ready": 9, "missing": 0, "missingIds": [], "rejectedMarkers": [], "blockingGaps": [], "uiContainers": 0, "uiOnly": false }, "batchId": "6ddac2a4890acabc61f83f19", "module": "CAM", "target": "FreeCADWebCAMProbe", "buildKind": "native", "buildTree": "freecad-source/build-web/cam-configure-r1", "buildRequired": true, "buildReuse": { "reason": "rebuilt", "cacheHit": false, "inputDigest": "3b0586c97b01a0d4245e3ff8698a4b8a163e0798987ae610a2563b73e7972cbe", "inputHashCacheHits": 0, "inputFiles": 5, "artifactHashCacheHits": 0, "artifacts": 2, "directLinkDependencies": 63, "dependencyDirty": false }, "totalSeconds": 1.383, "steps": [ { "name": "module-registry", "command": [ "/usr/bin/python3", "tools/generate_web_module_registry.py" ], "seconds": 0.098, "exitCode": 0, "stdout": "{\"output\": \"web/src/module-registry.generated.ts\", \"modules\": 32, \"bytes\": 34296, \"changed\": false}", "stderr": "" }, { "name": "capability-registry", "command": [ "/usr/bin/python3", "tools/generate_feature_capability_registry.py" ], "seconds": 0.082, "exitCode": 0, "stdout": "{\"status\": \"reused\", \"modules\": 32, \"commands\": 1449, \"routed\": 952, \"implementationRequired\": 497, \"interactive\": 93, \"genericApiEntry\": 25, \"genericCommandEntry\": 749, \"reactNavigation\": 85, \"needsParameterUi\": 0, \"needsReactWorkflow\": 497, \"artifactModules\": 32, \"validationDeferred\": 1449}", "stderr": "" }, { "name": "preflight", "command": [ "/usr/bin/python3", "tools/check_web_link_closure.py", "freecad-source/build-web/cam-configure-r1", "FreeCADWebCAMProbe", "--json" ], "seconds": 0.067, "exitCode": 0, "stdout": "{\"schema\": \"freecad-web-link-preflight/v1\", \"buildDirectory\": \"freecad-source/build-web/cam-configure-r1\", \"requestedBuildDirectory\": \"freecad-source/build-web/cam-configure-r1\", \"target\": \"FreeCADWebCAMProbe\", \"requestedTarget\": \"FreeCADWebCAMProbe\", \"resolvedTarget\": \"FreeCADWebCAMProbe\", \"profile\": \"fast-dev\", \"needsPthread\": false, \"hasPthreadFlag\": false, \"missingArchives\": [], \"runtimePresent\": true, \"wasmPresent\": true, \"errors\": [], \"warnings\": [], \"cacheHit\": false}", "stderr": "" }, { "name": "build", "command": [ "cmake", "--build", "freecad-source/build-web/cam-configure-r1", "--target", "FreeCADWebCAMProbe", "-j8" ], "seconds": 0.176, "exitCode": 0, "stdout": "[0/2] Re-checking globbed directories...\n[1/4] Generating version_file\ngit\n/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/build-web/cam-configure-r1/src/Build/Version.h.out written", "stderr": "" }, { "name": "artifact-sync", "command": [ "node", "web/tools/sync-assets.mjs" ], "seconds": 0.058, "exitCode": 0, "stdout": "{\"modules\":32,\"manifest\":\"public/modules/manifest.json\",\"timing\":{\"totalSeconds\":0.015034398000000003,\"copied\":0,\"skipped\":98,\"missing\":18,\"hashComputed\":0,\"hashCacheHits\":188,\"copySeconds\":0,\"hashSeconds\":0,\"manifestSeconds\":0.0006243690000000015,\"manifestChanged\":false}}", "stderr": "" }, { "name": "business-audit", "command": [ "/usr/bin/python3", "tools/generate_web_business_completion_audit.py" ], "seconds": 0.902, "exitCode": 0, "stdout": "{\"status\": \"generated\", \"verdict\": \"incomplete\", \"featureReceiptBacklog\": 15, \"workbenchCommands\": 480, \"formatWorkflows\": 0, \"productWorkflows\": 0}", "stderr": "" } ], "supportHashes": { "freecad-source/src/WebAssembly/FreeCADCoreProbe/CAMRuntimeProbe.cpp": "580d425e9473add77a9bf40cd419173520c29f74a78b06a1d7769accfe963d43", "freecad-source/src/WebAssembly/FreeCADCoreProbe/CAMDesktopCommands.cpp": "9225dfca1d1ba4dd50d9295e003988a7b5a4cd4d962925e540e36f1053416f7c", "freecad-source/src/WebAssembly/FreeCADCoreProbe/CAMDesktopCommands.h": "2819a2e207e0de40ec328af7e0c8eb58067eed7c4cee12c2f0746a06bea79b64", "web/src/cam-desktop-adapter.ts": "b0f3eea6e78e7541401f3aff5071a17c2166a835351e0ecef764324a16458879", "web/src/workbench-shell.tsx": "224f3a412f4da52c11007c0847f77125ea8778ca82880979bb7e1be6e090418e", "web/src/desktop-command-dispatcher.ts": "8c43145cbf03281d6f875654e021e781234b37522aedd737a79ffde988fd7fe6", "web/src/cam-python-family-batch-facade.ts": "f4cd2c3bcdf0ca3fde62ac105dd89212d1222fc751b28c2a360e90f1ded6090e", "web/src/cam.worker.ts": "c7b38e01d12b2e93c249c514836a988b576eb057e7f2b4104f8e23094dabdb65" } }