{
  "schemaVersion": 1,
  "freecadBaseline": "freecad-1.1.1",
  "workbenches": {
    "Part Design": { "status": "facade-partial", "level": "experimental", "commands": ["create-body", "create-sketch", "shape-binder", "datum", "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": "domain-contract", "level": "experimental", "commands": ["working-plane", "snap-settings", "draft-line", "draft-wire", "draft-circle", "move", "rotate", "scale", "offset", "array", "clone", "layer"] },
    "TechDraw": { "status": "domain-contract", "level": "experimental", "commands": ["new-page", "view-part", "section-view", "dimension", "annotation", "svg-export"] },
    "Spreadsheet": { "status": "domain-contract", "level": "experimental", "commands": ["new-sheet", "set-alias", "expression", "bind-property", "csv-export"] },
    "Assembly": { "status": "domain-contract", "level": "experimental", "commands": ["insert-component", "ground-component", "connector", "coincident", "concentric", "distance", "angle", "solve-assembly", "bom", "collision-check", "explode-view", "variant"] },
    "BIM": { "status": "domain-contract", "level": "experimental", "commands": ["wall", "structure", "window", "level", "space", "material", "quantity-schedule", "ifc-export"] },
    "CAM": { "status": "domain-contract", "level": "experimental", "commands": ["new-job", "stock", "tool", "profile-path", "simulate", "gcode-export"] },
    "FEM": { "status": "domain-contract", "level": "experimental", "commands": ["new-analysis", "material", "mesh", "fix-node", "load", "solve-reference-bar", "results-csv"] },
    "Mesh": { "status": "domain-contract", "level": "experimental", "commands": ["mesh-import", "weld-vertices", "analyze-mesh", "remove-degenerate", "repair-triangle", "mesh-transform", "obj-export"] },
    "Surface": { "status": "domain-contract", "level": "experimental", "commands": ["bspline", "bezier", "fill-surface", "loft-surface", "trim-surface", "sew-surface", "surface-continuity"] },
    "Inspection": { "status": "domain-contract", "level": "experimental", "commands": ["measure-distance", "measure-angle", "measure-area", "measure-volume", "check-dependencies", "csv-report"] },
    "AddonManager": { "status": "domain-contract", "level": "experimental", "commands": ["addon-list", "addon-install", "addon-update", "addon-remove", "addon-rollback", "addon-permissions"] },
    "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": "data-adapter-registry", "level": "read-only", "commands": ["idf-import", "idf-export"] },
    "Import": { "status": "domain-contract", "level": "experimental", "commands": ["import-model", "import-batch", "import-options"] },
    "JtReader": { "status": "data-adapter-registry", "level": "read-only", "commands": ["jt-import", "jt-assembly", "jt-export"] },
    "Material": { "status": "domain-contract", "level": "experimental", "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": "data-adapter-registry", "level": "read-only", "commands": ["openscad-import", "openscad-export", "openscad-preview"] },
    "Plot": { "status": "domain-contract", "level": "experimental", "commands": ["plot-create", "plot-style", "plot-bind", "plot-svg-export", "plot-csv-export"] },
    "Points": { "status": "data-adapter-registry", "level": "read-only", "commands": ["points-import", "points-filter", "points-export"] },
    "ReverseEngineering": { "status": "data-adapter-registry", "level": "read-only", "commands": ["fit-curve", "fit-surface", "reverse-engineer"] },
    "Robot": { "status": "domain-contract", "level": "experimental", "commands": ["robot-model", "joint-limits", "waypoint", "robot-trajectory", "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": "domain-contract", "level": "experimental", "commands": ["macro-record", "macro-replay", "facade-command"] },
    "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",
    "wasmArtifact": { "path": "node_modules/@bitbybit-dev/occt/bitbybit-dev-occt/bitbybit-dev-occt.a4a6ec2a.wasm", "sha256": "1b6a8fc7b83d222854f73b66af8d0e45ad4fdee025904b447e885d4e18ae8656", "status": "compiled-artifact-verified" },
    "missingBuildInputs": ["OCCT C++ source checkout", "Embind generation rules", "Emscripten link/export manifest"],
    "evidence": "./npmw run check:bitbybit-history"
  },
  "nativeOcctHistory": {
    "status": "built-provider-browser-verified-default-worker",
    "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", "TKBool", "TKFillet", "TKOffset", "TKDESTEP", "TKXSBase", "TKDE"],
    "bindings": ["BRepPrimAPI_MakeBox", "BRepPrimAPI_MakeCylinder", "BRepPrimAPI_MakeSphere", "BRepPrimAPI_MakeCone", "BRepPrimAPI_MakePrism", "BRepPrimAPI_MakeRevol", "BRepBuilderAPI_Transform", "BRepFilletAPI_MakeFillet", "BRepFilletAPI_MakeChamfer", "BRepOffsetAPI_DraftAngle", "BRepOffsetAPI_MakePipe", "BRepOffsetAPI_MakeThickSolid", "BRepAlgoAPI_Fuse", "BRepAlgoAPI_Cut", "BRepAlgoAPI_Common", "Generated", "Modified", "IsDeleted", "BRepCheck_Analyzer", "BRepGProp", "BRepBndLib", "TopExp_Explorer", "STEPControl_Reader", "STEPControl_Writer", "shapeToStep", "shapeSummary", "booleanProbe", "booleanResult", "booleanHistoryFromStep", "prismHistoryFromStep", "pocketHistoryFromStep", "loftHistoryFromStep", "pipeHistoryFromStep", "revolutionHistoryFromStep", "grooveHistoryFromStep", "filletHistoryFromStep", "chamferHistoryFromStep", "holeHistoryFromStep", "draftHistoryFromStep", "thicknessHistoryFromStep", "linearPatternHistoryFromStep", "polarPatternHistoryFromStep", "mirroredHistoryFromStep", "multiTransformHistoryFromStep", "makeRectangleFace", "makeRectangleFacePlaced", "makeLineWire"],
    "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",
      "data": "native/occt-history/dist/bitbybit-occt-history.data",
      "javascriptSha256": "6a90575b81ceab5c00a2440e45e010bd62d3455b012541b4449f7b0e88a644c0",
      "wasmSha256": "c03cf553e71bf4e74667c5aada921769bb241d6021f28a5b166b49c738965515",
      "dataSha256": "ada204b276208027a5cb1cc1288d4aab95b8ee1f28e3a43a00cd062720b87e99"
    },
    "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",
      "namingEvidence": {
        "status": "explicit-runtime-contract",
        "mappedNameRef": "optional provider evidence; final-shape-only stages are marked and cannot mint FreeCAD tokens",
        "stringHasher": "optional opaque native table; validated and preserved losslessly",
        "exactBlockers": ["exhaustive cross-feature naming and FCStd round-trip corpus", "complete native document and property semantics"]
      }
    },
    "freecadNamingBuild": {
      "status": "production-linked",
      "prerequisiteStatus": "real-isolated-freecad-private-naming-bridge-pass",
      "sdkReadinessStatus": "candidate-complete",
      "sdkEnvironment": "FREECAD_WASM_SDK_DIR",
      "requiredManifest": "manifest.json",
      "requiredCallbacks": ["freecadNamingAbiVersion", "freecadNamingCapabilitiesJson", "freecadNamingEvidenceJson"],
      "requiredFreecadVersion": "1.1.1",
      "requiredSourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
      "requiredEmscriptenVersion": "3.1.69",
      "buildCommand": "./npmw run build:occt-history",
      "candidateBuildCommand": "./npmw run build:freecad-naming-worker",
      "qtCoreBuildCommand": "./npmw run build:qt6-wasm-core",
      "qtFreecadSdkBuildCommand": "./npmw run build:qt6-freecad-wasm",
      "yamlCppBuildCommand": "./npmw run build:yaml-cpp-wasm",
      "icuBuildCommand": "./npmw run build:icu-wasm",
      "pythonBuildCommand": "./npmw run build:cpython-wasm",
      "xercesBuildCommand": "./npmw run build:xerces-c-wasm",
      "boostBuildCommand": "./npmw run build:boost-wasm",
      "sourceProbeBuildCommand": "./npmw run build:freecad-naming-source-probe",
      "sourceProbeTestCommand": "./npmw run test:freecad-naming-source-probe",
      "sdkReadinessCommand": "./npmw run check:freecad-naming-sdk-readiness",
      "sdkManifestCommand": "./npmw run generate:freecad-naming-sdk-manifest",
      "isolatedBridgeBuildCommand": "./npmw run build:freecad-naming-bridge-candidate",
      "isolatedBridgeTestCommand": "./npmw run test:freecad-naming-bridge-candidate",
      "candidateWorkerTestCommand": "./npmw run test:freecad-naming-worker-candidate",
      "candidateChromeRunCommand": "./npmw run test:chrome-freecad-naming-worker-candidate",
      "candidateChromeCheckCommand": "./npmw run check:chrome-freecad-naming-worker-candidate",
      "productionNodeTestCommand": "./npmw run test:freecad-naming-production",
      "productionChromeRunCommand": "./npmw run test:chrome-freecad-naming-production",
      "productionCheckCommand": "./npmw run check:freecad-naming-production",
      "boundaryCheckCommand": "./npmw run check:freecad-private-naming-boundary",
      "checkCommand": "./npmw run check:freecad-naming-sdk",
      "statusBoundary": "Production Node and Chrome matrices prove all 19 callbacks/builders for EX-TSN-02; systemExact remains false until the broader exact plan closes"
    },
    "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": "default-application-worker-with-fallback",
      "browserVerification": "config/occt-browser-verification.json",
      "threeWayVerification": "config/freecad-bitbybit-native-threeway.json",
      "operations": ["worker-initialize", "worker-cancel", "worker-stale-isolation", "worker-crash-recovery-contract", "ownership-ledger-metrics", "browser-memory-budget-gate", "upstream-abi-golden-drift-gate", "artifact-dist-public-hash"]
    },
    "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", "loft", "pipe", "fillet", "chamfer", "linear-pattern-whole-shape", "polar-pattern-whole-shape", "hole-basic-origin-normal", "feature-shape-cache", "face-edge-vertex-topology", "native-cross-feature-history-routing", "step-export", "stl-export"], "featureLevels": { "pad": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it"] }, "pocket": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it"] }, "revolution": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it"] }, "groove": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it", "OCCT/FreeCAD private token generation"] }, "boolean": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it", "isomorphic source ambiguity"] }, "fillet": { "level": "experimental", "exactBlockedBy": ["complete cross-feature native stage history"] }, "chamfer": { "level": "experimental", "exactBlockedBy": ["complete cross-feature native stage history"] }, "multi-transform": { "level": "experimental", "exactBlockedBy": ["feature-list native history", "private naming tokens"] } } },
    "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", "adjacency-fingerprint-disambiguation", "toporef-candidate-replacement-transaction", "signature-topology-history-fallback", "native-topology-history-adapter", "native-cross-feature-history-routing", "runtime-mapped-name-ref-evidence", "string-hasher-evidence-validation", "element-map2-multi-stage-name-mapping", "isomorphic-candidate-persistence", "element-map-name-contract", "undo-redo"] },
    "persistence": { "level": "experimental", "provider": "SQLite WASM + OPFS with transient fallback", "operations": ["schema-v7", "stable-native-object-tags", "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; FreeCAD 1.1.1 planegcs WASM core installed", "operations": ["point-line-circle-arc-model", "ellipse-bspline-periodic-model", "construction-geometry", "geometry-validation", "stable-geometry-signature", "stable-external-geometry-model", "basic-constraints", "advanced-constraint-proxy", "diameter-symmetric-tangent", "basic-solver", "versioned-solver-protocol", "solver-capability-probe", "cancel-stale-isolation", "replay-contract", "planegcs-native-system-solve", "planegcs-horizontal-distance", "planegcs-vertical-distance", "planegcs-distance-x", "planegcs-distance-y", "planegcs-angle", "planegcs-circle-radius", "planegcs-circle-diameter", "planegcs-equal-lines", "planegcs-equal-circles", "planegcs-tangent-circles", "planegcs-point-symmetry", "planegcs-point-on-object", "planegcs-point-on-arc", "planegcs-point-on-ellipse", "planegcs-point-on-cubic-bspline", "planegcs-block-freeze", "planegcs-parallel-lines", "planegcs-perpendicular-lines", "planegcs-coincident-lines", "planegcs-snells-law-lines", "planegcs-ellipse-internal-alignment", "planegcs-cubic-bspline-weight", "planegcs-dedicated-worker-smoke", "persistence"] },
    "fcstd": { "level": "read-only", "operations": ["zip-preflight", "document-xml-metadata", "document-property-projection", "live-topology-element-map", "proxy-report", "script-isolation"] },
    "viewport": { "level": "experimental", "provider": "Three.js WebGL2", "operations": ["mesh-rendering", "multi-object-mesh-registry", "view-orientation", "fit-and-zoom", "subshape-triangle-mapping", "subshape-click-selection", "subshape-hover-preselection", "subshape-hover-highlight", "occt-analytic-picking-topology", "brep-edge-polyline-picking", "edge-pixel-tolerance-picking", "vertex-pixel-tolerance-picking", "diagnostic-selection-flash", "multi-object-selection-set", "modifier-box-selection-gesture", "window-contained-box-selection", "crossing-intersection-box-selection", "multi-object-selection-highlight", "object-visibility-projection", "selection-resource-release"] },
    "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", "execution-plan-validation", "source-inventory-validation", "type-property-inventory-validation"] }
  },
  "systemExactEvaluation": {
    "evaluatedAt": "2026-08-14",
    "exact": false,
    "featureExactCount": 0,
    "plan": "config/freecad-web-exact-parity-plan.json",
    "promotionTask": "EX-REL-01",
    "taskStatus": { "completed": 5, "inProgress": 36, "pending": 11, "blocked": 0 },
    "blockers": ["exhaustive cross-feature naming and FCStd round-trip corpus", "complete native document and property semantics"]
  },
  "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."
  ]
}
