Files
FreeCADWasmDev/docs/p6/cam-action-05-facade.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

201 lines
5.4 KiB
JSON

{
"schema": "freecad-web-p6-cam-action-05-facade/v1",
"task_id": "FW-P6-CAM-ACT-05-E",
"status": "pass",
"action": "cam.saveReopen",
"envelopeSchema": "freecad-web-facade/v1",
"typedSchema": "freecad-web-cam/save-reopen/v1",
"responses": {
"success": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "result",
"requestId": "cam-action-05-success",
"result": {
"schema": "freecad-web-cam/save-reopen/v1",
"module": "CAM",
"action": "save/reopen",
"format": ".fcstd",
"path": "/tmp/CAMKernel.FCStd",
"size": 1467,
"objectCount": 1,
"objectType": "Path::Feature",
"objectName": "Toolpath",
"gcode": "G0 X0.000000 Y0.000000\nG1 F100.000000 X10.000000 Y0.000000\nG1 F100.000000 X10.000000 Y10.000000\n",
"roundTrip": true,
"recompute": 0,
"hasError": 0,
"artifactSizeStable": false
}
},
"expectedError": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "cam-action-05-error",
"error": {
"code": "invalid_path",
"message": "CAM FCStd path is not writable",
"diagnostic": {
"path": "/tmp/invalid/CAMKernel.FCStd"
}
}
},
"duplicate": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "cam-action-05-success",
"error": {
"code": "duplicate_request",
"message": "requestId has already been dispatched"
}
},
"cancelled": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "cam-action-05-cancel",
"error": {
"code": "cancelled",
"message": "request was cancelled before execution"
}
},
"afterCancel": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "result",
"requestId": "cam-action-05-after-cancel",
"result": {
"schema": "freecad-web-cam/save-reopen/v1",
"module": "CAM",
"action": "save/reopen",
"format": ".fcstd",
"path": "/tmp/CAMKernel.FCStd",
"size": 1467,
"objectCount": 1,
"objectType": "Path::Feature",
"objectName": "Toolpath",
"gcode": "G0 X0.000000 Y0.000000\nG1 F100.000000 X10.000000 Y0.000000\nG1 F100.000000 X10.000000 Y10.000000\n",
"roundTrip": true,
"recompute": 0,
"hasError": 0,
"artifactSizeStable": false
}
}
},
"trace": [
{
"direction": "request",
"requestId": "cam-action-05-success",
"command": "cam.saveReopen"
},
{
"direction": "handler-start",
"requestId": "cam-action-05-success"
},
{
"direction": "handler-end",
"requestId": "cam-action-05-success"
},
{
"direction": "response",
"requestId": "cam-action-05-success",
"kind": "result",
"code": null
},
{
"direction": "request",
"requestId": "cam-action-05-error",
"command": "cam.saveReopen"
},
{
"direction": "handler-start",
"requestId": "cam-action-05-error"
},
{
"direction": "handler-end",
"requestId": "cam-action-05-error"
},
{
"direction": "response",
"requestId": "cam-action-05-error",
"kind": "error",
"code": "invalid_path"
},
{
"direction": "request",
"requestId": "cam-action-05-success",
"command": "cam.saveReopen"
},
{
"direction": "response",
"requestId": "cam-action-05-success",
"kind": "error",
"code": "duplicate_request"
},
{
"direction": "request",
"requestId": "cam-action-05-cancel",
"command": "cam.saveReopen"
},
{
"direction": "response",
"requestId": "cam-action-05-cancel",
"kind": "error",
"code": "cancelled"
},
{
"direction": "request",
"requestId": "cam-action-05-after-cancel",
"command": "cam.saveReopen"
},
{
"direction": "handler-start",
"requestId": "cam-action-05-after-cancel"
},
{
"direction": "handler-end",
"requestId": "cam-action-05-after-cancel"
},
{
"direction": "response",
"requestId": "cam-action-05-after-cancel",
"kind": "result",
"code": null
}
],
"sequencing": {
"maxActive": 1,
"activeAfter": 0,
"requestCount": 5,
"responseCount": 5,
"cancelAccepted": true
},
"state": {
"roundTripBefore": true,
"roundTripAfterCancel": true,
"unchangedAfterCancel": true
},
"schemaChecks": {
"request": true,
"result": true,
"expectedError": true,
"duplicate": true,
"cancel": true,
"noNativePointers": true
},
"inputSha256": "0376575c37d811d8550a7e491349c82a346062d269579b103f65d40adcbd8b72",
"commands": [
"npx tsc --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck --outDir /tmp/freecad-p6-cam-action-05 --declaration false --noEmit false src/facade-envelope.ts src/cam-persistence-facade.ts",
"node tools/run_p6_cam_action05_facade_smoke.mjs /tmp/freecad-p6-cam-action-05/cam-persistence-facade.js"
],
"artifacts": {
"schema": "docs/p6/cam-action-05-facade.schema.json",
"workerLog": "docs/freecad-p6-cam-action-05-e-facade.log"
},
"boundaries": [
"Facade reports the native CAM FCStd round-trip contract without exposing native pointers."
]
}