Files
FreeCADWasmDev/docs/p6/cloud-stateful-family-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

320 lines
12 KiB
JSON

{
"schema": "freecad-web-p6-stateful-module-family-runtime/v1",
"taskId": "FW-P6-FPA-F3-CLOUD",
"module": "Cloud",
"tier": "tier-3-stateful",
"status": "pass_with_boundaries",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"route": {
"worker": "web/src/stateful-family.worker.ts",
"facade": "web/src/stateful-family-facade.ts",
"command": "web.statefulFamilyBatch",
"native": "freecad-source/src/WebAssembly/FreeCADCoreProbe/DocumentProbe.cpp:fc_web_dispatch_json"
},
"input": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "request",
"requestId": "cloud-stateful-success",
"command": "web.statefulFamilyBatch",
"payload": {
"schema": "freecad-web-stateful-family-batch/v1",
"tier": "tier-3-stateful",
"records": [
{
"apiId": "py:Cloud:method:CloudWorkbench.GetClassName",
"module": "Cloud",
"name": "CloudWorkbench.GetClassName",
"kind": "method",
"family": "property",
"sourcePath": "src/Mod/Cloud/InitGui.py",
"disposition": "restricted"
},
{
"apiId": "py:Cloud:method:CloudWorkbench.Initialize",
"module": "Cloud",
"name": "CloudWorkbench.Initialize",
"kind": "method",
"family": "lifecycle-command",
"sourcePath": "src/Mod/Cloud/InitGui.py",
"disposition": "restricted"
}
]
},
"documentId": "main-chain-document"
},
"inputSha256": "1150091d850af881b822044220353b0bccf3374c0c36da67f76f26fc2bc2aec6",
"result": {
"cmd": "web.statefulFamilyBatch",
"count": 2,
"documentDiff": {
"documentCountBefore": 1,
"fcstdPath": "/tmp/WebBox.FCStd",
"fcstdSaved": true,
"fcstdVolume": 23.999999999999996,
"invalidDimensionError": "Length of box too small",
"objectCountBefore": 1,
"openedObjectCount": 1,
"openedObjectType": "Part::Box",
"openedVolume": 23.999999999999996,
"recomputeCount": 1,
"recomputeVolume": 23.999999999999996,
"recoveryVolume": 23.999999999999996,
"transactionAbortPending": 0,
"transactionAbortVolume": 47.99999999999999,
"transactionRedo": 1,
"transactionUndo": 1
},
"module": "FreeCAD",
"ok": true,
"records": [
{
"apiId": "py:Cloud:method:CloudWorkbench.GetClassName",
"code": "gui_dependency_unavailable",
"documentDiff": {
"documentCountBefore": 1,
"fcstdPath": "/tmp/WebBox.FCStd",
"fcstdSaved": true,
"fcstdVolume": 23.999999999999996,
"invalidDimensionError": "Length of box too small",
"objectCountBefore": 1,
"openedObjectCount": 1,
"openedObjectType": "Part::Box",
"openedVolume": 23.999999999999996,
"recomputeCount": 1,
"recomputeVolume": 23.999999999999996,
"recoveryVolume": 23.999999999999996,
"transactionAbortPending": 0,
"transactionAbortVolume": 47.99999999999999,
"transactionRedo": 1,
"transactionUndo": 1
},
"errorRecovery": {
"invalidRecompute": true,
"recovered": true,
"transactionAbort": true
},
"family": "property",
"message": "GUI/PySide/Pivy stateful API is unavailable in the headless Web runtime",
"module": "Cloud",
"name": "CloudWorkbench.GetClassName",
"native": true,
"parameterSchema": "document-stateful-diff/v1",
"resourcesReleased": true,
"returnSchema": "document-stateful-result/v1",
"sourceEntry": "src/Mod/Cloud/InitGui.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "restricted"
},
{
"apiId": "py:Cloud:method:CloudWorkbench.Initialize",
"code": "gui_dependency_unavailable",
"documentDiff": {
"documentCountBefore": 1,
"fcstdPath": "/tmp/WebBox.FCStd",
"fcstdSaved": true,
"fcstdVolume": 23.999999999999996,
"invalidDimensionError": "Length of box too small",
"objectCountBefore": 1,
"openedObjectCount": 1,
"openedObjectType": "Part::Box",
"openedVolume": 23.999999999999996,
"recomputeCount": 1,
"recomputeVolume": 23.999999999999996,
"recoveryVolume": 23.999999999999996,
"transactionAbortPending": 0,
"transactionAbortVolume": 47.99999999999999,
"transactionRedo": 1,
"transactionUndo": 1
},
"errorRecovery": {
"invalidRecompute": true,
"recovered": true,
"transactionAbort": true
},
"family": "lifecycle-command",
"message": "GUI/PySide/Pivy stateful API is unavailable in the headless Web runtime",
"module": "Cloud",
"name": "CloudWorkbench.Initialize",
"native": true,
"parameterSchema": "document-stateful-diff/v1",
"resourcesReleased": true,
"returnSchema": "document-stateful-result/v1",
"sourceEntry": "src/Mod/Cloud/InitGui.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "restricted"
}
],
"resourcesReleased": true,
"schema": "freecad-web-stateful-family-batch/v1",
"source": "freecad-source",
"tier": "tier-3-stateful"
},
"resultSha256": "ce2ef12fc29613a3de9eba9f2522330e7daae2e157eae5514e2f47a6f944070b",
"replay": {
"equal": true,
"resultSha256": "ce2ef12fc29613a3de9eba9f2522330e7daae2e157eae5514e2f47a6f944070b"
},
"crossModuleBoundary": {
"result": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "result",
"requestId": "cloud-stateful-cross",
"result": {
"cmd": "web.statefulFamilyBatch",
"count": 1,
"documentDiff": {
"documentCountBefore": 1,
"fcstdPath": "/tmp/WebBox.FCStd",
"fcstdSaved": true,
"fcstdVolume": 23.999999999999996,
"invalidDimensionError": "Length of box too small",
"objectCountBefore": 1,
"openedObjectCount": 1,
"openedObjectType": "Part::Box",
"openedVolume": 23.999999999999996,
"recomputeCount": 1,
"recomputeVolume": 23.999999999999996,
"recoveryVolume": 23.999999999999996,
"transactionAbortPending": 0,
"transactionAbortVolume": 47.99999999999999,
"transactionRedo": 1,
"transactionUndo": 1
},
"module": "FreeCAD",
"ok": true,
"records": [
{
"apiId": "py:Assembly:class:Binding",
"code": "unmatched_source_record",
"documentDiff": {
"documentCountBefore": 1,
"fcstdPath": "/tmp/WebBox.FCStd",
"fcstdSaved": true,
"fcstdVolume": 23.999999999999996,
"invalidDimensionError": "Length of box too small",
"objectCountBefore": 1,
"openedObjectCount": 1,
"openedObjectType": "Part::Box",
"openedVolume": 23.999999999999996,
"recomputeCount": 1,
"recomputeVolume": 23.999999999999996,
"recoveryVolume": 23.999999999999996,
"transactionAbortPending": 0,
"transactionAbortVolume": 47.99999999999999,
"transactionRedo": 1,
"transactionUndo": 1
},
"errorRecovery": {
"invalidRecompute": true,
"recovered": true,
"transactionAbort": true
},
"family": "property",
"message": "stateful API record is outside its module-scoped adapter",
"module": "Cloud",
"name": "CloudWorkbench.GetClassName",
"native": true,
"parameterSchema": "document-stateful-diff/v1",
"resourcesReleased": true,
"returnSchema": "document-stateful-result/v1",
"sourceEntry": "src/Mod/Cloud/InitGui.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"status": "not_implemented"
}
],
"resourcesReleased": true,
"schema": "freecad-web-stateful-family-batch/v1",
"source": "freecad-source",
"tier": "tier-3-stateful"
}
},
"resultSha256": "0d8139ecf23e87639c26fb8443843c9043904fa0d9450201639c71a1c219e9b2"
},
"malformedRequest": {
"result": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "cloud-stateful-invalid-tier",
"error": {
"code": "invalid_request",
"message": "stateful family envelope invalid"
}
},
"resultSha256": "c47da9a7f1a88f8f8a1f26e2e771d0474008d21201279f846c7f61c6c297472c"
},
"cancellation": {
"result": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "cloud-stateful-cancel",
"error": {
"code": "cancelled",
"message": "request was cancelled before execution"
}
},
"resultSha256": "24203f74b1bd303007258ccecc1eb9e2af51c313322ade2396d79578bf4c5af3"
},
"dispositionCounts": {
"exposed": 0,
"restricted": 2,
"nonportable": 0,
"not_implemented": 0
},
"records": [
{
"apiId": "py:Cloud:method:CloudWorkbench.GetClassName",
"name": "CloudWorkbench.GetClassName",
"family": "property",
"status": "restricted",
"code": "gui_dependency_unavailable",
"parameterSchema": "document-stateful-diff/v1",
"returnSchema": "document-stateful-result/v1",
"sourceEntry": "src/Mod/Cloud/InitGui.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"documentDiffSha256": "bf53c7019bd219045763498abdd8be0977703b1ddb668e39b545c7456e1126ae",
"errorRecoverySha256": "0ea577005194ee2c46923e4a8583be6c1fef4d69000e5b73c0a0f6aa960e7fc2",
"evidenceSha256": "917a8c65847d58885ffbb6f372b95b24e74be963a01e348f9b6121abdbd5e89c"
},
{
"apiId": "py:Cloud:method:CloudWorkbench.Initialize",
"name": "CloudWorkbench.Initialize",
"family": "lifecycle-command",
"status": "restricted",
"code": "gui_dependency_unavailable",
"parameterSchema": "document-stateful-diff/v1",
"returnSchema": "document-stateful-result/v1",
"sourceEntry": "src/Mod/Cloud/InitGui.py",
"sourceRevision": "2778e3f9c215da48bf0cfd562478d45d624aaa47",
"documentDiffSha256": "bf53c7019bd219045763498abdd8be0977703b1ddb668e39b545c7456e1126ae",
"errorRecoverySha256": "0ea577005194ee2c46923e4a8583be6c1fef4d69000e5b73c0a0f6aa960e7fc2",
"evidenceSha256": "bc566806f24abd048b95294268f7c4418b54defe553f737401afb79e700a055e"
}
],
"resources": {
"resourcesReleased": true,
"documentMutation": true,
"fcstdSemanticReplay": true,
"transactionUndoRedo": true,
"invalidRecomputeRecovery": true
},
"artifacts": {
"wasm": {
"path": "freecad-source/build-web/configure/bin/FreeCADWebDocumentProbe.wasm",
"sha256": "969b12798cf5f3a54aa2818c27aaff891937091540b7f9c0c1bc74f81d0aa758"
},
"loader": {
"path": "freecad-source/build-web/configure/bin/FreeCADWebDocumentProbe.js",
"sha256": "2441b483bb297e9bf6ff70afb79199f9cc1dc7af11d6ae86a5fbda2d6d50d498"
}
},
"boundaries": [
"GUI/PySide/Pivy stateful APIs remain restricted.",
"Methods without typed stateful argument/return replay remain not_implemented; shared Document/FCStd/transaction fields are native fixture evidence.",
"All statuses and hashes derive from fc_web_dispatch_json; no JavaScript API result is substituted."
]
}