Files
FreeCADWasmDev/docs/p6/draft-module-batch-4170e0b9ffd983c15e2f54ed-runtime.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

648 lines
26 KiB
JSON

{
"schema": "freecad-web-draft-module-batch-runtime/v1",
"taskId": "FW-P6-FPA-Y",
"batchId": "4170e0b9ffd983c15e2f54ed",
"module": "Draft",
"tier": "tier-1-readonly",
"family": "generic-object",
"status": "pass_with_boundaries",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"route": {
"command": "draft.pythonFamilyBatch",
"native": "freecad-source/src/WebAssembly/FreeCADCoreProbe/DraftRuntimeProbe.cpp:fc_web_dispatch_json",
"facade": "web/src/draft-python-family-facade.ts",
"worker": "web/src/draft.worker.ts"
},
"input": {
"cmd": "draft.pythonFamilyBatch",
"args": {
"tier": "tier-1-readonly",
"records": [
{
"apiId": "py:Draft:method:DraftLink.getPlacementOf",
"name": "DraftLink.getPlacementOf",
"family": "generic-object",
"sourcePath": "src/Mod/Draft/draftobjects/draftlink.py",
"disposition": "not_implemented"
},
{
"apiId": "py:Draft:class:Hatch",
"name": "Hatch",
"family": "generic-object",
"sourcePath": "src/Mod/Draft/draftobjects/hatch.py",
"disposition": "not_implemented"
},
{
"apiId": "py:Draft:method:Hatch.getPatterns",
"name": "Hatch.getPatterns",
"family": "generic-object",
"sourcePath": "src/Mod/Draft/draftobjects/hatch.py",
"disposition": "not_implemented"
},
{
"apiId": "py:Draft:class:LayerContainer",
"name": "LayerContainer",
"family": "generic-object",
"sourcePath": "src/Mod/Draft/draftobjects/layer.py",
"disposition": "not_implemented"
},
{
"apiId": "py:Draft:method:Shape2DView.getProjected",
"name": "Shape2DView.getProjected",
"family": "generic-object",
"sourcePath": "src/Mod/Draft/draftobjects/shape2dview.py",
"disposition": "not_implemented"
},
{
"apiId": "py:Draft:class:WorkingPlaneProxy",
"name": "WorkingPlaneProxy",
"family": "generic-object",
"sourcePath": "src/Mod/Draft/draftobjects/wpproxy.py",
"disposition": "not_implemented"
},
{
"apiId": "py:Draft:method:WorkingPlaneProxy.getNormal",
"name": "WorkingPlaneProxy.getNormal",
"family": "generic-object",
"sourcePath": "src/Mod/Draft/draftobjects/wpproxy.py",
"disposition": "not_implemented"
},
{
"apiId": "py:Draft:method:TaskPanelCircularArray.get_distances",
"name": "TaskPanelCircularArray.get_distances",
"family": "generic-object",
"sourcePath": "src/Mod/Draft/drafttaskpanels/task_circulararray.py",
"disposition": "not_implemented"
}
]
}
},
"inputSha256": "588b1e8ca2bb29a420b06bb1903c096adc3fa07680f4c61c6f55736e4a2120c1",
"result": {
"cmd": "draft.pythonFamilyBatch",
"count": 8,
"module": "Draft",
"ok": true,
"records": [
{
"apiId": "py:Draft:method:DraftLink.getPlacementOf",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "DraftLink.getPlacementOf",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/draftlink.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:class:Hatch",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "Hatch",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/hatch.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:method:Hatch.getPatterns",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "Hatch.getPatterns",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/hatch.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:class:LayerContainer",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "LayerContainer",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/layer.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:method:Shape2DView.getProjected",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "Shape2DView.getProjected",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/shape2dview.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:class:WorkingPlaneProxy",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "WorkingPlaneProxy",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/wpproxy.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:method:WorkingPlaneProxy.getNormal",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "WorkingPlaneProxy.getNormal",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/wpproxy.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:method:TaskPanelCircularArray.get_distances",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "TaskPanelCircularArray.get_distances",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/drafttaskpanels/task_circulararray.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
}
],
"resourcesReleased": true,
"schema": "freecad-web-draft/python-family-batch/v1",
"source": "freecad-source",
"tier": "tier-1-readonly"
},
"resultSha256": "97f369dc915192bd93f5f9e95f3ace8f0e238d34db95a6d4e2df262375545fe1",
"replay": {
"equal": true,
"resultSha256": "97f369dc915192bd93f5f9e95f3ace8f0e238d34db95a6d4e2df262375545fe1"
},
"facadeWorker": {
"ready": {
"kind": "ready",
"action": "draft.pythonFamilyBatch"
},
"success": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "result",
"requestId": "draft-object-batch-success",
"result": {
"cmd": "draft.pythonFamilyBatch",
"count": 8,
"module": "Draft",
"ok": true,
"records": [
{
"apiId": "py:Draft:method:DraftLink.getPlacementOf",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "DraftLink.getPlacementOf",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/draftlink.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:class:Hatch",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "Hatch",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/hatch.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:method:Hatch.getPatterns",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "Hatch.getPatterns",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/hatch.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:class:LayerContainer",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "LayerContainer",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/layer.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:method:Shape2DView.getProjected",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "Shape2DView.getProjected",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/shape2dview.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:class:WorkingPlaneProxy",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "WorkingPlaneProxy",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/wpproxy.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:method:WorkingPlaneProxy.getNormal",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "WorkingPlaneProxy.getNormal",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/wpproxy.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:method:TaskPanelCircularArray.get_distances",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "TaskPanelCircularArray.get_distances",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/drafttaskpanels/task_circulararray.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
}
],
"resourcesReleased": true,
"schema": "freecad-web-draft/python-family-batch/v1",
"source": "freecad-source",
"tier": "tier-1-readonly"
}
},
"repeat": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "result",
"requestId": "draft-object-batch-repeat",
"result": {
"cmd": "draft.pythonFamilyBatch",
"count": 8,
"module": "Draft",
"ok": true,
"records": [
{
"apiId": "py:Draft:method:DraftLink.getPlacementOf",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "DraftLink.getPlacementOf",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/draftlink.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:class:Hatch",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "Hatch",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/hatch.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:method:Hatch.getPatterns",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "Hatch.getPatterns",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/hatch.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:class:LayerContainer",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "LayerContainer",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/layer.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:method:Shape2DView.getProjected",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "Shape2DView.getProjected",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/shape2dview.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:class:WorkingPlaneProxy",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "WorkingPlaneProxy",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/wpproxy.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:method:WorkingPlaneProxy.getNormal",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "WorkingPlaneProxy.getNormal",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/wpproxy.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
},
{
"apiId": "py:Draft:method:TaskPanelCircularArray.get_distances",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "TaskPanelCircularArray.get_distances",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/drafttaskpanels/task_circulararray.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
}
],
"resourcesReleased": true,
"schema": "freecad-web-draft/python-family-batch/v1",
"source": "freecad-source",
"tier": "tier-1-readonly"
}
},
"crossModule": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "result",
"requestId": "draft-object-batch-cross",
"result": {
"cmd": "draft.pythonFamilyBatch",
"count": 1,
"module": "Draft",
"ok": true,
"records": [
{
"apiId": "py:BIM:class:Binding",
"code": "method_evidence_pending",
"family": "generic-object",
"message": "Draft Python API has no method-level readonly native evidence",
"name": "DraftLink.getPlacementOf",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "source-declared",
"sourceEntry": "src/Mod/Draft/draftobjects/draftlink.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
}
],
"resourcesReleased": true,
"schema": "freecad-web-draft/python-family-batch/v1",
"source": "freecad-source",
"tier": "tier-1-readonly"
}
},
"malformed": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "invalid",
"error": {
"code": "invalid_request",
"message": "Draft Python family envelope is invalid"
}
},
"cancelled": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "draft-family-cancel-1",
"error": {
"code": "cancelled",
"message": "request was cancelled"
}
},
"reset": {
"kind": "reset",
"requestId": "draft-object-batch-reset"
},
"traceSha256": "fda2185a0b4b61f643795020c6daf0a1588898d993dacd38c4e819d44ac2883b"
},
"dispositionCounts": {
"exposed": 0,
"restricted": 0,
"nonportable": 0,
"not_implemented": 8
},
"records": [
{
"apiId": "py:Draft:method:DraftLink.getPlacementOf",
"name": "DraftLink.getPlacementOf",
"family": "generic-object",
"status": "not_implemented",
"code": "method_evidence_pending",
"message": "Draft Python API has no method-level readonly native evidence",
"sourceEntry": "src/Mod/Draft/draftobjects/draftlink.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"evidenceSha256": "078931d12603c14fccda6edbb6db16a54c4c8a7003bb87ae9de5d7ddab91d63e"
},
{
"apiId": "py:Draft:class:Hatch",
"name": "Hatch",
"family": "generic-object",
"status": "not_implemented",
"code": "method_evidence_pending",
"message": "Draft Python API has no method-level readonly native evidence",
"sourceEntry": "src/Mod/Draft/draftobjects/hatch.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"evidenceSha256": "9c1ffe265e619f951d7b12c46be265bda3ce69e04b1ee329095ab4d10956dbc3"
},
{
"apiId": "py:Draft:method:Hatch.getPatterns",
"name": "Hatch.getPatterns",
"family": "generic-object",
"status": "not_implemented",
"code": "method_evidence_pending",
"message": "Draft Python API has no method-level readonly native evidence",
"sourceEntry": "src/Mod/Draft/draftobjects/hatch.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"evidenceSha256": "b0d41f6671b6b3678dbc9b9b8d249e2aa4a28c94a5322d3a9b5a007c86e9308a"
},
{
"apiId": "py:Draft:class:LayerContainer",
"name": "LayerContainer",
"family": "generic-object",
"status": "not_implemented",
"code": "method_evidence_pending",
"message": "Draft Python API has no method-level readonly native evidence",
"sourceEntry": "src/Mod/Draft/draftobjects/layer.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"evidenceSha256": "a23c8ed2d6e43771b451cb8f33877937320749837d8247a2c1f8aafbf4ac0f1b"
},
{
"apiId": "py:Draft:method:Shape2DView.getProjected",
"name": "Shape2DView.getProjected",
"family": "generic-object",
"status": "not_implemented",
"code": "method_evidence_pending",
"message": "Draft Python API has no method-level readonly native evidence",
"sourceEntry": "src/Mod/Draft/draftobjects/shape2dview.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"evidenceSha256": "a0ed07ffef0ac3ca8451167480561e8ebaebcbe643331295006a697923a3325e"
},
{
"apiId": "py:Draft:class:WorkingPlaneProxy",
"name": "WorkingPlaneProxy",
"family": "generic-object",
"status": "not_implemented",
"code": "method_evidence_pending",
"message": "Draft Python API has no method-level readonly native evidence",
"sourceEntry": "src/Mod/Draft/draftobjects/wpproxy.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"evidenceSha256": "58dabdb5406766fb8fe671b523ae4b0ecd3977bf28a1f9c08dc76d0674ec31b8"
},
{
"apiId": "py:Draft:method:WorkingPlaneProxy.getNormal",
"name": "WorkingPlaneProxy.getNormal",
"family": "generic-object",
"status": "not_implemented",
"code": "method_evidence_pending",
"message": "Draft Python API has no method-level readonly native evidence",
"sourceEntry": "src/Mod/Draft/draftobjects/wpproxy.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"evidenceSha256": "c5fd1f3debedaba018fc95221302623868dfdd461445f44dafe06db20888ae3b"
},
{
"apiId": "py:Draft:method:TaskPanelCircularArray.get_distances",
"name": "TaskPanelCircularArray.get_distances",
"family": "generic-object",
"status": "not_implemented",
"code": "method_evidence_pending",
"message": "Draft Python API has no method-level readonly native evidence",
"sourceEntry": "src/Mod/Draft/drafttaskpanels/task_circulararray.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"evidenceSha256": "ee16970818398343f4a2c384016c0a48d2792193f3008bfb54296292f7b72ee6"
}
],
"resources": {
"resourcesReleased": true,
"documentMutation": false
},
"artifacts": {
"wasm": {
"path": "web/public/kernel/FreeCADWebDraftRuntimeProbe.wasm",
"sha256": "d990725bc31d0b5b4665a9e16c456599c35a05a2097bf1465ec0d194fcf10c50"
},
"loader": {
"path": "web/public/kernel/FreeCADWebDraftRuntimeProbe.js",
"sha256": "52268c1f6601d5961fd1980508f4ab3c4a8362b3f463210f0be2aead8f1f0a29"
}
},
"boundaries": [
"Draft GUI/tool and method records retain their source-declared not_implemented or GUI restricted boundaries.",
"All statuses, values and hashes come from compiled FreeCAD through fc_web_dispatch_json; JavaScript only transports and validates the batch envelope."
]
}