Files
FreeCADWasmDev/docs/p6/assembly-module-batch-2ca87987ab766f2b97a11da6-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

460 lines
18 KiB
JSON

{
"schema": "freecad-web-assembly-module-batch-runtime/v1",
"taskId": "FW-P6-FPA-Y",
"batchId": "2ca87987ab766f2b97a11da6",
"module": "Assembly",
"tier": "tier-1-readonly",
"family": "generic-object",
"status": "pass_with_boundaries",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"route": {
"command": "assembly.pythonFamily",
"native": "freecad-source/src/WebAssembly/FreeCADCoreProbe/AssemblyRuntimeProbe.cpp:fc_web_dispatch_json",
"facade": "web/src/assembly-python-family-facade.ts",
"worker": "web/src/assembly.worker.ts"
},
"input": {
"cmd": "assembly.pythonFamily",
"args": {
"tier": "tier-1-readonly",
"records": [
{
"apiId": "py:Assembly:class:MakeJointSelGate",
"name": "MakeJointSelGate",
"family": "generic-object",
"sourcePath": "src/Mod/Assembly/JointObject.py",
"sourceLine": 1426,
"disposition": "planned"
},
{
"apiId": "py:Assembly:method:TaskAssemblyCreateJoint.getMovingPart",
"name": "TaskAssemblyCreateJoint.getMovingPart",
"family": "generic-object",
"sourcePath": "src/Mod/Assembly/JointObject.py",
"sourceLine": 2131,
"disposition": "planned"
},
{
"apiId": "py:Assembly:class:PreferencesPage",
"name": "PreferencesPage",
"family": "generic-object",
"sourcePath": "src/Mod/Assembly/Preferences.py",
"sourceLine": 34,
"disposition": "planned"
},
{
"apiId": "py:Assembly:class:SoSwitchMarker",
"name": "SoSwitchMarker",
"family": "generic-object",
"sourcePath": "src/Mod/Assembly/SoSwitchMarker.py",
"sourceLine": 41,
"disposition": "planned"
}
]
}
},
"inputSha256": "4e6b32007a61a28a3f572936ace036780662ec25701cc1ea9ff055befe40f33a",
"result": {
"cmd": "assembly.pythonFamily",
"count": 4,
"module": "Assembly",
"ok": true,
"records": [
{
"apiId": "py:Assembly:class:MakeJointSelGate",
"code": "gui_dependency_unavailable",
"family": "generic-object",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"name": "MakeJointSelGate",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "gui-command",
"sourceEntry": "src/Mod/Assembly/JointObject.py",
"sourceLine": 1426,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceVerified": true,
"status": "restricted"
},
{
"apiId": "py:Assembly:method:TaskAssemblyCreateJoint.getMovingPart",
"code": "gui_dependency_unavailable",
"family": "generic-object",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"name": "TaskAssemblyCreateJoint.getMovingPart",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "gui-command",
"sourceEntry": "src/Mod/Assembly/JointObject.py",
"sourceLine": 2131,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceVerified": true,
"status": "restricted"
},
{
"apiId": "py:Assembly:class:PreferencesPage",
"code": "gui_dependency_unavailable",
"family": "generic-object",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"name": "PreferencesPage",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "gui-command",
"sourceEntry": "src/Mod/Assembly/Preferences.py",
"sourceLine": 34,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceVerified": true,
"status": "restricted"
},
{
"apiId": "py:Assembly:class:SoSwitchMarker",
"code": "gui_dependency_unavailable",
"family": "generic-object",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"name": "SoSwitchMarker",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "gui-command",
"sourceEntry": "src/Mod/Assembly/SoSwitchMarker.py",
"sourceLine": 41,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceVerified": true,
"status": "restricted"
}
],
"resourcesReleased": true,
"schema": "freecad-web-assembly/python-family/v1",
"source": "freecad-source",
"tier": "tier-1-readonly"
},
"resultSha256": "e923005a7cb63775f3b075f753e9429b887fea0f6442befb67932ee437ed9e34",
"replay": {
"equal": true,
"resultSha256": "e923005a7cb63775f3b075f753e9429b887fea0f6442befb67932ee437ed9e34"
},
"facadeWorker": {
"ready": {
"kind": "ready",
"action": "assembly.pythonFamily"
},
"success": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "result",
"requestId": "assembly-generic-batch-success",
"result": {
"cmd": "assembly.pythonFamily",
"count": 4,
"module": "Assembly",
"ok": true,
"records": [
{
"apiId": "py:Assembly:class:MakeJointSelGate",
"code": "gui_dependency_unavailable",
"family": "generic-object",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"name": "MakeJointSelGate",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "gui-command",
"sourceEntry": "src/Mod/Assembly/JointObject.py",
"sourceLine": 1426,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceVerified": true,
"status": "restricted"
},
{
"apiId": "py:Assembly:method:TaskAssemblyCreateJoint.getMovingPart",
"code": "gui_dependency_unavailable",
"family": "generic-object",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"name": "TaskAssemblyCreateJoint.getMovingPart",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "gui-command",
"sourceEntry": "src/Mod/Assembly/JointObject.py",
"sourceLine": 2131,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceVerified": true,
"status": "restricted"
},
{
"apiId": "py:Assembly:class:PreferencesPage",
"code": "gui_dependency_unavailable",
"family": "generic-object",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"name": "PreferencesPage",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "gui-command",
"sourceEntry": "src/Mod/Assembly/Preferences.py",
"sourceLine": 34,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceVerified": true,
"status": "restricted"
},
{
"apiId": "py:Assembly:class:SoSwitchMarker",
"code": "gui_dependency_unavailable",
"family": "generic-object",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"name": "SoSwitchMarker",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "gui-command",
"sourceEntry": "src/Mod/Assembly/SoSwitchMarker.py",
"sourceLine": 41,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceVerified": true,
"status": "restricted"
}
],
"resourcesReleased": true,
"schema": "freecad-web-assembly/python-family/v1",
"source": "freecad-source",
"tier": "tier-1-readonly"
}
},
"repeat": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "result",
"requestId": "assembly-generic-batch-repeat",
"result": {
"cmd": "assembly.pythonFamily",
"count": 4,
"module": "Assembly",
"ok": true,
"records": [
{
"apiId": "py:Assembly:class:MakeJointSelGate",
"code": "gui_dependency_unavailable",
"family": "generic-object",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"name": "MakeJointSelGate",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "gui-command",
"sourceEntry": "src/Mod/Assembly/JointObject.py",
"sourceLine": 1426,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceVerified": true,
"status": "restricted"
},
{
"apiId": "py:Assembly:method:TaskAssemblyCreateJoint.getMovingPart",
"code": "gui_dependency_unavailable",
"family": "generic-object",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"name": "TaskAssemblyCreateJoint.getMovingPart",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "gui-command",
"sourceEntry": "src/Mod/Assembly/JointObject.py",
"sourceLine": 2131,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceVerified": true,
"status": "restricted"
},
{
"apiId": "py:Assembly:class:PreferencesPage",
"code": "gui_dependency_unavailable",
"family": "generic-object",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"name": "PreferencesPage",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "gui-command",
"sourceEntry": "src/Mod/Assembly/Preferences.py",
"sourceLine": 34,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceVerified": true,
"status": "restricted"
},
{
"apiId": "py:Assembly:class:SoSwitchMarker",
"code": "gui_dependency_unavailable",
"family": "generic-object",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"name": "SoSwitchMarker",
"native": true,
"parameterSchema": "source-declared",
"resourcesReleased": true,
"returnSchema": "gui-command",
"sourceEntry": "src/Mod/Assembly/SoSwitchMarker.py",
"sourceLine": 41,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceVerified": true,
"status": "restricted"
}
],
"resourcesReleased": true,
"schema": "freecad-web-assembly/python-family/v1",
"source": "freecad-source",
"tier": "tier-1-readonly"
}
},
"crossModule": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "result",
"requestId": "assembly-generic-batch-cross",
"result": {
"cmd": "assembly.pythonFamily",
"count": 1,
"module": "Assembly",
"ok": true,
"records": [
{
"apiId": "py:BIM:class:Binding",
"code": "unmatched_source_record",
"family": "generic-object",
"message": "Assembly API record is not part of this module-scoped adapter",
"name": "MakeJointSelGate",
"native": true,
"parameterSchema": "unmatched",
"resourcesReleased": true,
"returnSchema": "unmatched",
"sourceEntry": "src/Mod/Assembly/JointObject.py",
"sourceLine": 1426,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceVerified": true,
"status": "not_implemented"
}
],
"resourcesReleased": true,
"schema": "freecad-web-assembly/python-family/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": "Assembly Python family envelope is invalid"
}
},
"cancelled": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "assembly-family-cancel-1",
"error": {
"code": "cancelled",
"message": "request was cancelled"
}
},
"reset": {
"kind": "reset",
"requestId": "assembly-generic-batch-reset"
},
"traceSha256": "e261adc1c2ae7bef9ff71b6db99228dbc0fcf67d452a9c6776d658b807aca29b"
},
"dispositionCounts": {
"exposed": 0,
"restricted": 4,
"nonportable": 0,
"not_implemented": 0
},
"records": [
{
"apiId": "py:Assembly:class:MakeJointSelGate",
"name": "MakeJointSelGate",
"family": "generic-object",
"status": "restricted",
"code": "gui_dependency_unavailable",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"sourceEntry": "src/Mod/Assembly/JointObject.py",
"sourceLine": 1426,
"sourceVerified": true,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceLineHash": "62ff9706f6789cf3a00dfb7fbfcd5760f860c596eb5301b6c9784736dbf3376e",
"parameterSchema": "source-declared",
"returnSchema": "gui-command",
"evidenceSha256": "10a0ca017d1c4ac0559c931dec07cd85dcaa7f5c30d9c9b3dab44cdb2d08cc56"
},
{
"apiId": "py:Assembly:method:TaskAssemblyCreateJoint.getMovingPart",
"name": "TaskAssemblyCreateJoint.getMovingPart",
"family": "generic-object",
"status": "restricted",
"code": "gui_dependency_unavailable",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"sourceEntry": "src/Mod/Assembly/JointObject.py",
"sourceLine": 2131,
"sourceVerified": true,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceLineHash": "ebdd7ed40f80c19b243e372e4da062c3b7c758eea7b393d83162c2fb6f1e4ebb",
"parameterSchema": "source-declared",
"returnSchema": "gui-command",
"evidenceSha256": "717c013a4bbe3c6b4a3dd81138be40a30b1f0014b056af418e2f68dd4a931a23"
},
{
"apiId": "py:Assembly:class:PreferencesPage",
"name": "PreferencesPage",
"family": "generic-object",
"status": "restricted",
"code": "gui_dependency_unavailable",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"sourceEntry": "src/Mod/Assembly/Preferences.py",
"sourceLine": 34,
"sourceVerified": true,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceLineHash": "87469ccac81be92f5291cb68a7d699be2acb75e2e996e3223d78a3640179e993",
"parameterSchema": "source-declared",
"returnSchema": "gui-command",
"evidenceSha256": "205d3b87eb905fdf052491e5c2796defff1f2f4245966abaab40659cd305ba2a"
},
{
"apiId": "py:Assembly:class:SoSwitchMarker",
"name": "SoSwitchMarker",
"family": "generic-object",
"status": "restricted",
"code": "gui_dependency_unavailable",
"message": "Assembly declaration is GUI/task-panel bound and FreeCADGui/PySide is unavailable in the headless Web runtime",
"sourceEntry": "src/Mod/Assembly/SoSwitchMarker.py",
"sourceLine": 41,
"sourceVerified": true,
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"sourceLineHash": "051901af7a604b9ca98a3824589f1a80ddd82a7862849f9be1852545ebf86810",
"parameterSchema": "source-declared",
"returnSchema": "gui-command",
"evidenceSha256": "4b201435d26192fed0a47dbae2d9fe132d84a241a8137cf7002e2c75911b2b74"
}
],
"resources": {
"resourcesReleased": true,
"documentMutation": false,
"readonlyFixture": true
},
"artifacts": {
"wasm": {
"path": "web/public/kernel/FreeCADWebAssemblyProbe.wasm",
"sha256": "b92789f859c04d84cca3d8c287b87e91e9f124b3ead56e04d8e0580a3a41ac7b"
},
"loader": {
"path": "web/public/kernel/FreeCADWebAssemblyProbe.js",
"sha256": "bee119323deee64f876f7e0af93001a6cbb28f7e35be6904d373ae27d735ec40"
}
},
"boundaries": [
"Assembly command, view-provider and task-panel declarations remain restricted because FreeCADGui/PySide is unavailable in the GUI-free Web runtime.",
"Simulation, Motion, Joint and helper declarations retain source-verified method_evidence_pending boundaries until a typed native argument/return fixture exists.",
"All statuses, source lines and hashes derive from compiled FreeCAD through fc_web_dispatch_json; JavaScript only transports and validates the batch envelope."
]
}