Files
FreeCADWasmDev/docs/p6/material-source-boundary.json
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

277 lines
9.2 KiB
JSON

{
"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."
]
}