Files
FreeCADWasmDev/docs/p6/measure-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

171 lines
6.7 KiB
JSON

{
"schema": "freecad-web-p6-measure-source-boundary/v1",
"taskId": "FW-P6-MEA-A",
"module": "Measure",
"result": "pass_boundary",
"sourceRevision": "a6f251f65787f526568802e0f428f71ac871dea1",
"commands": [
"rg -n \"BUILD_|Init|addObject|registerType|PyInit\" src/Mod/Measure"
],
"cmake": {
"module": {
"file": "src/Mod/Measure/CMakeLists.txt",
"appLine": 3,
"guiGuardLines": [
13,
16
],
"scriptsLines": [
5,
11
]
},
"app": {
"file": "src/Mod/Measure/App/CMakeLists.txt",
"target": "Measure",
"targetLine": 67,
"dependencies": [
"Part",
"FreeCADApp"
],
"linkLine": 84
},
"gui": {
"file": "src/Mod/Measure/Gui/CMakeLists.txt",
"target": "MeasureGui",
"targetLine": 72,
"dependencies": [
"Measure",
"FreeCADGui"
],
"linkLine": 88
}
},
"appBoundary": {
"moduleEntry": {
"file": "src/Mod/Measure/App/AppMeasure.cpp",
"line": 84,
"symbol": "PyMOD_INIT_FUNC(Measure)"
},
"pythonTypes": {
"file": "src/Mod/Measure/App/AppMeasure.cpp",
"lines": [
96,
97
],
"names": [
"Measurement",
"MeasureBase"
]
},
"nativeRegistration": {
"file": "src/Mod/Measure/App/AppMeasure.cpp",
"lines": [
99,
113
],
"count": 15
}
},
"guiBoundary": {
"moduleEntry": {
"file": "src/Mod/Measure/Gui/AppMeasureGui.cpp",
"line": 71,
"symbol": "PyMOD_INIT_FUNC(MeasureGui)"
},
"guiTypes": {
"file": "src/Mod/Measure/Gui/AppMeasureGui.cpp",
"lines": [
97,
110
],
"guiOnly": true
},
"pythonType": {
"file": "src/Mod/Measure/Gui/AppMeasureGui.cpp",
"line": 120,
"name": "QuickMeasure"
}
},
"actionEntrypoints": [
{
"file": "src/Mod/Measure/MeasureCOM.py",
"kind": "python-measure-script"
},
{
"file": "src/Mod/Measure/MeasureGlobal.py",
"kind": "python-helper"
},
{
"file": "src/Mod/Measure/Gui/TaskMeasure.cpp",
"kind": "gui-create-measurement"
},
{
"file": "src/Mod/Measure/Gui/TaskMassProperties.cpp",
"kind": "gui-mass-properties"
}
],
"matches": {
"module": [
"3:add_subdirectory(App)",
"6: Init.py",
"13:if(BUILD_GUI)",
"14: list(APPEND Measure_Scripts InitGui.py)",
"15: add_subdirectory(Gui)",
"16:endif(BUILD_GUI)"
],
"app": [
"src/Mod/Measure/App/AppMeasure.cpp:84:PyMOD_INIT_FUNC(Measure)\r",
"src/Mod/Measure/App/AppMeasure.cpp:99: Measure::Measurement ::init();\r",
"src/Mod/Measure/App/AppMeasure.cpp:102: Measure::MeasureDistanceType ::init();\r",
"src/Mod/Measure/App/AppMeasure.cpp:103: Measure::MeasureBase ::init();\r",
"src/Mod/Measure/App/AppMeasure.cpp:104: Measure::MeasurePython ::init();\r",
"src/Mod/Measure/App/AppMeasure.cpp:105: Measure::MeasureAngle ::init();\r",
"src/Mod/Measure/App/AppMeasure.cpp:106: Measure::MeasureDistance ::init();\r",
"src/Mod/Measure/App/AppMeasure.cpp:107: Measure::MeasureDistanceDetached::init();\r",
"src/Mod/Measure/App/AppMeasure.cpp:108: Measure::MeasurePosition ::init();\r",
"src/Mod/Measure/App/AppMeasure.cpp:109: Measure::MeasureLength ::init();\r",
"src/Mod/Measure/App/AppMeasure.cpp:110: Measure::MeasureArea ::init();\r",
"src/Mod/Measure/App/AppMeasure.cpp:111: Measure::MeasureDiameter ::init();\r",
"src/Mod/Measure/App/AppMeasure.cpp:112: Measure::MeasureRadius ::init();\r",
"src/Mod/Measure/App/AppMeasure.cpp:113: Measure::Result ::init();\r",
"src/Mod/Measure/App/CMakeLists.txt:8:generate_from_py(Measurement)",
"src/Mod/Measure/App/CMakeLists.txt:9:generate_from_py(MeasureBase)",
"src/Mod/Measure/App/CMakeLists.txt:67:add_library(Measure SHARED ${Measure_SRCS})",
"src/Mod/Measure/App/CMakeLists.txt:84:target_link_libraries(Measure ${Measure_LIBS})"
],
"gui": [
"src/Mod/Measure/Gui/AppMeasureGui.cpp:71:PyMOD_INIT_FUNC(MeasureGui)\r",
"src/Mod/Measure/Gui/AppMeasureGui.cpp:97: MeasureGui::ViewProviderMeasureGroup ::init();\r",
"src/Mod/Measure/Gui/AppMeasureGui.cpp:98: MeasureGui::ViewProviderMeasureBase ::init();\r",
"src/Mod/Measure/Gui/AppMeasureGui.cpp:99: MeasureGui::ViewProviderMeasure ::init();\r",
"src/Mod/Measure/Gui/AppMeasureGui.cpp:100: MeasureGui::ViewProviderMeasureAngle ::init();\r",
"src/Mod/Measure/Gui/AppMeasureGui.cpp:101: MeasureGui::ViewProviderMeasureDistance ::init();\r",
"src/Mod/Measure/Gui/AppMeasureGui.cpp:103: MeasureGui::ViewProviderMeasureArea ::init();\r",
"src/Mod/Measure/Gui/AppMeasureGui.cpp:104: MeasureGui::ViewProviderMeasureLength ::init();\r",
"src/Mod/Measure/Gui/AppMeasureGui.cpp:105: MeasureGui::ViewProviderMeasurePosition ::init();\r",
"src/Mod/Measure/Gui/AppMeasureGui.cpp:106: MeasureGui::ViewProviderMeasureRadius ::init();\r",
"src/Mod/Measure/Gui/AppMeasureGui.cpp:107: MeasureGui::ViewProviderMeasureDiameter ::init();\r",
"src/Mod/Measure/Gui/AppMeasureGui.cpp:108: MeasureGui::ViewProviderMeasureCOM ::init();\r",
"src/Mod/Measure/Gui/AppMeasureGui.cpp:110: MassPropertiesGui::ViewProviderMassPropertiesResult::init();\r",
"src/Mod/Measure/Gui/CMakeLists.txt:72:add_library(MeasureGui SHARED ${MeasureGui_SRCS} ${MeasureGuiIcon_SVG})",
"src/Mod/Measure/Gui/CMakeLists.txt:88:target_link_libraries(MeasureGui ${MeasureGui_LIBS})"
]
},
"sourceSha256": {
"src/Mod/Measure/CMakeLists.txt": "f983badaeac81b45ceb84e02e320151ba336ea6218a11a253b2c130d525d9cf8",
"src/Mod/Measure/App/CMakeLists.txt": "e27b088e76bf6a1f377683e62a036636ca7bb6cd7bb64e879880b0773213b247",
"src/Mod/Measure/Gui/CMakeLists.txt": "845dee88af73e1049a2e247a0df41e8944493a4e599032d81acfb9d664e91cca",
"src/Mod/Measure/App/AppMeasure.cpp": "6fa86181619961923a241e135358d9490973814c83543793f957d9bd5b6b609f",
"src/Mod/Measure/Gui/AppMeasureGui.cpp": "799a85f14ee94334d717d689aebce9a9f795ccbfa9b33262886f331532c226b9"
},
"conditions": {
"gui": "BUILD_GUI gates MeasureGui and InitGui.py",
"runtime": "Source boundary only; no WASM runtime or browser capability is inferred."
},
"boundaries": [
"Measure App and Gui are separate targets; GUI measurement creation and mass properties remain GUI-bound until runtime cards.",
"No runtime, Facade, Chrome, or persistence result is claimed by this card."
]
}