{ "schema": "freecad-web-p6-material-source-boundary/v1", "taskId": "FW-P6-MAT-A", "module": "Material", "result": "pass_boundary", "sourceRevision": "a6f251f65787f526568802e0f428f71ac871dea1", "commands": [ "rg -n \"BUILD_|Init|addObject|registerType|PyInit\" src/Mod/Material" ], "cmake": { "module": { "file": "src/Mod/Material/CMakeLists.txt", "appLine": 3, "guiGuardLines": [ 5, 7 ], "scriptsLines": [ 9, 17 ] }, "app": { "file": "src/Mod/Material/App/CMakeLists.txt", "target": "Materials", "targetLine": 138, "webDefinitionLines": [ 140, 142 ], "externalGuardLines": [ 11, 13, 127, 136 ], "dependencies": [ "FreeCADApp", "QtConcurrent", "yaml-cpp" ], "linkLine": 173 }, "gui": { "file": "src/Mod/Material/Gui/CMakeLists.txt", "target": "MatGui", "targetLine": 159, "externalGuardLines": [ 9, 11, 52, 57, 129, 138 ], "dependencies": [ "Materials", "FreeCADGui", "QtConcurrent" ], "linkLine": 198 } }, "appBoundary": { "moduleEntry": { "file": "src/Mod/Material/App/AppMaterial.cpp", "line": 76, "symbol": "PyMOD_INIT_FUNC(Materials)" }, "pythonTypes": { "file": "src/Mod/Material/App/AppMaterial.cpp", "lines": [ 88, 99 ], "names": [ "Array2D", "Array3D", "MaterialFilter", "MaterialFilterOptions", "MaterialLibrary", "MaterialManager", "MaterialProperty", "Material", "ModelManager", "ModelProperty", "Model", "UUIDs" ] }, "nativeTypes": { "file": "src/Mod/Material/App/AppMaterial.cpp", "lines": [ 105, 131 ], "count": 27, "externalConditional": [ 112, 115 ] }, "pythonSources": { "file": "src/Mod/Material/App/CMakeLists.txt", "lines": [ 56, 82 ], "generatedBindings": 12 } }, "guiBoundary": { "moduleEntry": { "file": "src/Mod/Material/Gui/AppMatGui.cpp", "line": 77, "symbol": "PyMOD_INIT_FUNC(MatGui)" }, "guiDependencyGuard": { "file": "src/Mod/Material/Gui/AppMatGui.cpp", "lines": [ 79, 82 ], "condition": "Gui::Application::Instance" }, "materialModuleImport": { "file": "src/Mod/Material/Gui/AppMatGui.cpp", "lines": [ 84, 91 ], "import": "Materials" }, "registration": { "file": "src/Mod/Material/Gui/AppMatGui.cpp", "lines": [ 97, 128 ], "symbols": [ "MatGui::Workbench", "MatGui::MaterialTreeWidget" ] } }, "actionEntrypoints": [ { "file": "src/Mod/Material/Init.py", "kind": "module-script" }, { "file": "src/Mod/Material/InitGui.py", "kind": "gui-script" }, { "file": "src/Mod/Material/importFCMat.py", "kind": "import-script" }, { "file": "src/Mod/Material/MaterialEditor.py", "kind": "material-editor" }, { "file": "src/Mod/Material/App/MaterialManager.cpp", "kind": "native-material-manager" }, { "file": "src/Mod/Material/App/PropertyMaterial.cpp", "kind": "document-property" } ], "conditions": { "gui": "BUILD_GUI controls the MatGui subdirectory", "external": "BUILD_MATERIAL_EXTERNAL adds external manager sources and GUI migration/settings sources", "runtime": "This card records source boundaries only; no WASM runtime or browser capability is claimed." }, "matches": { "module": [ "3:add_subdirectory(App)", "5:if(BUILD_GUI)", "6: add_subdirectory(Gui)", "7:endif(BUILD_GUI)" ], "app": [ "11:if(BUILD_MATERIAL_EXTERNAL)", "12: add_definitions(-DBUILD_MATERIAL_EXTERNAL)", "13:endif(BUILD_MATERIAL_EXTERNAL)", "33:generate_from_py(Array2D)", "34:generate_from_py(Array3D)", "35:generate_from_py(MaterialFilter)", "36:generate_from_py(MaterialFilterOptions)", "37:generate_from_py(MaterialLibrary)", "38:generate_from_py(MaterialManager)", "39:generate_from_py(Material)", "40:generate_from_py(ModelManager)", "41:generate_from_py(ModelProperty)", "42:generate_from_py(MaterialProperty)", "43:generate_from_py(Model)", "44:generate_from_py(UUIDs)", "127:if(BUILD_MATERIAL_EXTERNAL)", "136:endif(BUILD_MATERIAL_EXTERNAL)", "138:add_library(Materials SHARED ${Materials_SRCS})", "140:if(FREECAD_WEB)", "141: target_compile_definitions(Materials PRIVATE FREECAD_WEB_CORE)", "168:if(BUILD_MATERIAL_EXTERNAL)", "170:endif(BUILD_MATERIAL_EXTERNAL)", "173:target_link_libraries(Materials ${Materials_LIBS})" ], "gui": [ "9:if(BUILD_MATERIAL_EXTERNAL)", "10: add_definitions(-DBUILD_MATERIAL_EXTERNAL)", "11:endif(BUILD_MATERIAL_EXTERNAL)", "52:if(BUILD_MATERIAL_EXTERNAL)", "57:endif(BUILD_MATERIAL_EXTERNAL)", "129:if(BUILD_MATERIAL_EXTERNAL)", "138:endif(BUILD_MATERIAL_EXTERNAL)", "159:add_library(MatGui SHARED", "187:target_link_libraries(MatGui ${MatGui_LIBS})" ], "appEntry": [ "76:PyMOD_INIT_FUNC(Materials)", "88: Base::Interpreter().addType(&Materials::Array2DPy::Type, module, \"Array2D\");", "89: Base::Interpreter().addType(&Materials::Array3DPy::Type, module, \"Array3D\");", "90: Base::Interpreter().addType(&Materials::MaterialFilterPy::Type, module, \"MaterialFilter\");", "91: Base::Interpreter().addType(&Materials::MaterialFilterOptionsPy::Type, module, \"MaterialFilterOptions\");", "92: Base::Interpreter().addType(&Materials::MaterialLibraryPy::Type, module, \"MaterialLibrary\");", "93: Base::Interpreter().addType(&Materials::MaterialManagerPy::Type, module, \"MaterialManager\");", "94: Base::Interpreter().addType(&Materials::MaterialPropertyPy::Type, module, \"MaterialProperty\");", "95: Base::Interpreter().addType(&Materials::MaterialPy::Type, module, \"Material\");", "96: Base::Interpreter().addType(&Materials::ModelManagerPy::Type, module, \"ModelManager\");", "97: Base::Interpreter().addType(&Materials::ModelPropertyPy::Type, module, \"ModelProperty\");", "98: Base::Interpreter().addType(&Materials::ModelPy::Type, module, \"Model\");", "99: Base::Interpreter().addType(&Materials::UUIDsPy::Type, module, \"UUIDs\");", "105: Materials::Material ::init();", "106: Materials::MaterialFilter ::init();", "107: Materials::MaterialFilterOptions ::init();", "108: Materials::MaterialManager ::init();", "109: Materials::MaterialManagerLocal ::init();", "110: Materials::Model ::init();", "111: Materials::ModelManager ::init();", "113: Materials::MaterialManagerExternal ::init();", "114: Materials::ModelManagerExternal ::init();", "116: Materials::ModelManagerLocal ::init();", "117: Materials::ModelUUIDs ::init();", "119: Materials::Library ::init();", "120: Materials::MaterialLibrary ::init();", "121: Materials::MaterialLibraryLocal ::init();", "122: Materials::ModelLibrary ::init();", "124: Materials::ModelProperty ::init();", "125: Materials::MaterialProperty ::init();", "127: Materials::MaterialValue ::init();", "128: Materials::Array2D ::init();", "129: Materials::Array3D ::init();", "131: Materials::PropertyMaterial ::init();" ], "guiEntry": [ "77:PyMOD_INIT_FUNC(MatGui)", "79: if (!Gui::Application::Instance) {", "86: Base::Interpreter().runString(\"import Materials\");", "97: MatGui::Workbench ::init();", "128: MatGui::MaterialTreeWidget::init();" ] }, "sourceSha256": { "src/Mod/Material/CMakeLists.txt": "caf64ec0735f450e22b1e376ed9f7b9eabfa24b7c0970b3eb9820d8e5629ab12", "src/Mod/Material/App/CMakeLists.txt": "e0e20117ebe57ec52d9001d4ea1bc0fa5f96a8e3222c3a24582e3c68280668df", "src/Mod/Material/Gui/CMakeLists.txt": "7e212feb5059c153d54475da8a1cfeae9cbd5ce5380bc944c7f595c6ce7d569b", "src/Mod/Material/App/AppMaterial.cpp": "49cb52fc94e14fd3e41fd5b72f8928499d2bddea0bb030f3a25dba00ad04ed2f", "src/Mod/Material/Gui/AppMatGui.cpp": "62896b6d10a10bce6932fed2720eb0670460bc3295f9ad533cc7b9d0214e0b44" }, "boundaries": [ "App and Gui are separate targets; BUILD_GUI gates only Gui while Materials remains the native App target.", "BUILD_MATERIAL_EXTERNAL is conditional and is not counted as available in the Web boundary without an explicit dependency closure.", "No runtime probe, API parity, persistence, or Chrome result is inferred from this source inventory." ] }