{ "schemaVersion": 1, "freecadBaseline": "freecad-1.1.1", "workbenches": { "Part Design": { "status": "facade-partial", "level": "experimental", "commands": ["create-body", "create-sketch", "pad", "pocket", "revolution", "fillet", "chamfer", "mirrored", "multi-transform", "linear-pattern", "polar-pattern"] }, "Part": { "status": "facade-partial", "level": "experimental", "commands": ["primitive", "union", "cut", "intersection", "check-shape"] }, "Sketcher": { "status": "facade-model", "level": "experimental", "commands": ["new-sketch", "line", "arc", "circle", "rectangle", "constrain-horizontal", "constrain-vertical", "solve-sketch"] }, "Draft": { "status": "ui-prototype", "level": "read-only", "commands": ["working-plane", "snap-settings", "draft-line", "draft-wire", "move", "rotate"] }, "TechDraw": { "status": "ui-prototype", "level": "read-only", "commands": ["new-page", "view-part", "section-view", "dimension", "annotation"] }, "Spreadsheet": { "status": "ui-prototype", "level": "read-only", "commands": ["new-sheet", "set-alias", "expression", "bind-property"] }, "Assembly": { "status": "ui-prototype", "level": "read-only", "commands": ["insert-component", "coincident", "concentric", "distance", "interference"] }, "BIM": { "status": "ui-manifest", "level": "unsupported", "commands": ["wall", "structure", "window", "ifc-export"] }, "CAM": { "status": "ui-manifest", "level": "unsupported", "commands": ["new-job", "stock", "profile-path", "simulate", "post-process"] }, "FEM": { "status": "ui-manifest", "level": "unsupported", "commands": ["new-analysis", "material", "mesh", "solve", "results"] }, "Mesh": { "status": "ui-prototype", "level": "read-only", "commands": ["mesh-import", "analyze-mesh", "repair-mesh", "fill-holes", "mesh-export"] }, "Surface": { "status": "ui-manifest", "level": "unsupported", "commands": ["bspline", "bezier", "fill-surface", "loft-surface", "trim-surface"] }, "Inspection": { "status": "ui-manifest", "level": "unsupported", "commands": ["measure-distance", "measure-angle", "measure-area", "section", "check-dependencies"] }, "AddonManager": { "status": "scope-only", "level": "unsupported", "commands": ["addon-list", "addon-install", "addon-update", "addon-remove"] }, "Cloud": { "status": "scope-only", "level": "unsupported", "commands": ["cloud-login", "cloud-open", "cloud-save", "cloud-share"] }, "Fem": { "status": "scope-only", "level": "unsupported", "commands": ["new-analysis", "material", "mesh", "solve", "results"] }, "Help": { "status": "scope-only", "level": "unsupported", "commands": ["help-contents", "help-search", "help-about"] }, "Idf": { "status": "scope-only", "level": "unsupported", "commands": ["idf-import", "idf-export"] }, "Import": { "status": "scope-only", "level": "unsupported", "commands": ["import-model", "import-batch", "import-options"] }, "JtReader": { "status": "scope-only", "level": "unsupported", "commands": ["jt-import", "jt-assembly", "jt-export"] }, "Material": { "status": "scope-only", "level": "unsupported", "commands": ["material-card", "material-library", "material-assign"] }, "Measure": { "status": "scope-only", "level": "unsupported", "commands": ["measure-distance", "measure-angle", "measure-area", "measure-volume"] }, "MeshPart": { "status": "scope-only", "level": "unsupported", "commands": ["mesh-to-shape", "shape-to-mesh", "mesh-section"] }, "OpenSCAD": { "status": "scope-only", "level": "unsupported", "commands": ["openscad-import", "openscad-export", "openscad-preview"] }, "Plot": { "status": "scope-only", "level": "unsupported", "commands": ["plot-create", "plot-style", "plot-export"] }, "Points": { "status": "scope-only", "level": "unsupported", "commands": ["points-import", "points-filter", "points-export"] }, "ReverseEngineering": { "status": "scope-only", "level": "unsupported", "commands": ["fit-curve", "fit-surface", "reverse-engineer"] }, "Robot": { "status": "scope-only", "level": "unsupported", "commands": ["robot-model", "robot-trajectory", "robot-simulate", "robot-export"] }, "Show": { "status": "scope-only", "level": "unsupported", "commands": ["show-object", "show-share", "show-presentation"] }, "Start": { "status": "scope-only", "level": "unsupported", "commands": ["start-page", "recent-projects", "templates"] }, "Web": { "status": "scope-only", "level": "unsupported", "commands": ["web-export", "web-view", "web-share"] }, "Sandbox": { "status": "scope-only", "level": "unsupported", "commands": [] }, "TemplatePyMod": { "status": "scope-only", "level": "unsupported", "commands": [] }, "Test": { "status": "scope-only", "level": "unsupported", "commands": [] }, "Tux": { "status": "scope-only", "level": "unsupported", "commands": [] } }, "sourceScope": { "baseline": "FreeCAD 1.1.1 src/Mod", "moduleCount": 34, "modules": ["AddonManager", "Assembly", "BIM", "CAM", "Cloud", "Draft", "Fem", "Help", "Idf", "Import", "Inspection", "JtReader", "Material", "Measure", "Mesh", "MeshPart", "OpenSCAD", "Part", "PartDesign", "Plot", "Points", "ReverseEngineering", "Robot", "Sandbox", "Show", "Sketcher", "Spreadsheet", "Start", "Surface", "TechDraw", "TemplatePyMod", "Test", "Tux", "Web"], "coreDirectories": ["App", "Base", "Gui", "Main"], "coverageRule": "Every module, command, TypeId, Property, file format, script/addon entry and browser limitation must have a task ID and a compatibility level before G9. Scope-only means registered but not implemented." }, "sourceModuleAliases": { "Fem": "FEM", "PartDesign": "Part Design", "TechDraw": "TechDraw", "MeshPart": "Mesh" }, "geometryBuildStrategy": { "primary": "reuse-bitbybit", "fallback": ["extend-bitbybit-binding", "custom-occt-binding"], "sourceTasks": ["BYB-01", "BYB-02", "BYB-03", "BYB-04", "BYB-05", "BYB-06", "BYB-07", "BYB-08"], "constraints": ["Facade-only React boundary", "Emscripten reproducible build", "ABI and protocol versioning", "SBOM/license/hash evidence", "Bitbybit-FreeCAD golden differential"] }, "bitbybitSource": { "repository": "https://github.com/bitbybit-dev/bitbybit", "localSnapshot": ".cache/bitbybit/bitbybit", "commit": "d3f52bd1fcf78148b60800d69ed6b42e53f4ad06", "version": "1.1.1", "occtPackage": "packages/dev/occt", "workerPackage": "packages/dev/occt-worker", "sourceForm": "generated-wasm-and-typescript-only", "missingBuildInputs": ["OCCT C++ source checkout", "Embind generation rules", "Emscripten link/export manifest"], "evidence": "./npmw run check:bitbybit-history" }, "nativeOcctHistory": { "status": "built-provider-not-default-runtime", "sourceCheckout": "OCCT_SOURCE_DIR", "sourceCommit": "bb75017e915f6509a4bfa8b551f853352754c2da", "occtVersion": "8.0.0", "toolchain": "Emscripten 3.1.69 + CMake 3.31.6 + Ninja 1.12.1", "library": ["TKBO", "TKDESTEP", "TKXSBase", "TKDE"], "bindings": ["BRepAlgoAPI_Fuse", "BRepAlgoAPI_Cut", "BRepAlgoAPI_Common", "Generated", "Modified", "IsDeleted", "TopExp_Explorer", "STEPControl_Reader", "STEPControl_Writer", "shapeToStep", "booleanHistoryFromStep"], "buildOptimization": "OCCT dependencies -O0 with Emscripten -fexceptions; Embind wrapper -O2 with -fexceptions", "artifact": { "javascript": "native/occt-history/dist/bitbybit-occt-history.js", "wasm": "native/occt-history/dist/bitbybit-occt-history.wasm", "javascriptSha256": "e2feca5a8bab431e3351e6af3972beef4f9ce47fe02de2d0ac7ba9de91882311", "wasmSha256": "6fac28102132ddeb8e7f1f254c76643d595cc60a26b2adf80fe3d6407b18b675" }, "protocol": "native result and history records stay inside the provider; cross-WASM handles are forbidden; STEP text is the explicit transport boundary", "historyProtocol": { "version": 1, "request": "NativeOcctHistoryRequest", "response": "NativeOcctHistoryProtocolResponse", "transport": "step-text", "cancellation": "AbortSignal", "timeout": "coordinator-configured", "staleGuard": "documentId + documentVersion + operationId" }, "browserWorker": { "entry": "src/facade/nativeHistoryWorkerEntry.ts", "client": "src/facade/nativeHistoryWorkerClient.ts", "moduleUrl": "/native/occt-history/bitbybit-occt-history.js", "runtimeConfiguration": "BitbybitGeometryRuntime.configureNativeHistory(provider, timeoutMs)", "artifactPublishCommand": "./npmw run build:occt-history", "status": "worker-provider-configurable-not-default-runtime" }, "buildCommand": "./npmw run build:occt-history", "testCommand": "./npmw run test:occt-history" }, "facadeCapabilities": { "geometry": { "level": "experimental", "provider": "BitBybit OCCT 1.1.1", "operations": ["box", "cylinder", "sphere", "cone", "placement", "object-placement-recompute", "placement-validation", "mirror-plane", "mirrored-whole-shape", "multi-transform-whole-shape", "union", "cut", "intersection", "part-primitive-recompute", "part-boolean-recompute", "shape-check", "pad", "pocket", "pocket-through-all", "revolution", "fillet", "chamfer", "linear-pattern-whole-shape", "polar-pattern-whole-shape", "hole-basic-origin-normal", "feature-shape-cache", "face-edge-vertex-topology", "step-export", "stl-export"] }, "document": { "level": "experimental", "operations": ["typed-properties", "property-vector", "property-placement", "property-multi-transform", "property-link-list", "property-string-list", "property-link-sub", "expressions", "units", "dependency-dag", "parallel-level-recompute", "sync-recompute", "async-generation-recompute", "root-cause-diagnostics", "repair-branch-recompute", "versioned-toporef", "toporef-migration", "generation-topology-snapshot", "linksub-external-geometry-migration", "ambiguous-deleted-topology-diagnostics", "toporef-candidate-replacement-transaction", "signature-topology-history-fallback", "native-topology-history-adapter", "undo-redo"] }, "persistence": { "level": "experimental", "provider": "SQLite WASM + OPFS with transient fallback", "operations": ["schema-v6", "object-topology-snapshots", "transactional-migrations", "migration-rollback", "serialized-write-queue", "five-version-checkpoints", "checkpoint-load", "recovery-report", "content-addressed-resources", "quota-preflight", "resource-sweep-plan", "opfs-orphan-sweep", "cross-tab-lock-notice"] }, "sketcher": { "level": "experimental", "provider": "typescript-basic; planegcs-wasm unavailable", "operations": ["point-line-circle-arc-model", "ellipse-bspline-model-only", "construction-geometry", "stable-external-geometry-model", "basic-constraints", "diameter-symmetric-tangent", "basic-solver", "versioned-solver-protocol", "solver-capability-probe", "cancel-stale-isolation", "replay-contract", "persistence"] }, "fcstd": { "level": "read-only", "operations": ["zip-preflight", "document-xml-metadata", "document-property-projection", "proxy-report", "script-isolation"] }, "verification": { "level": "experimental", "provider": "FreeCADCmd 1.1.1 native headless Part oracle", "operations": ["locked-source-commit", "reproducible-native-build", "declarative-golden-contract", "part-geometry-replay", "numeric-tolerance-comparison"] } }, "rules": [ "UI status does not imply geometry or file compatibility.", "Every implementation must update this matrix before claiming support.", "Unsupported commands remain visible only when the workbench manifest exposes an explicit reason." ] }