243 lines
10 KiB
JSON
243 lines
10 KiB
JSON
{
|
|
"schema": "freecad-web-p6-sandbox-source-boundary/v1",
|
|
"taskId": "FW-P6-SDB-A",
|
|
"module": "Sandbox",
|
|
"result": "pass_boundary",
|
|
"sourceRevision": "0644133717ebc04fae2194bb5ef9eec06880f909",
|
|
"sourceTree": {
|
|
"dirty": true,
|
|
"unrelatedModifiedPaths": [
|
|
"src/Mod/Part/App/TopoShapeCache.cpp",
|
|
"src/Mod/Part/App/TopoShapeExpansion.cpp",
|
|
"src/WebAssembly/FreeCADCoreProbe/CMakeLists.txt",
|
|
"src/WebAssembly/FreeCADCoreProbe/PartBoxProbe.cpp",
|
|
"src/WebAssembly/FreeCADCoreProbe/PartDesignRuntimeProbe.cpp",
|
|
"src/WebAssembly/FreeCADCoreProbe/PointsRuntimeProbe.cpp",
|
|
"src/WebAssembly/FreeCADCoreProbe/part-python-smoke-r1.js",
|
|
"src/WebAssembly/FreeCADCoreProbe/part-save-reopen-smoke.js",
|
|
"src/WebAssembly/FreeCADCoreProbe/partdesign-persistence-smoke.js",
|
|
"src/WebAssembly/FreeCADCoreProbe/partdesign-runtime-smoke.js",
|
|
"src/WebAssembly/FreeCADCoreProbe/points-kernel-smoke.js",
|
|
"src/WebAssembly/FreeCADCoreProbe/points-persistence-smoke.js",
|
|
"src/WebAssembly/FreeCADCoreProbe/points-recovery-smoke.js",
|
|
"src/WebAssembly/FreeCADCoreProbe/points-runtime-smoke.js"
|
|
]
|
|
},
|
|
"inputs": {
|
|
"workbenchInventory": {
|
|
"path": "docs/workbench-inventory.json",
|
|
"sha256": "06a0ff0d65e5b9d875b10ae5c88c064da5e2b166c131648e97d6c1f48e0ce263"
|
|
},
|
|
"objectInventory": {
|
|
"path": "docs/object-inventory.json",
|
|
"sha256": "020205e72184e2d92677c81cd183aabb2f9258204d11dc9f42fceddcc0a87c66"
|
|
}
|
|
},
|
|
"commands": [
|
|
"rg -n \"BUILD_|Init|addObject|registerType|PyInit\" src/Mod/Sandbox",
|
|
"git rev-parse HEAD",
|
|
"git status --short --branch",
|
|
"sha256sum docs/workbench-inventory.json docs/object-inventory.json"
|
|
],
|
|
"cmake": {
|
|
"module": {
|
|
"file": "src/Mod/Sandbox/CMakeLists.txt",
|
|
"appSubdirectory": { "lines": [3, 3], "condition": null },
|
|
"guiSubdirectory": { "lines": [4, 6], "condition": "BUILD_GUI" },
|
|
"scripts": { "lines": [8, 15], "base": ["Init.py", "exportDRAWEXE.py"], "gui": "InitGui.py when BUILD_GUI" }
|
|
},
|
|
"app": {
|
|
"file": "src/Mod/Sandbox/App/CMakeLists.txt",
|
|
"target": "Sandbox",
|
|
"targetLine": 45,
|
|
"sourcesLines": [29, 38],
|
|
"dependencies": ["Mesh"],
|
|
"linkLine": 46,
|
|
"pythonPackagingLines": [60, 61],
|
|
"qtIncludeConditionLines": [12, 22]
|
|
},
|
|
"gui": {
|
|
"file": "src/Mod/Sandbox/Gui/CMakeLists.txt",
|
|
"target": "SandboxGui",
|
|
"targetLine": 58,
|
|
"sourcesLines": [40, 52],
|
|
"dependencies": ["Sandbox", "Part", "FreeCADGui"],
|
|
"linkLine": 59,
|
|
"qtIncludeConditionLines": [9, 19],
|
|
"openGlAndCoinSources": ["GLGraphicsView.cpp", "Overlay.cpp"]
|
|
},
|
|
"moduleGate": {
|
|
"file": "src/Mod/CMakeLists.txt",
|
|
"lines": [93, 95],
|
|
"condition": "BUILD_SANDBOX"
|
|
}
|
|
},
|
|
"appBoundary": {
|
|
"moduleEntry": {
|
|
"file": "src/Mod/Sandbox/App/AppSandbox.cpp",
|
|
"line": 248,
|
|
"symbol": "PyMOD_INIT_FUNC(Sandbox)"
|
|
},
|
|
"nativeRegistration": {
|
|
"file": "src/Mod/Sandbox/App/AppSandbox.cpp",
|
|
"lines": [250, 255],
|
|
"symbols": ["DocumentProtector::init", "SandboxObject::init", "Sandbox::initModule"]
|
|
},
|
|
"pythonRegistration": {
|
|
"file": "src/Mod/Sandbox/App/AppSandbox.cpp",
|
|
"lines": [196, 215],
|
|
"types": ["PythonBaseClass", "DocumentProtectorPy", "DocumentObjectProtectorPy"],
|
|
"moduleFunctions": ["DocumentProtector", "DocumentObjectProtector"]
|
|
},
|
|
"documentObjectType": {
|
|
"file": "src/Mod/Sandbox/App/DocumentThread.cpp",
|
|
"propertySourceLine": 164,
|
|
"type": "Sandbox::SandboxObject",
|
|
"propertyLine": 168,
|
|
"executeLines": [175, 185]
|
|
},
|
|
"pythonProtectorMethods": {
|
|
"file": "src/Mod/Sandbox/App/DocumentProtectorPy.cpp",
|
|
"initTypeLines": [41, 52],
|
|
"actionLines": [124, 150],
|
|
"methods": ["addObject", "recompute"]
|
|
}
|
|
},
|
|
"guiBoundary": {
|
|
"moduleEntry": {
|
|
"file": "src/Mod/Sandbox/Gui/AppSandboxGui.cpp",
|
|
"line": 194,
|
|
"symbol": "PyMOD_INIT_FUNC(SandboxGui)"
|
|
},
|
|
"guiGuard": {
|
|
"file": "src/Mod/Sandbox/Gui/AppSandboxGui.cpp",
|
|
"lines": [196, 199],
|
|
"condition": "Gui::Application::Instance"
|
|
},
|
|
"appModuleImport": {
|
|
"file": "src/Mod/Sandbox/Gui/AppSandboxGui.cpp",
|
|
"lines": [201, 208],
|
|
"module": "Sandbox"
|
|
},
|
|
"registration": {
|
|
"file": "src/Mod/Sandbox/Gui/AppSandboxGui.cpp",
|
|
"lines": [210, 217],
|
|
"symbols": ["CreateSandboxCommands", "SandboxGui::Workbench::init", "SandboxGui::SoWidgetShape::initClass", "SandboxGui::initModule"]
|
|
},
|
|
"workbenchType": {
|
|
"file": "src/Mod/Sandbox/Gui/Workbench.cpp",
|
|
"line": 49,
|
|
"symbol": "TYPESYSTEM_SOURCE(SandboxGui::Workbench, Gui::StdWorkbench)"
|
|
},
|
|
"commands": {
|
|
"file": "src/Mod/Sandbox/Gui/Command.cpp",
|
|
"registrationLines": [1422, 1453],
|
|
"count": 29,
|
|
"guiOnlySymbols": ["Gui::CommandManager", "Gui::Application", "Gui::FileDialog", "Gui::View3DInventor", "QWidget", "QOpenGLFramebufferObject", "SIM::Coin3D::Quarter"]
|
|
}
|
|
},
|
|
"actionEntrypoints": [
|
|
{
|
|
"file": "src/Mod/Sandbox/App/DocumentProtector.cpp",
|
|
"lines": [270, 291],
|
|
"kind": "document-add-and-recompute",
|
|
"native": ["DocumentProtector::addObject", "DocumentProtector::recompute"]
|
|
},
|
|
{
|
|
"file": "src/Mod/Sandbox/App/DocumentThread.cpp",
|
|
"lines": [216, 232],
|
|
"kind": "threaded-document-action",
|
|
"native": ["DocumentTestThread::run", "SandboxObject::execute"]
|
|
},
|
|
{
|
|
"file": "src/Mod/Sandbox/Gui/Command.cpp",
|
|
"lines": [253, 266],
|
|
"kind": "gui-error-recovery-action",
|
|
"native": ["CmdSandboxDocumentNoThread::activated"],
|
|
"errorBoundary": "addObject after closeDocument reaches DocumentProtector validation"
|
|
},
|
|
{
|
|
"file": "src/Mod/Sandbox/Gui/Command.cpp",
|
|
"lines": [569, 597],
|
|
"kind": "mesh-import-action",
|
|
"native": ["CmdSandboxMeshLoader::activated"]
|
|
},
|
|
{
|
|
"file": "src/Mod/Sandbox/Gui/Command.cpp",
|
|
"lines": [1331, 1371],
|
|
"kind": "mesh-create-and-recompute-action",
|
|
"native": ["CmdMengerSponge::activated"]
|
|
}
|
|
],
|
|
"conditions": {
|
|
"desktop": "BUILD_SANDBOX gates the module; BUILD_GUI additionally gates SandboxGui and InitGui.py.",
|
|
"web": {
|
|
"file": "CMakeLists.txt",
|
|
"lines": [70, 75, 80, 99, 136, 143],
|
|
"finding": "FREECAD_WEB forces BUILD_GUI=OFF and BUILD_SANDBOX=OFF; there is no FREECAD_WEB_ENABLE_SANDBOX option.",
|
|
"runtimeStatus": "not_available_from_current_web_core_configuration"
|
|
},
|
|
"python": "AppSandbox.cpp includes Python.h and PyCXX; global SetupPython/SetupPyCXX is required, but this source probe does not verify a WASM Python runtime.",
|
|
"gui": "SandboxGui requires FreeCADGui, Qt, OpenGL/Coin3D symbols and is excluded when BUILD_GUI=OFF."
|
|
},
|
|
"directDependencies": {
|
|
"app": ["Mesh", "FreeCAD App/Python/PyCXX infrastructure"],
|
|
"gui": ["Sandbox", "Part", "FreeCADGui", "Qt", "OpenGL", "Coin3D"]
|
|
},
|
|
"missingOrUnverified": [
|
|
{
|
|
"dependency": "WASM Sandbox target",
|
|
"status": "missing",
|
|
"reason": "BUILD_SANDBOX is forcibly OFF in FREECAD_WEB and no opt-in Web closure exists."
|
|
},
|
|
{
|
|
"dependency": "SandboxGui runtime",
|
|
"status": "missing",
|
|
"reason": "BUILD_GUI is forcibly OFF in FREECAD_WEB; GUI-only link symbols are not part of the Web core."
|
|
},
|
|
{
|
|
"dependency": "Python/PyCXX Web execution",
|
|
"status": "unverified",
|
|
"reason": "The C++ source requires Python.h/PyCXX, but this A probe does not compile or execute the module."
|
|
}
|
|
],
|
|
"matches": {
|
|
"requestedRg": [
|
|
"src/Mod/Sandbox/CMakeLists.txt:4:if(BUILD_GUI)",
|
|
"src/Mod/Sandbox/App/CMakeLists.txt:45:add_library(Sandbox SHARED ...)",
|
|
"src/Mod/Sandbox/App/AppSandbox.cpp:248:PyMOD_INIT_FUNC(Sandbox)",
|
|
"src/Mod/Sandbox/App/DocumentThread.cpp:164:PROPERTY_SOURCE(Sandbox::SandboxObject, App::DocumentObject)",
|
|
"src/Mod/Sandbox/App/DocumentProtector.cpp:270:DocumentProtector::addObject",
|
|
"src/Mod/Sandbox/App/DocumentProtector.cpp:286:DocumentProtector::recompute",
|
|
"src/Mod/Sandbox/Gui/AppSandboxGui.cpp:194:PyMOD_INIT_FUNC(SandboxGui)",
|
|
"src/Mod/Sandbox/Gui/Command.cpp:1422:void CreateSandboxCommands()"
|
|
],
|
|
"webGate": [
|
|
"CMakeLists.txt:70:set(BUILD_GUI OFF ... FORCE)",
|
|
"CMakeLists.txt:99:BUILD_SANDBOX",
|
|
"CMakeLists.txt:137:set(... OFF ... FORCE)",
|
|
"src/Mod/CMakeLists.txt:93:if(BUILD_SANDBOX)"
|
|
]
|
|
},
|
|
"sourceSha256": {
|
|
"src/Mod/Sandbox/CMakeLists.txt": "320c7346a687a8a25b3d69ac2cc54524192eafe6d896257e7885b0114dd8b595",
|
|
"src/Mod/Sandbox/App/CMakeLists.txt": "a7a8ce9662c8b3ffc1937dde1c400be9ce09854120111ee6db20c085d0fd8181",
|
|
"src/Mod/Sandbox/Gui/CMakeLists.txt": "33147e6e20248d100ccdca65bef08c5d3202545dacb4fdf8928c15d06d139006",
|
|
"src/Mod/Sandbox/App/AppSandbox.cpp": "65adc40bfabcd46162cef9a271f1a33b7bfea161d368f72453c3238aa0283f26",
|
|
"src/Mod/Sandbox/App/DocumentProtector.cpp": "dcdad3b6691607bfc1949bc5b2a89af9c9ca6042ef2a1d42b8f5193e19d545f2",
|
|
"src/Mod/Sandbox/App/DocumentProtectorPy.cpp": "d7ab86bfef002344590feb15bdb4fc57e8fd36d9ec70e185e3d77106e0ebdec5",
|
|
"src/Mod/Sandbox/App/DocumentThread.cpp": "576a1e926c0c40315f4ca6bf43e03f14c48394a3a62abb8caf37a8bd7bbe70e2",
|
|
"src/Mod/Sandbox/Gui/AppSandboxGui.cpp": "dc204f0f752b623e5f7d86082b99d44c7975be85ac730d86ec7189245775abe6",
|
|
"src/Mod/Sandbox/Gui/Command.cpp": "856e3571c580a9d8779e697fb7fa2af755295ff7aed62080b9af8d1b42c8e7a7",
|
|
"src/Mod/Sandbox/Gui/Workbench.cpp": "f4d4c61702344ba6e4fa0e814d8e761177dd693c331d5a04bf4ac8088a75ff18",
|
|
"src/Mod/Sandbox/Init.py": "5a33311c42c395d328178c81b359fb5f7035001254cbe52894e8e5811f45e967",
|
|
"src/Mod/Sandbox/InitGui.py": "e999ee09d87e088489904837c1580dd28e411663c6bc3cb2738a9fb3ec6bd0b8"
|
|
},
|
|
"boundaries": [
|
|
"This is a source-boundary probe only; no CMake configure/build, WASM runtime, Python execution, browser test, or persistence result is claimed.",
|
|
"The existing dirty working-tree paths were observed and not modified.",
|
|
"GUI symbols and their dependencies are listed separately from the App target.",
|
|
"Source presence and registration entry points do not imply that Sandbox is enabled in the current Web build."
|
|
]
|
|
}
|