Files
FreeCADWasmDev/docs/p6/reverseengineering-action-02-persistence.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

92 lines
3.3 KiB
JSON

{
"schema": "freecad-web-p6-reverseengineering-action-02-persistence/v1",
"taskId": "FW-P6-REV-ACT-02-G",
"module": "ReverseEngineering",
"action": "inspect/source-inventory",
"result": "pass_boundary",
"applicable": false,
"reason": "inspect/source-inventory is a read-only App/Python source inventory and creates no App::Document or FCStd payload; save/reopen is not applicable to this action.",
"state": {
"documentMutation": false,
"localFcstdRoundTrip": false,
"readOnly": true,
"resourcesReleased": true
},
"evidence": {
"kernel": {
"first": {
"returnCode": 1,
"sourceEntry": "src/Mod/ReverseEngineering/App/AppReverseEngineering.cpp",
"summary": "ReverseEngineering App; Part/Mesh/Points dependencies; GUI excluded",
"registeredTypeCount": 0,
"pythonBindingCount": 2,
"pythonApiNames": "",
"resourcesReleased": 1,
"error": ""
},
"second": {
"returnCode": 1,
"sourceEntry": "src/Mod/ReverseEngineering/App/AppReverseEngineering.cpp",
"summary": "ReverseEngineering App; Part/Mesh/Points dependencies; GUI excluded",
"registeredTypeCount": 0,
"pythonBindingCount": 2,
"pythonApiNames": "",
"resourcesReleased": 1,
"error": ""
},
"rejected": {
"returnCode": 0,
"error": "revision_mismatch"
},
"recovered": {
"returnCode": 1,
"sourceEntry": "src/Mod/ReverseEngineering/App/AppReverseEngineering.cpp",
"summary": "ReverseEngineering App; Part/Mesh/Points dependencies; GUI excluded",
"registeredTypeCount": 0,
"pythonBindingCount": 2,
"pythonApiNames": "",
"resourcesReleased": 1,
"error": ""
},
"deterministic": true,
"recoveryStable": true,
"pass": true,
"baselineSha256": "084260c494ca11f3aa45d4ca43d9f07dd79c4133c898e476474db8798ae164b0",
"recoveredSha256": "084260c494ca11f3aa45d4ca43d9f07dd79c4133c898e476474db8798ae164b0",
"resultSha256": "567cddf923f6b251646c5e7e77f49ed2088a187d8c1f4ede3b1e3e4a46e7764e"
},
"recovery": {
"beforeSha256": "8017e9f5800ab03c01d87ce3ed034c1e03f8f44f177dbd5b2b4ce41705832275",
"afterSha256": "8017e9f5800ab03c01d87ce3ed034c1e03f8f44f177dbd5b2b4ce41705832275",
"unchangedAfterReject": true,
"repeatedErrorStable": true,
"resourcesReleased": true
},
"facade": {
"requestCount": 6,
"responseCount": 6,
"maxActive": 1,
"cancelAccepted": true
},
"chrome": {
"result": "pass",
"externalRequests": 0,
"exceptions": 0
},
"resultSha256": "11b5862843642cbbcaf13de35d8091135b0a4e53c297292993c4f9023da05982"
},
"commands": [
"node tools/run_p6_reverseengineering_action02_persistence.mjs"
],
"artifacts": {
"kernel": "docs/p6/reverseengineering-action-02-kernel.json",
"recovery": "docs/p6/reverseengineering-action-02-recovery.json",
"facade": "docs/p6/reverseengineering-action-02-facade.json",
"chrome": "docs/p6/reverseengineering-action-02-chrome.json",
"workerLog": "docs/freecad-p6-reverseengineering-action-02-g-persistence.log"
},
"boundaries": [
"This boundary closes persistence applicability for inspect/source-inventory only; ReverseEngineering save/reopen remains a separate action contract."
]
}