Files
FreeCADWasmDev/docs/current/migration-delivery.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

881 lines
19 KiB
JSON

{
"schema": "freecad-web-delivery-inventory/v1",
"observedAt": "2026-09-09T02:17:18.871723+00:00",
"fullScope": 1503,
"fullAccepted": 79,
"deliverySubset": 102,
"deliveryAccepted": 72,
"groups": [
{
"module": "Assembly",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Assembly",
"workflow": "document-persistence",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "BIM",
"workflow": "create-edit-recompute",
"total": 2,
"accepted": 0,
"reusableReceipts": 2,
"missingCases": [],
"unrouted": []
},
{
"module": "CAM",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "CAM",
"workflow": "document-import-export",
"total": 2,
"accepted": 2,
"reusableReceipts": 2,
"missingCases": [],
"unrouted": []
},
{
"module": "CAM",
"workflow": "document-persistence",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Cloud",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Cloud",
"workflow": "document-persistence",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Import",
"workflow": "document-import-export",
"total": 2,
"accepted": 2,
"reusableReceipts": 2,
"missingCases": [],
"unrouted": []
},
{
"module": "Import",
"workflow": "document-persistence",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "JtReader",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "JtReader",
"workflow": "document-persistence",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Material",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Material",
"workflow": "document-persistence",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Measure",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Measure",
"workflow": "document-persistence",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Mesh",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Mesh",
"workflow": "document-import-export",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Mesh",
"workflow": "document-persistence",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "MeshPart",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "OpenSCAD",
"workflow": "document-import-export",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Part",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Part",
"workflow": "document-import-export",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Part",
"workflow": "document-persistence",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "PartDesign",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "PartDesign",
"workflow": "document-persistence",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Points",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Points",
"workflow": "document-persistence",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"Points:points.saveReopen"
],
"unrouted": []
},
{
"module": "ReverseEngineering",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"ReverseEngineering:reverseengineering.createRecompute"
],
"unrouted": []
},
{
"module": "ReverseEngineering",
"workflow": "document-persistence",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"ReverseEngineering:reverseengineering.saveReopen"
],
"unrouted": []
},
{
"module": "Robot",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"Robot:robot.createRecompute"
],
"unrouted": []
},
{
"module": "Robot",
"workflow": "document-persistence",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"Robot:robot.saveReopen"
],
"unrouted": []
},
{
"module": "Sandbox",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"Sandbox:sandbox.createRecompute"
],
"unrouted": []
},
{
"module": "Sandbox",
"workflow": "document-persistence",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"Sandbox:sandbox.saveReopen"
],
"unrouted": []
},
{
"module": "Sketcher",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Sketcher",
"workflow": "document-persistence",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Spreadsheet",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"Spreadsheet:spreadsheet.createRecompute"
],
"unrouted": []
},
{
"module": "Spreadsheet",
"workflow": "document-import-export",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Spreadsheet",
"workflow": "document-persistence",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"Spreadsheet:spreadsheet.saveReopen"
],
"unrouted": []
},
{
"module": "Start",
"workflow": "document-import-export",
"total": 2,
"accepted": 0,
"reusableReceipts": 2,
"missingCases": [
"Start:start.importSvg",
"Start:start.moduleImport"
],
"unrouted": []
},
{
"module": "Surface",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"Surface:surface.createRecompute"
],
"unrouted": []
},
{
"module": "Surface",
"workflow": "document-persistence",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"Surface:surface.saveReopen"
],
"unrouted": []
},
{
"module": "TechDraw",
"workflow": "create-edit-recompute",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "TechDraw",
"workflow": "document-import-export",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "TechDraw",
"workflow": "document-persistence",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Mesh",
"workflow": "format-3mf",
"total": 2,
"accepted": 2,
"reusableReceipts": 2,
"missingCases": [],
"unrouted": []
},
{
"module": "Mesh",
"workflow": "format-amf",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Mesh",
"workflow": "format-ast",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Fem",
"workflow": "format-brep",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Part",
"workflow": "format-brep",
"total": 2,
"accepted": 2,
"reusableReceipts": 0,
"missingCases": [],
"unrouted": []
},
{
"module": "Spreadsheet",
"workflow": "format-csv",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "BIM",
"workflow": "format-dae",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Draft",
"workflow": "format-dxf",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "OpenSCAD",
"workflow": "format-dxf",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "TechDraw",
"workflow": "format-dxf",
"total": 1,
"accepted": 1,
"reusableReceipts": 0,
"missingCases": [],
"unrouted": []
},
{
"module": "BIM",
"workflow": "format-fcstd",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "BIM",
"workflow": "format-ifc",
"total": 2,
"accepted": 0,
"reusableReceipts": 2,
"missingCases": [],
"unrouted": []
},
{
"module": "Part",
"workflow": "format-igs",
"total": 3,
"accepted": 3,
"reusableReceipts": 3,
"missingCases": [],
"unrouted": []
},
{
"module": "Import",
"workflow": "format-igs",
"total": 1,
"accepted": 1,
"reusableReceipts": 0,
"missingCases": [],
"unrouted": []
},
{
"module": "BIM",
"workflow": "format-json",
"total": 2,
"accepted": 0,
"reusableReceipts": 2,
"missingCases": [
"business-format:BIM:import:.json",
"business-format:BIM:export:.json"
],
"unrouted": []
},
{
"module": "BIM",
"workflow": "format-obj",
"total": 2,
"accepted": 0,
"reusableReceipts": 2,
"missingCases": [
"business-format:BIM:import:.obj",
"business-format:BIM:export:.obj"
],
"unrouted": []
},
{
"module": "CAM",
"workflow": "format-obj",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Fem",
"workflow": "format-obj",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Mesh",
"workflow": "format-obj",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Part",
"workflow": "format-obj",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Points",
"workflow": "format-obj",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"business-format:Points:export:.obj"
],
"unrouted": []
},
{
"module": "Mesh",
"workflow": "format-off",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "Mesh",
"workflow": "format-ply",
"total": 2,
"accepted": 2,
"reusableReceipts": 2,
"missingCases": [],
"unrouted": []
},
{
"module": "Points",
"workflow": "format-ply",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"business-format:Points:import:.ply"
],
"unrouted": []
},
{
"module": "Import",
"workflow": "format-step",
"total": 2,
"accepted": 2,
"reusableReceipts": 0,
"missingCases": [],
"unrouted": []
},
{
"module": "BIM",
"workflow": "format-step",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"business-format:BIM:import:.stp"
],
"unrouted": []
},
{
"module": "Part",
"workflow": "format-step",
"total": 1,
"accepted": 1,
"reusableReceipts": 1,
"missingCases": [],
"unrouted": []
},
{
"module": "BIM",
"workflow": "format-svg",
"total": 2,
"accepted": 0,
"reusableReceipts": 2,
"missingCases": [
"business-format:BIM:import:.svg",
"business-format:BIM:export:.svg"
],
"unrouted": []
},
{
"module": "Draft",
"workflow": "format-svg",
"total": 2,
"accepted": 2,
"reusableReceipts": 2,
"missingCases": [],
"unrouted": []
},
{
"module": "Start",
"workflow": "format-svg",
"total": 1,
"accepted": 0,
"reusableReceipts": 1,
"missingCases": [
"business-format:Start:import:.svg"
],
"unrouted": []
},
{
"module": "Fem",
"workflow": "format-txt",
"total": 2,
"accepted": 2,
"reusableReceipts": 2,
"missingCases": [],
"unrouted": []
},
{
"module": "Web",
"workflow": "product-workspace",
"total": 4,
"accepted": 4,
"reusableReceipts": 4,
"missingCases": [],
"unrouted": []
},
{
"module": "Web",
"workflow": "product-command-interaction",
"total": 3,
"accepted": 3,
"reusableReceipts": 3,
"missingCases": [],
"unrouted": []
},
{
"module": "Web",
"workflow": "product-document-files",
"total": 3,
"accepted": 3,
"reusableReceipts": 3,
"missingCases": [],
"unrouted": []
}
],
"nextDeliveryAcceptance": {
"schema": "freecad-web-module-business-batch/v1",
"status": "ready",
"strategy": "module-business-first-deferred-validation",
"taskId": "FW-P6-FPA-Y",
"batchId": "3a4ba8681d6c9cdad58d6b71",
"minimumRecords": 1,
"singletonFallback": false,
"selected": {
"module": "BIM",
"tier": "business-acceptance",
"family": "business-acceptance",
"recordCount": 5
},
"businessWorkflow": "existing-business-cases",
"acceptanceReady": true,
"businessLane": "acceptance",
"selectionScope": "delivery",
"fields": [
"id",
"command",
"status",
"source",
"sourceLine"
],
"records": [
[
"BIM:bim.create2DViews",
"bim.create2DViews",
"acceptance_required",
"web/src/module-router.ts",
1
],
[
"BIM:bim.createAxis",
"bim.createAxis",
"acceptance_required",
"web/src/module-router.ts",
1
],
[
"business-format:BIM:export:.fcstd",
"export .fcstd",
"acceptance_required",
"src/Mod/BIM/OfflineRenderingUtils.py",
104
],
[
"business-format:BIM:export:.ifc",
"export .ifc",
"acceptance_required",
"src/Mod/BIM/nativeifc/ifc_export.py",
188
],
[
"business-format:BIM:import:.ifc",
"import .ifc",
"acceptance_required",
"src/Mod/BIM/bimcommands/BimIfcExplorer.py",
268
]
],
"acceptanceContract": "docs/business-acceptance/BIM.json",
"queueGroupCount": 21,
"pendingBusinessCount": 732,
"queue": [
{
"module": "BIM",
"family": "existing-business-cases",
"unresolved": 5,
"acceptanceReady": true
},
{
"module": "Points",
"family": "existing-business-cases",
"unresolved": 1,
"acceptanceReady": true
},
{
"module": "BIM",
"family": "format-json",
"unresolved": 2,
"acceptanceReady": false
},
{
"module": "BIM",
"family": "format-obj",
"unresolved": 2,
"acceptanceReady": false
},
{
"module": "BIM",
"family": "format-step",
"unresolved": 1,
"acceptanceReady": false
},
{
"module": "BIM",
"family": "format-svg",
"unresolved": 2,
"acceptanceReady": false
},
{
"module": "Points",
"family": "document-persistence",
"unresolved": 1,
"acceptanceReady": false
},
{
"module": "Points",
"family": "format-obj",
"unresolved": 1,
"acceptanceReady": false
}
]
},
"note": "Delivery subset orders work; it never replaces full scope or counts receipts as business acceptance."
}