{ "schema": "freecad-web-module-batch-pipeline/v1", "generatedAt": "2026-09-12T01:17:00.480342+00:00", "status": "implementation_ready", "implementationMode": "feature-first-deferred-validation", "validationDeferred": true, "implementationReceipt": { "batchId": "meshpart-flat-implementation-20260912", "module": "MeshPart", "tier": "feature-workflow", "family": "desktop-command-meshflatteningcommand", "recordIds": [ "MeshPart:desktop:MeshPart_CreateFlatFace", "MeshPart:desktop:MeshPart_CreateFlatMesh" ], "recordCount": 2, "selectedRecordCount": 2, "remainingRecordCount": 0, "status": "implementation_ready", "validation": "user_during_use", "target": "FreeCADWebMeshPartRuntimeProbe", "buildTree": "freecad-source/build-web/configure", "artifacts": [ "freecad-source/build-web/configure/bin/FreeCADWebMeshPartRuntimeProbe.js", "freecad-source/build-web/configure/bin/FreeCADWebMeshPartRuntimeProbe.wasm" ], "source": "outer-build", "scope": "feature-capability", "updatedAt": "2026-09-12T01:16:59.549588+00:00" }, "implementationReceipts": [ { "batchId": "meshpart-flat-implementation-20260912", "module": "MeshPart", "tier": "feature-workflow", "family": "desktop-command-meshflatteningcommand", "recordIds": [ "MeshPart:desktop:MeshPart_CreateFlatFace", "MeshPart:desktop:MeshPart_CreateFlatMesh" ], "recordCount": 2, "selectedRecordCount": 2, "remainingRecordCount": 0, "status": "implementation_ready", "validation": "user_during_use", "target": "FreeCADWebMeshPartRuntimeProbe", "buildTree": "freecad-source/build-web/configure", "artifacts": [ "freecad-source/build-web/configure/bin/FreeCADWebMeshPartRuntimeProbe.js", "freecad-source/build-web/configure/bin/FreeCADWebMeshPartRuntimeProbe.wasm" ], "source": "outer-build", "scope": "feature-capability", "updatedAt": "2026-09-12T01:16:59.549588+00:00" } ], "coalescedBatchCount": 1, "staticReadiness": { "selected": 2, "ready": 2, "missing": 0, "missingIds": [], "rejectedMarkers": [], "blockingGaps": [], "uiContainers": 0, "uiOnly": false }, "batchId": "meshpart-flat-implementation-20260912", "module": "MeshPart", "target": "FreeCADWebMeshPartRuntimeProbe", "buildKind": "native", "buildTree": "freecad-source/build-web/configure", "buildRequired": true, "buildReuse": { "reason": "rebuilt", "cacheHit": false, "inputDigest": "06de135bfa68cc131d53fd988bdf79be02271f336bc97ab5e4bcd9316b1337bf", "inputHashCacheHits": 0, "inputFiles": 8, "artifactHashCacheHits": 0, "artifacts": 2, "directLinkDependencies": 51, "dependencyDirty": false }, "totalSeconds": 78.844, "steps": [ { "name": "module-registry", "command": [ "/usr/bin/python3", "tools/generate_web_module_registry.py" ], "seconds": 0.1, "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": 7.473, "exitCode": 0, "stdout": "{\"status\": \"generated\", \"modules\": 32, \"commands\": 1449, \"routed\": 1085, \"implementationRequired\": 364, \"interactive\": 94, \"genericApiEntry\": 25, \"genericCommandEntry\": 881, \"reactNavigation\": 85, \"needsParameterUi\": 0, \"needsReactWorkflow\": 364, \"artifactModules\": 32, \"validationDeferred\": 1449}", "stderr": "" }, { "name": "preflight", "command": [ "/usr/bin/python3", "tools/check_web_link_closure.py", "freecad-source/build-web/configure", "FreeCADWebMeshPartRuntimeProbe", "--json" ], "seconds": 0.043, "exitCode": 0, "stdout": "{\"schema\": \"freecad-web-link-preflight/v1\", \"buildDirectory\": \"freecad-source/build-web/configure\", \"requestedBuildDirectory\": \"freecad-source/build-web/configure\", \"target\": \"FreeCADWebMeshPartRuntimeProbe\", \"requestedTarget\": \"FreeCADWebMeshPartRuntimeProbe\", \"resolvedTarget\": \"FreeCADWebMeshPartRuntimeProbe\", \"profile\": \"fast-dev\", \"needsPthread\": true, \"hasPthreadFlag\": true, \"missingArchives\": [], \"runtimePresent\": true, \"wasmPresent\": true, \"errors\": [], \"warnings\": [], \"cacheHit\": true}", "stderr": "" }, { "name": "build", "command": [ "cmake", "--build", "freecad-source/build-web/configure", "--target", "FreeCADWebMeshPartRuntimeProbe", "-j2" ], "seconds": 66.702, "exitCode": 0, "stdout": "[0/2] Re-checking globbed directories...\n[1/10] Generating version_file\ngit\n/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/build-web/configure/src/Build/Version.h.out written\n[2/8] Automatic MOC and UIC for target FreeCADWebMeshPartRuntimeProbe\n[3/7] Building CXX object src/WebAssembly/FreeCADCoreProbe/CMakeFiles/FreeCADWebMeshPartRuntimeProbe.dir/__/__/Mod/MeshPart/App/MeshFlattening.cpp.o\nem++: warning: linker setting ignored during compilation: 'PTHREAD_POOL_SIZE' [-Wunused-command-line-argument]\n[4/7] Building CXX object src/WebAssembly/FreeCADCoreProbe/CMakeFiles/FreeCADWebMeshPartRuntimeProbe.dir/MeshPartRuntimeProbe.cpp.o\nem++: warning: linker setting ignored during compilation: 'PTHREAD_POOL_SIZE' [-Wunused-command-line-argument]\n[5/7] Building CXX object src/WebAssembly/FreeCADCoreProbe/CMakeFiles/FreeCADWebMeshPartRuntimeProbe.dir/__/__/Mod/MeshPart/App/MeshFlatteningNurbs.cpp.o\nem++: warning: linker setting ignored during compilation: 'PTHREAD_POOL_SIZE' [-Wunused-command-line-argument]\n/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/src/Mod/MeshPart/App/MeshFlatteningNurbs.cpp:201:30: warning: comparison of integers of different signs: 'unsigned int' and 'Eigen::EigenBase::Index' (aka 'long') [-Wsign-compare]\n for (unsigned int i=0; i < values.size(); i++)\n ~ ^ ~~~~~~~~~~~~~\n/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/src/Mod/MeshPart/App/MeshFlatteningNurbs.cpp:212:48: warning: comparison of integers of different signs: 'unsigned int' and 'Eigen::Index' (aka 'long') [-Wsign-compare]\n for (unsigned int row_index = 0; row_index < U.rows(); row_index++)\n ~~~~~~~~~ ^ ~~~~~~~~\n/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/src/Mod/MeshPart/App/MeshFlatteningNurbs.cpp:317:48: warning: comparison of integers of different signs: 'unsigned int' and 'Eigen::Index' (aka 'long') [-Wsign-compare]\n for (unsigned int row_index = 0; row_index < U.rows(); row_index++)\n ~~~~~~~~~ ^ ~~~~~~~~\n/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/src/Mod/MeshPart/App/MeshFlatteningNurbs.cpp:327:48: warning: comparison of integers of different signs: 'unsigned int' and 'Eigen::Index' (aka 'long') [-Wsign-compare]\n for (unsigned int row_index = 0; row_index < U.rows(); row_index++)\n ~~~~~~~~~ ^ ~~~~~~~~\n/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/src/Mod/MeshPart/App/MeshFlatteningNurbs.cpp:418:48: warning: comparison of integers of different signs: 'unsigned int' and 'Eigen::EigenBase::Index' (aka 'long') [-Wsign-compare]\n for (unsigned int row_index = 0; row_index < u.size(); row_index++)\n ~~~~~~~~~ ^ ~~~~~~~~\n/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/src/Mod/MeshPart/App/MeshFlatteningNurbs.cpp:475:48: warning: comparison of integers of different signs: 'unsigned int' and 'Eigen::EigenBase::Index' (aka 'long') [-Wsign-compare]\n for (unsigned int row_index = 0; row_index < U.size(); row_index++)\n ~~~~~~~~~ ^ ~~~~~~~~\n6 warnings generated.\n[6/7] Building CXX object src/WebAssembly/FreeCADCoreProbe/CMakeFiles/FreeCADWebMeshPartRuntimeProbe.dir/__/__/Mod/MeshPart/App/MeshFlatteningLscmRelax.cpp.o\nem++: warning: linker setting ignored during compilation: 'PTHREAD_POOL_SIZE' [-Wunused-command-line-argument]\n[7/7] Linking CXX executable bin/FreeCADWebMeshPartRuntimeProbe.js\nem++: warning: USE_PTHREADS + ALLOW_MEMORY_GROWTH may run non-wasm code slowly, see https://github.com/WebAssembly/design/issues/1271 [-Wpthreads-mem-growth]", "stderr": "" }, { "name": "artifact-sync", "command": [ "node", "web/tools/sync-assets.mjs" ], "seconds": 3.609, "exitCode": 0, "stdout": "{\"modules\":32,\"manifest\":\"public/modules/manifest.json\",\"timing\":{\"totalSeconds\":3.5633386259999997,\"copied\":3,\"skipped\":95,\"missing\":18,\"hashComputed\":3,\"hashCacheHits\":185,\"copySeconds\":3.343254565,\"hashSeconds\":0.20282306999999947,\"manifestSeconds\":0.0008570920000001934,\"manifestChanged\":true}}", "stderr": "" }, { "name": "business-audit", "command": [ "/usr/bin/python3", "tools/generate_web_business_completion_audit.py" ], "seconds": 0.917, "exitCode": 0, "stdout": "{\"status\": \"generated\", \"verdict\": \"incomplete\", \"featureReceiptBacklog\": 17, \"workbenchCommands\": 356, \"formatWorkflows\": 0, \"productWorkflows\": 0}", "stderr": "" } ], "supportHashes": { "freecad-source/src/WebAssembly/FreeCADCoreProbe/MeshPartRuntimeProbe.cpp": "d0479d742222523b92f9369b630cf31a5a27e2cbd865b1cc8cf64bae3fed6bf4", "freecad-source/src/WebAssembly/FreeCADCoreProbe/MeshPartFlattenCommands.h": "6de0b217c949fe3e5d192a9fefcdb5eb486d47d5ac06943c944b2f6b838e20f2", "web/src/meshpart-desktop-adapter.ts": "6f6ab50649bef5e39d8621348f8e2d62cbd3a2ad0c33d33da93dd379e37c1149", "web/src/workbench-shell.tsx": "8c7d3c89bdc1fee24e1eee39b05a2c15df95e6fed55f6d501a4002a357b716f4", "web/src/desktop-command-dispatcher.ts": "41c0d8a9c17d0f832f02cc564ea556434f6ffe47051764dd250e88503420c57a", "web/src/meshpart-python-family-facade.ts": "5a894a975a5f7c45374d603c4ab04b4e1ae91af7463f68e400e8b6fc38ded129", "web/src/meshpart.worker.ts": "b777823710aeb86f248e7990da2c56df969cdf0af1e0b1e6045dc6ffecc7b0fa" } }