{ "schema": "freecad-web-p6-plot-tier1-readonly-family-runtime/v1", "taskId": "FW-P6-FPA-F1-PLOT", "module": "Plot", "tier": "tier-1-readonly", "status": "pass_with_restricted", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "route": { "worker": "web/src/plot-python.worker.ts", "facade": "web/src/plot-python-family-facade.ts", "command": "plot.pythonFamilyBatch", "native": "freecad-source/src/WebAssembly/FreeCADCoreProbe/PlotRuntimeProbe.cpp:fc_web_dispatch_json" }, "input": { "cmd": "plot.pythonFamilyBatch", "args": { "tier": "tier-1-readonly", "records": [ { "apiId": "py:Plot:class:Line", "name": "Line", "family": "generic-object", "sourcePath": "src/Mod/Plot/Plot.py", "disposition": "planned" }, { "apiId": "py:Plot:class:Plot", "name": "Plot", "family": "generic-object", "sourcePath": "src/Mod/Plot/Plot.py", "disposition": "planned" }, { "apiId": "py:Plot:function:addNavigationToolbar", "name": "addNavigationToolbar", "family": "view-resource", "sourcePath": "src/Mod/Plot/Plot.py", "disposition": "planned" }, { "apiId": "py:Plot:function:delNavigationToolbar", "name": "delNavigationToolbar", "family": "view-resource", "sourcePath": "src/Mod/Plot/Plot.py", "disposition": "planned" }, { "apiId": "py:Plot:method:Line.getp", "name": "Line.getp", "family": "generic-object", "sourcePath": "src/Mod/Plot/Plot.py", "disposition": "planned" }, { "apiId": "py:Plot:method:Plot.isGrid", "name": "Plot.isGrid", "family": "generic-object", "sourcePath": "src/Mod/Plot/Plot.py", "disposition": "planned" }, { "apiId": "py:Plot:method:Plot.isLegend", "name": "Plot.isLegend", "family": "generic-object", "sourcePath": "src/Mod/Plot/Plot.py", "disposition": "planned" } ] } }, "inputSha256": "28b6430f872ff58311acb8585e916bf14a1f868b6cfdadce53b539a5c4f8f3b2", "result": { "cmd": "plot.pythonFamilyBatch", "count": 7, "module": "Plot", "ok": true, "records": [ { "apiId": "py:Plot:class:Line", "code": "native_python_method", "family": "generic-object", "message": "Plot Python symbol was resolved and replayed by FreeCAD", "name": "Line", "native": true, "parameterSchema": "source-declared", "replay": "native-python-reflection", "resourcesReleased": true, "returnSchema": "class", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "status": "exposed" }, { "apiId": "py:Plot:class:Plot", "code": "native_python_method", "family": "generic-object", "message": "Plot Python symbol was resolved and replayed by FreeCAD", "name": "Plot", "native": true, "parameterSchema": "source-declared", "replay": "native-python-reflection", "resourcesReleased": true, "returnSchema": "class", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "status": "exposed" }, { "apiId": "py:Plot:function:addNavigationToolbar", "code": "gui_dependency_unavailable", "family": "view-resource", "message": "Plot navigation/view API requires Qt GUI capabilities unavailable in the headless Web runtime", "name": "addNavigationToolbar", "native": true, "parameterSchema": "source-declared", "resourcesReleased": true, "returnSchema": "gui-resource", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "status": "restricted" }, { "apiId": "py:Plot:function:delNavigationToolbar", "code": "gui_dependency_unavailable", "family": "view-resource", "message": "Plot navigation/view API requires Qt GUI capabilities unavailable in the headless Web runtime", "name": "delNavigationToolbar", "native": true, "parameterSchema": "source-declared", "resourcesReleased": true, "returnSchema": "gui-resource", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "status": "restricted" }, { "apiId": "py:Plot:method:Line.getp", "code": "native_python_method", "family": "generic-object", "message": "Plot Python symbol was resolved and replayed by FreeCAD", "name": "Line.getp", "native": true, "parameterSchema": "{prop:string}", "replay": "native-python-reflection", "resourcesReleased": true, "returnSchema": "value|null", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "status": "exposed" }, { "apiId": "py:Plot:method:Plot.isGrid", "code": "native_python_method", "family": "generic-object", "message": "Plot Python symbol was resolved and replayed by FreeCAD", "name": "Plot.isGrid", "native": true, "parameterSchema": "{}", "replay": "native-python-reflection", "resourcesReleased": true, "returnSchema": "bool", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "status": "exposed" }, { "apiId": "py:Plot:method:Plot.isLegend", "code": "native_python_method", "family": "generic-object", "message": "Plot Python symbol was resolved and replayed by FreeCAD", "name": "Plot.isLegend", "native": true, "parameterSchema": "{}", "replay": "native-python-reflection", "resourcesReleased": true, "returnSchema": "bool", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "status": "exposed" } ], "resourcesReleased": true, "schema": "freecad-web-plot/python-family-batch/v1", "source": "freecad-source", "tier": "tier-1-readonly" }, "resultSha256": "84acca22980caa3750fc8214087b9de09b9d6e2d63289548b35e289060a48d60", "replay": { "equal": true, "resultSha256": "84acca22980caa3750fc8214087b9de09b9d6e2d63289548b35e289060a48d60" }, "crossModuleBoundary": { "result": { "cmd": "plot.pythonFamilyBatch", "count": 1, "module": "Plot", "ok": true, "records": [ { "apiId": "py:BIM:class:Binding", "code": "unmatched_source_record", "family": "generic-object", "message": "Plot API record is not part of this module-scoped adapter", "name": "Line", "native": true, "resourcesReleased": true, "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "status": "not_implemented" } ], "resourcesReleased": true, "schema": "freecad-web-plot/python-family-batch/v1", "source": "freecad-source", "tier": "tier-1-readonly" }, "resultSha256": "df2b7a37449188fbae5120e5f858491e3df403a44fa6e0fa667b218cf7313e58" }, "malformedRequest": { "result": { "ok": false, "code": "invalid_request", "error": "plot.pythonFamilyBatch requires tier=tier-1-readonly and non-empty args.records" }, "resultSha256": "6750852baa4d8370063b8792f5ca98a283ed5aecf95197c52276a6bb1241b3e5" }, "dispositionCounts": { "exposed": 5, "restricted": 2, "nonportable": 0, "not_implemented": 0 }, "records": [ { "apiId": "py:Plot:class:Line", "name": "Line", "family": "generic-object", "status": "exposed", "code": "native_python_method", "parameterSchema": "source-declared", "returnSchema": "class", "replay": "native-python-reflection", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "evidenceSha256": "00b2e7df0d20cdf60f4bb79e1f0ac6ab8f885fbb87770c95ba209f6430dc072c" }, { "apiId": "py:Plot:class:Plot", "name": "Plot", "family": "generic-object", "status": "exposed", "code": "native_python_method", "parameterSchema": "source-declared", "returnSchema": "class", "replay": "native-python-reflection", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "evidenceSha256": "59575acf5cfcc5d7143f3e23c41c6da280025e393389856599c819940d8177d5" }, { "apiId": "py:Plot:function:addNavigationToolbar", "name": "addNavigationToolbar", "family": "view-resource", "status": "restricted", "code": "gui_dependency_unavailable", "parameterSchema": "source-declared", "returnSchema": "gui-resource", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "evidenceSha256": "b71445307ca404b3ce104b060889f835e7241284b96f6e34cc3893fc3edbe457" }, { "apiId": "py:Plot:function:delNavigationToolbar", "name": "delNavigationToolbar", "family": "view-resource", "status": "restricted", "code": "gui_dependency_unavailable", "parameterSchema": "source-declared", "returnSchema": "gui-resource", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "evidenceSha256": "24b877ef5479d2852642f2a9796644eb3fa2c65e583602d9d1aa06fae857fcc6" }, { "apiId": "py:Plot:method:Line.getp", "name": "Line.getp", "family": "generic-object", "status": "exposed", "code": "native_python_method", "parameterSchema": "{prop:string}", "returnSchema": "value|null", "replay": "native-python-reflection", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "evidenceSha256": "991ac8b3c1403ad1142e51b0289993e1262136a78525f8c9c5a01585291d7a5c" }, { "apiId": "py:Plot:method:Plot.isGrid", "name": "Plot.isGrid", "family": "generic-object", "status": "exposed", "code": "native_python_method", "parameterSchema": "{}", "returnSchema": "bool", "replay": "native-python-reflection", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "evidenceSha256": "2b57fbdf783ae82ca6ab3d872bdc2db035e84b8ccc37174d9c5ecd18081e504f" }, { "apiId": "py:Plot:method:Plot.isLegend", "name": "Plot.isLegend", "family": "generic-object", "status": "exposed", "code": "native_python_method", "parameterSchema": "{}", "returnSchema": "bool", "replay": "native-python-reflection", "sourceEntry": "src/Mod/Plot/Plot.py", "sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47", "evidenceSha256": "7604e72cf0849b7ef7314120fe0731b5012903354bed4fa08817c2c6ba31a9bb" } ], "resources": { "resourcesReleased": true, "documentMutation": false }, "artifacts": { "wasm": { "path": "web/public/kernel/FreeCADWebPlotRuntimeProbe.wasm", "sha256": "325ebf698dbcc5d2af44615cb987f5715148940b2de1af0ac7393f9fe71bfeee" }, "loader": { "path": "web/public/kernel/FreeCADWebPlotRuntimeProbe.js", "sha256": "c13588127a6b60801c40c79ba927b9f8c844cf7ee846a37e0d06c10da9a4926f" } }, "boundaries": [ "Plot navigation toolbar records remain restricted because they require Qt GUI resources.", "All other selected records were resolved/replayed against the embedded official Plot.py Web backend.", "All statuses and hashes come from compiled FreeCAD source through fc_web_dispatch_json; no JavaScript API result is substituted." ] }