Files
FreeCADWasmDev/docs/p6/openscad-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

220 lines
7.0 KiB
JSON

{
"schema": "freecad-web-openscad-facade/v1",
"task_id": "FW-P6-OSC-E",
"status": "pass",
"source_revision": "837f44197c879e41198b7e3bed55c897a9920520",
"input_sha256": "dfd92c822c066653914b37fd884fb53fe84d88783ac4677448d9e1e9363b7a91",
"result_sha256": "a4e7161f705984ed459ab9f0ae42466e31f75ce183fcac5b0ca0f943a491e29e",
"commands": [
"npx tsc --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck --outDir /tmp/freecad-p6-openscad-facade --declaration false --noEmit false src/facade-envelope.ts src/openscad-inspect-facade.ts",
"P6_FACADE_OUTPUT=docs/p6/openscad-facade.json node tools/run_p6_openscad_facade_smoke.mjs freecad-source/build-web/configure/bin /tmp/freecad-p6-openscad-facade",
"npm run build"
],
"artifacts": {
"wasm": {
"path": "freecad-source/build-web/configure/bin/FreeCADWebOpenSCADRuntimeProbe.wasm",
"sha256": "76b2548b068f6cf37fab4e2b1fb71787a72388d0e664566e81acb960e35a379b"
},
"worker_log": {
"path": "docs/freecad-p6-openscad-e-worker-r2.log",
"bytes": 3419,
"sha256": "a4e7161f705984ed459ab9f0ae42466e31f75ce183fcac5b0ca0f943a491e29e"
},
"typescript_log": {
"path": "docs/freecad-p6-openscad-e-tsc.log",
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
"web_build_log": {
"path": "docs/freecad-p6-openscad-e-web-build.log",
"bytes": 4903,
"sha256": "3905bc11e28d9239c53b7661bd4804a916668e74205daaffae86aa7d73c3c941"
}
},
"boundaries": [
"The Facade handler calls the generated OpenSCAD WASM ccall API and does not expose native pointers.",
"The Worker trace covers success, expected revision error, duplicate request id and cancellation in the shared serial queue.",
"The first Worker run failed only on Node ESM/CJS loader globals; the compatibility fix was replayed and the r2 trace passed. The initial TypeScript literal narrowing error is preserved in docs/freecad-p6-openscad-e-tsc-error.log.",
"The browser Worker module is typed and included in the project TypeScript build; this card does not claim Chrome UI coverage."
],
"generated_at": "2026-08-22T13:15:49+08:00",
"smoke": {
"schema": "freecad-web-openscad-facade-smoke/v1",
"envelopeSchema": "freecad-web-facade/v1",
"success": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "result",
"requestId": "openscad-success-1",
"result": {
"schema": "freecad-web-openscad/inspect-source-inventory/v1",
"module": "OpenSCAD",
"action": "inspect/source-inventory",
"sourceRevision": "837f44197c879e41198b7e3bed55c897a9920520",
"sourceEntry": "src/Mod/OpenSCAD/Init.py",
"registrationEntry": "src/Mod/OpenSCAD/Init.py:31-43",
"summary": "837f44197c879e41198b7e3bed55c897a9920520|src/Mod/OpenSCAD/Init.py|src/Mod/OpenSCAD/OpenSCADUtils.py:139-225|0|4|1|2|0",
"registeredFormats": [
"csg",
"CSG",
"scad"
],
"dependencies": [
"FreeCADApp",
"Part",
"Mesh",
"MeshPart",
"Draft",
"PLY",
"OpenSCAD executable"
],
"guiExcluded": [
"OpenSCADGui",
"FreeCADGui",
"PySide"
],
"objectTypeCount": 0,
"formatExtensionCount": 4,
"formatEvidenceCount": 1,
"pythonApiCount": 2,
"guiPythonApiCount": 0,
"readOnly": true,
"persistenceApplicable": false,
"resourcesReleased": true
}
},
"expectedError": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "openscad-error-1",
"error": {
"code": "revision_mismatch",
"message": "OpenSCAD source revision is not locked",
"diagnostic": {
"field": "sourceRevision",
"sourceRevision": "wrong-revision"
}
}
},
"duplicate": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "openscad-success-1",
"error": {
"code": "duplicate_request",
"message": "requestId has already been dispatched"
}
},
"cancelled": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "openscad-cancel-1",
"error": {
"code": "cancelled",
"message": "request was cancelled"
}
},
"trace": [
{
"direction": "worker->host",
"message": {
"kind": "ready",
"action": "openscad.inspectSourceInventory"
}
},
{
"direction": "worker->host",
"message": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "result",
"requestId": "openscad-success-1",
"result": {
"schema": "freecad-web-openscad/inspect-source-inventory/v1",
"module": "OpenSCAD",
"action": "inspect/source-inventory",
"sourceRevision": "837f44197c879e41198b7e3bed55c897a9920520",
"sourceEntry": "src/Mod/OpenSCAD/Init.py",
"registrationEntry": "src/Mod/OpenSCAD/Init.py:31-43",
"summary": "837f44197c879e41198b7e3bed55c897a9920520|src/Mod/OpenSCAD/Init.py|src/Mod/OpenSCAD/OpenSCADUtils.py:139-225|0|4|1|2|0",
"registeredFormats": [
"csg",
"CSG",
"scad"
],
"dependencies": [
"FreeCADApp",
"Part",
"Mesh",
"MeshPart",
"Draft",
"PLY",
"OpenSCAD executable"
],
"guiExcluded": [
"OpenSCADGui",
"FreeCADGui",
"PySide"
],
"objectTypeCount": 0,
"formatExtensionCount": 4,
"formatEvidenceCount": 1,
"pythonApiCount": 2,
"guiPythonApiCount": 0,
"readOnly": true,
"persistenceApplicable": false,
"resourcesReleased": true
}
}
},
{
"direction": "worker->host",
"message": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "openscad-error-1",
"error": {
"code": "revision_mismatch",
"message": "OpenSCAD source revision is not locked",
"diagnostic": {
"field": "sourceRevision",
"sourceRevision": "wrong-revision"
}
}
}
},
{
"direction": "worker->host",
"message": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "openscad-success-1",
"error": {
"code": "duplicate_request",
"message": "requestId has already been dispatched"
}
}
},
{
"direction": "worker->host",
"message": {
"schema": "freecad-web-facade/v1",
"version": 1,
"kind": "error",
"requestId": "openscad-cancel-1",
"error": {
"code": "cancelled",
"message": "request was cancelled"
}
}
}
],
"traceSha256": "26bc54ff244b610cf566be69a0b0340c33d3c213cc23058c80acc8d81cb1e2ea"
}
}