{ "schema": "freecad-web-p6-reverseengineering-action-03-facade/v1", "taskId": "FW-P6-REV-ACT-03-E", "module": "ReverseEngineering", "action": "reverseengineering.pythonApi", "result": "pass", "envelopeSchema": "freecad-web-facade/v1", "typedSchema": "freecad-web-reverseengineering/python-api/v1", "fixture": { "schema": "freecad-web-reverseengineering/python-api/v1", "module": "ReverseEngineering", "action": "python-api", "sourceEntry": "src/Mod/ReverseEngineering/App/AppReverseEngineering.cpp" }, "trace": { "ready": { "kind": "ready", "action": "reverseengineering.pythonApi" }, "success": { "schema": "freecad-web-facade/v1", "version": 1, "kind": "result", "requestId": "rev-python-success-1", "result": { "schema": "freecad-web-reverseengineering/python-api/v1", "module": "ReverseEngineering", "action": "python-api", "sourceEntry": "src/Mod/ReverseEngineering/App/AppReverseEngineering.cpp", "apiNames": "approxCurve,approxSurface", "apiCount": 2, "curveValid": true, "guiFree": true, "resourcesReleased": true } }, "expectedError": { "schema": "freecad-web-facade/v1", "version": 1, "kind": "error", "requestId": "rev-python-error-1", "error": { "code": "revision_mismatch", "message": "ReverseEngineering Python source entry is not locked", "diagnostic": { "field": "sourceEntry" } } }, "duplicate": { "schema": "freecad-web-facade/v1", "version": 1, "kind": "error", "requestId": "rev-python-success-1", "error": { "code": "duplicate_request", "message": "requestId has already been dispatched" } }, "cancelled": { "schema": "freecad-web-facade/v1", "version": 1, "kind": "error", "requestId": "rev-python-cancel-1", "error": { "code": "cancelled", "message": "request was cancelled" } }, "after": { "schema": "freecad-web-facade/v1", "version": 1, "kind": "result", "requestId": "rev-python-after-cancel-1", "result": { "schema": "freecad-web-reverseengineering/python-api/v1", "module": "ReverseEngineering", "action": "python-api", "sourceEntry": "src/Mod/ReverseEngineering/App/AppReverseEngineering.cpp", "apiNames": "approxCurve,approxSurface", "apiCount": 2, "curveValid": true, "guiFree": true, "resourcesReleased": true } } }, "traceSha256": "7ab7ef498c5a0e68fa401c41f9c13b09a73e18ac9673931415b34fcc0fa2c304", "sequencing": { "requestCount": 6, "responseCount": 6, "maxActive": 1, "cancelAccepted": true }, "schemaChecks": { "noNativePointers": true }, "artifacts": { "kernel": "docs/p6/reverseengineering-action-03-kernel.json", "recovery": "docs/p6/reverseengineering-action-03-recovery.json", "worker": "web/src/reverseengineering-python-facade.ts" }, "boundaries": [ "Typed facade exposes API names/count and curve validity only; no native geometry pointers cross Worker messages." ] }