{ "schemaVersion": 1, "baseline": { "freecadVersion": "1.1.1", "commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d" }, "source": { "workbench": "src/Mod/CAM/InitGui.py", "commandInventory": "config/freecad-gui-command-inventory.json", "desktopOracle": "config/freecad-desktop-oracle.json", "dynamicOracleStatus": "partial-command-state-only" }, "status": "in_progress", "claim": "compatible-browser-subset-not-exact-freecad-cam-parity", "commandSurface": { "toolbarGroups": 4, "menuGroups": 5, "webCommands": 60, "freecadCamRuntimeCommands": 56, "freecadCamSourceOnlyCommands": 5, "notYetSurfacedCommands": [], "nonActionableSourceTemplates": ["CAM_%s"], "freecadCommandIds": [ "CAM_Adaptive", "CAM_Area", "CAM_Area_Workplane", "CAM_Array", "CAM_Comment", "CAM_Compound", "CAM_Custom", "CAM_Deburr", "CAM_DressupArray", "CAM_DressupAxisMap", "CAM_DressupDogbone", "CAM_DressupDragKnife", "CAM_DressupLeadInOut", "CAM_DressupPathBoundary", "CAM_DressupRampEntry", "CAM_DressupTag", "CAM_DressupTools", "CAM_DressupZCorrect", "CAM_Drilling", "CAM_DrillingTools", "CAM_Engrave", "CAM_EngraveTools", "CAM_ExportTemplate", "CAM_Fixture", "CAM_Helix", "CAM_Inspect", "CAM_Job", "CAM_MillFace", "CAM_OpActiveToggle", "CAM_OperationCopy", "CAM_PathShapeTC", "CAM_Pocket3D", "CAM_Pocket_Shape", "CAM_Post", "CAM_Probe", "CAM_Profile", "CAM_PropertyBag", "CAM_Sanity", "CAM_SelectLoop", "CAM_SetStartPoint", "CAM_Shape", "CAM_SimpleCopy", "CAM_SimTools", "CAM_Simulator", "CAM_SimulatorGL", "CAM_Slot", "CAM_Stop", "CAM_Tapping", "CAM_ThreadMilling", "CAM_ToolBitCreate", "CAM_ToolBitDock", "CAM_ToolBitLibraryOpen", "CAM_ToolBitLoad", "CAM_ToolBitSave", "CAM_ToolBitSaveAs", "CAM_ToolController", "CAM_Vcarve", "CAM_Camotics", "CAM_Copy", "CAM_3dTools" ] }, "browserDomain": { "stockModes": 4, "toolShapes": 7, "operationKinds": 22, "dressupKinds": 9, "postprocessors": 7 }, "coverage": [ { "id": "CAM-21", "level": "exact", "scope": "Locked FreeCAD source command identifiers and CAM command grouping manifest", "evidence": "check:cam-parity" }, { "id": "CAM-22", "level": "compatible", "scope": "Sixty actionable CAM commands, four toolbars, five menu groups, Job tree, task panels and viewport toolpath presentation", "evidence": "check:chrome-app-e2e" }, { "id": "CAM-23", "level": "compatible", "scope": "Job, four stock modes and SetupSheet browser contract", "evidence": "check:chrome-cam" }, { "id": "CAM-24", "level": "compatible", "scope": "Seven ToolBit shapes, versioned JSON assets, tool controllers, feeds, rapids, spindle and coolant", "evidence": "check:chrome-cam" }, { "id": "CAM-25", "level": "compatible", "scope": "Twenty-two deterministic browser operation kinds; not native Path algorithms", "evidence": "test:cam" }, { "id": "CAM-26", "level": "compatible", "scope": "Nine deterministic path dress-up kinds", "evidence": "test:cam" }, { "id": "CAM-27", "level": "compatible", "scope": "Sanity check, deterministic swept-volume material-removal timeline, and path/stock/tool-holder/fixture collision diagnostics", "evidence": "check:chrome-cam" }, { "id": "CAM-28", "level": "compatible", "scope": "Seven allowlisted deterministic postprocessors with unsafe post rejection", "evidence": "check:chrome-cam" }, { "id": "CAM-29", "level": "development", "scope": "Versioned CAM Job assets, validated import, OPFS snapshot, Undo/Redo, and persistent Comment/PropertyBag/Compound metadata are implemented; FreeCAD native Path::Feature/FeaturePython round-trip and Web Path::PropertyPath resource editing for native Path::Feature plus explicit non-executing FeaturePython opt-in are oracle-verified; FeaturePython operation metadata/recompute and full operation-object semantics remain bounded", "evidence": "check:chrome-cam" }, { "id": "CAM-30", "level": "compatible", "scope": "FreeCAD-style task flow and command lifecycle; native Qt Job/Profile Task open/accept/cancel lifecycle is oracle-verified, while full focus, keyboard, validation and all operation panels remain pending", "evidence": "check:chrome-app-e2e" }, { "id": "CAM-31", "level": "development", "scope": "OpenCAMLib WASM PathDropCutter, CAMotics source-stage G-code generation, CAMotics 1.3 native Qt/TPL plus CLI sidecars, standalone browser CAMotics sweep WASM, OCCT native BRep removal including continuous-segment sweep, and LinuxCNC XYZBC RTCP post/bridge are verified; full browser CAMotics program/same-input differential, full FreeCAD Path algorithms and complete continuous tool-axis oracle remain open", "evidence": "check:chrome-camotics-wasm" }, { "id": "CAM-32", "level": "development", "scope": "LinuxCNC WASM XYZBC machine acceptance is closed for the certified table-rotary-tilting digital case; Qt Task lifecycle, native Path::Feature Web codec, CAMotics native Qt/TPL and CLI sidecars, curved-segment BRep sweep and fail-closed safety matrix are evidenced, while exact dynamic FreeCAD comparison, FeaturePython/full Path semantics, full browser CAMotics differential and production authorization remain closed", "evidence": "check:chrome-cam-linuxcnc-machine" } ], "tasks": { "completed": 8, "inProgress": 4, "pending": 0, "blocked": 0 }, "unclosedDifferences": [ "Native FreeCAD Path operation algorithms and geometry semantics", "Complete CAM Qt task-panel validation, focus, keyboard and all operation-dialog state oracle", "CAMotics full browser program runtime and same-input simulator differential", "Analytic arbitrary-curved-path native swept-volume material removal and holder/fixture oracle", "Complete continuous tool-axis/singularity oracle beyond certified XYZBC case", "FeaturePython operation metadata/recompute and full-operation semantic Path::PropertyPath codec/editable FCStd round-trip", "Machine-specific production safety authorization and physical actuator/metrology validation" ] }