{
  "schemaVersion": 1,
  "scope": "candidate-only-freecad-wasm-sdk-build",
  "baseline": {
    "freecadVersion": "1.1.1",
    "sourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
    "emscriptenVersion": "3.1.69",
    "qtVersion": "6.8.2",
    "target": "wasm32-emscripten"
  },
  "source": {
    "path": ".cache/freecad/FreeCAD",
    "mode": "detached-pinned-commit",
    "requiredClean": true
  },
  "sourceOverlay": {
    "path": ".cache/toolchains/freecad-naming-sdk/source-occt8",
    "command": "npm run prepare:freecad-occt8-overlay",
    "migration": "OCCT 8 migrate_raise_to_throw.py and replace_typedefs.py",
    "productionPublication": false
  },
  "toolchain": {
    "emscriptenRoot": "EMSDK",
    "qtPrefix": ".cache/toolchains/qt6/install-wasm-freecad",
    "cmakeGenerator": "Ninja"
  },
  "dependencyBuilds": [
    {
      "name": "Qt6",
      "version": "6.8.2",
      "command": "npm run build:qt6-freecad-wasm",
      "targetArchives": ["QtCore", "QtConcurrent", "QtNetwork", "QtXml"]
    },
    {
      "name": "yaml-cpp",
      "version": "0.8.0",
      "sourceCommit": "f7320141120f720aecc4c32be25586e7da9eb978",
      "command": "npm run build:yaml-cpp-wasm",
      "targetArchives": ["yaml-cpp"]
    },
    {
      "name": "ICU",
      "version": "68.2",
      "sourceSha256": "c79193dee3907a2199b8296a93b52c5cb74332c26f3d167269487680d479d625",
      "command": "npm run build:icu-wasm",
      "targetArchives": ["icuuc", "icui18n", "icudata"]
    },
    {
      "name": "CPython",
      "version": "3.13.5",
      "sourceSha256": "93e583f243454e6e9e4588ca2c2662206ad961659863277afcdb96801647d640",
      "command": "npm run build:cpython-wasm",
      "targetArchives": ["python3.13"]
    },
    {
      "name": "Xerces-C",
      "version": "3.2.4",
      "sourceSha256": "075bc57940da0f9be6dd183c550c8ce0b9833e4550dc382048377a1a5e3b2bd9",
      "command": "npm run build:xerces-c-wasm",
      "targetArchives": ["xerces-c"]
    },
    {
      "name": "Boost",
      "version": "1.83.0",
      "sourceSha256": "6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e",
      "command": "npm run build:boost-wasm",
      "targetArchives": ["boost_program_options", "boost_regex", "boost_thread", "boost_date_time", "boost_atomic"]
    }
  ],
  "configuration": {
    "buildDirectory": ".cache/toolchains/freecad-naming-sdk/build-wasm",
    "installDirectory": ".cache/toolchains/freecad-naming-sdk/install-wasm",
    "buildType": "Release",
    "buildGui": false,
    "developerTests": false,
    "python": "required",
    "modules": ["Part"],
    "productionPublication": false
  },
  "requiredArchives": [
    "FreeCADBase",
    "FreeCADApp",
    "Part",
    "Python"
  ],
  "knownConfigurationLimits": [
    "Qt Core/Concurrent/Network/Xml wasm archives are built locally with thread support for the candidate SDK.",
    "yaml-cpp 0.8.0 is built as a wasm static archive for the required Material module.",
    "CPython 3.13.5 development headers and its pthread-enabled wasm static archive are staged for the candidate SDK.",
    "Xerces-C 3.2.4 is built as a wasm static archive against the staged ICU libraries.",
    "The headless candidate omits Base/App Qt translation resources because Qt LinguistTools is not part of the target SDK.",
    "Qt disables its timezone backend on WebAssembly; the candidate formats FreeCAD diagnostic timestamps in deterministic UTC.",
    "FreeCAD's disabled Linux backtrace block still includes execinfo.h; a candidate-only empty header satisfies that unused include without exposing backtrace APIs.",
    "OCCT 8.0 keeps FreeCAD 1.1.1's TopTools collection typedefs under Deprecated/NCollectionAliases; the candidate includes that pinned source compatibility directory explicitly.",
    "OCCT 8.0 removed Standard_*::Raise; a disposable FreeCAD worktree overlay applies the pinned OCCT migrate_raise_to_throw.py phase without modifying the locked source checkout.",
    "OCCT 8.0 folds legacy iterator typedefs into collection headers; the disposable overlay maps six removed include-only iterator headers after the official typedef migration.",
    "OCCT 8.0 removes Standard_Failure RTTI; the disposable overlay replaces exception-only DynamicType calls with the documented ExceptionType API.",
    "OCCT 8.0 removes BRepLProp_CurveTool; its parameter forwarding calls are mapped to BRepAdaptor_Curve's inherited FirstParameter and LastParameter methods.",
    "OCCT 8.0 consolidates Geom2dLProp into GeomLProp; the overlay maps Geom2dLProp_CLProps2d to the signature-compatible GeomLProp_CLProps2d specialization.",
    "OCCT 8.0 adds NCollection_List initializer-list construction; three ShapeMapper calls explicitly retain FreeCAD's original std::vector<TopoShape> overload.",
    "OCCT 8.0 makes Standard_Failure a std::exception; three identical trailing handlers are removed after their std::exception handler to avoid unreachable exception paths.",
    "FreeCAD declares Base/App/Part as SHARED; the candidate toolchain archives their wasm objects with emar and links dependencies separately.",
    "The upstream FreeCAD CMake project currently creates shared libraries and requires a full wasm dependency graph; this plan does not treat a host build as a wasm SDK."
  ],
  "boundary": {
    "freecadNamingBuildStatus": "production-linked",
    "exTsn02": "completed",
    "systemExact": false,
    "workerLinked": true,
    "callbacks": ["freecadNamingAbiVersion", "freecadNamingCapabilitiesJson", "freecadNamingEvidenceJson"]
  }
}
