Files
FreeCADWasmDev/docs/current/web-business-completion-audit.json

1056 lines
32 KiB
JSON

{
"schema": "freecad-web-business-completion-audit/v1",
"generatedAt": "2026-09-18T07:09:51.408485+00:00",
"verdict": "incomplete",
"businessFunctionalComplete": false,
"failureReconciliation": {
"total": 4206,
"pending": 3932,
"closed": 274,
"unclassified": 0,
"complete": false
},
"usableFoundation": {
"dynamicWasmModules": 32,
"featureRoutes": {
"routed": 1451,
"total": 1452
},
"featureBuildReceipts": {
"ready": 1451,
"total": 1451,
"remaining": 0
}
},
"businessProgress": {
"completed": 1,
"total": 1511,
"remaining": 1510,
"counts": {
"stale_evidence": 383,
"needs_case": 1093,
"failed": 3,
"historical_failure": 31,
"passed": 1
},
"executable": 250,
"missingCases": 1260
},
"manualCoverage": {
"path": "docs/current/user-tests-20260915/manual-coverage.json",
"sha256": "38ab1289a2a1a2012bcee154d51c9bce074600e6ccf2b4fb19c1fb5c2b7ef08b",
"counts": {
"passed": 21,
"failed": 0,
"blocked": 0,
"not_run": 0
},
"mappedRequirements": 10,
"items": [
{
"id": "UI-01",
"title": "首次启动",
"status": "passed",
"relatedRequirements": [
"product:react-primary-shell"
],
"evidence": [
"manual-2026-09-15T08-09-15-351Z/report.md",
"manual-2026-09-15T08-09-15-351Z/UI-01-01.png",
"manual-2026-09-15T08-09-15-351Z/UI-01-02.png",
"manual-2026-09-15T08-09-15-351Z/UI-01-03.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "UI-02",
"title": "文档标签隔离",
"status": "passed",
"relatedRequirements": [
"Part:part.document",
"product:document-workspace"
],
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/UI-02-01.png",
"manual-2026-09-15T11-47-41-751Z/UI-02-02.png",
"manual-2026-09-15T11-47-41-751Z/UI-02-03.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "UI-03",
"title": "工作台入口",
"status": "passed",
"relatedRequirements": [
"product:workbench-navigation"
],
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "UI-04",
"title": "视口交互",
"status": "passed",
"relatedRequirements": [
"product:multi-object-viewport"
],
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/UI-04-01.png",
"manual-2026-09-15T11-47-41-751Z/UI-04-02.png",
"manual-2026-09-15T11-47-41-751Z/UI-04-03.png",
"manual-2026-09-15T11-47-41-751Z/UI-04-04.png",
"manual-2026-09-15T11-47-41-751Z/UI-04-05.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "GEO-01",
"title": "Box 参数与重算",
"status": "passed",
"relatedRequirements": [
"Part:part.document",
"product:task-panel"
],
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/GEO-01-01.png",
"manual-2026-09-15T12-53-49-351Z/GEO-01-02.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "GEO-02",
"title": "参数修改事务",
"status": "passed",
"relatedRequirements": [
"Part:part.document",
"product:task-panel"
],
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/GEO-02-01.png",
"manual-2026-09-15T11-47-41-751Z/GEO-02-02.png",
"manual-2026-09-15T11-47-41-751Z/GEO-02-03.png",
"manual-2026-09-15T11-47-41-751Z/GEO-02-04.png",
"manual-2026-09-15T11-47-41-751Z/GEO-02-05.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "GEO-03",
"title": "多对象与布尔",
"status": "passed",
"relatedRequirements": [
"Part:desktop:Part_Fuse",
"Part:part.document"
],
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/GEO-03-01.png",
"manual-2026-09-15T11-47-41-751Z/GEO-03-02.png",
"manual-2026-09-15T11-47-41-751Z/GEO-03-03.png",
"manual-2026-09-15T11-47-41-751Z/GEO-03-04.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "GEO-04",
"title": "选择与删除恢复",
"status": "passed",
"relatedRequirements": [
"Part:part.document",
"product:model-tree-properties"
],
"evidence": [
"manual-2026-09-15T08-09-15-351Z/report.md",
"manual-2026-09-15T08-09-15-351Z/GEO-04-01.png",
"manual-2026-09-15T08-09-15-351Z/GEO-04-02.png",
"manual-2026-09-15T08-09-15-351Z/GEO-04-03.png",
"manual-2026-09-15T08-09-15-351Z/GEO-04-04.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "FILE-01",
"title": "STEP 导入",
"status": "passed",
"relatedRequirements": [
"Part:part.document",
"product:file-workflows"
],
"evidence": [
"manual-2026-09-15T08-09-15-351Z/report.md",
"manual-2026-09-15T08-09-15-351Z/FILE-01-01.png",
"manual-2026-09-15T08-09-15-351Z/FILE-01-02.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "FILE-02",
"title": "多格式导入",
"status": "passed",
"relatedRequirements": [
"Web:desktop:Std_Open"
],
"evidence": [
"manual-2026-09-16T09-19-29-131Z/report.md",
"manual-2026-09-16T09-19-29-131Z/FILE-02-01.png",
"manual-2026-09-16T09-19-29-131Z/FILE-02-02.png",
"manual-2026-09-16T09-19-29-131Z/FILE-02-03.png",
"manual-2026-09-16T09-19-29-131Z/FILE-02-04.png",
"manual-2026-09-16T09-19-29-131Z/FILE-02-05.png",
"manual-2026-09-16T09-19-29-131Z/FILE-02-06.png",
"manual-2026-09-16T09-19-29-131Z/FILE-02-07.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "FILE-03",
"title": "保存与重开",
"status": "passed",
"relatedRequirements": [
"Web:desktop:Std_Open"
],
"evidence": [
"manual-2026-09-16T09-19-29-131Z/report.md",
"manual-2026-09-16T09-19-29-131Z/FILE-03-01.png",
"manual-2026-09-16T09-19-29-131Z/FILE-03-02.png",
"manual-2026-09-16T09-19-29-131Z/FILE-03-03.png",
"manual-2026-09-16T09-19-29-131Z/FILE-03-04.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "FILE-04",
"title": "OPFS 刷新恢复",
"status": "passed",
"relatedRequirements": [
"Part:part.saveReopen",
"product:recovery-status"
],
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/FILE-04-01.png",
"manual-2026-09-15T11-47-41-751Z/FILE-04-02.png",
"manual-2026-09-15T11-47-41-751Z/FILE-04-03.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "FILE-05",
"title": "STL 导出回读",
"status": "passed",
"relatedRequirements": [
"Part:part.document",
"product:file-workflows"
],
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/FILE-05-01.png",
"manual-2026-09-15T12-53-49-351Z/FILE-05-02.png",
"manual-2026-09-15T12-53-49-351Z/FILE-05-03.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "DOC-01",
"title": "属性编辑",
"status": "passed",
"relatedRequirements": [
"Part:part.saveReopen",
"product:model-tree-properties"
],
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/DOC-01-01.png",
"manual-2026-09-15T11-47-41-751Z/DOC-01-02.png",
"manual-2026-09-15T11-47-41-751Z/DOC-01-03.png",
"manual-2026-09-15T11-47-41-751Z/DOC-01-04.png",
"manual-2026-09-15T11-47-41-751Z/DOC-01-05.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "DOC-02",
"title": "分组与层级",
"status": "passed",
"relatedRequirements": [
"Web:desktop:Std_CommandLine",
"Web:desktop:Std_Part",
"Web:desktop:Std_Properties",
"Web:desktop:Std_SaveAs",
"Web:desktop:Std_VarSet"
],
"evidence": [
"manual-2026-09-16T09-19-29-131Z/report.md",
"manual-2026-09-16T09-19-29-131Z/DOC-02-01.png",
"manual-2026-09-16T09-19-29-131Z/DOC-02-02.png",
"manual-2026-09-16T09-19-29-131Z/DOC-02-03.png",
"manual-2026-09-16T09-19-29-131Z/DOC-02-04.png",
"manual-2026-09-16T09-19-29-131Z/DOC-02-05.png",
"manual-2026-09-16T09-19-29-131Z/DOC-02-06.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "DOC-03",
"title": "链接替换与解除",
"status": "passed",
"relatedRequirements": [
"Web:desktop:Std_CommandLine",
"Web:desktop:Std_LinkReplace",
"Web:desktop:Std_LinkUnlink",
"Web:desktop:Std_Redo",
"Web:desktop:Std_SaveAs",
"Web:desktop:Std_Undo"
],
"evidence": [
"manual-2026-09-16T09-19-29-131Z/report.md",
"manual-2026-09-16T09-19-29-131Z/DOC-03-01.png",
"manual-2026-09-16T09-19-29-131Z/DOC-03-02.png",
"manual-2026-09-16T09-19-29-131Z/DOC-03-03.png",
"manual-2026-09-16T09-19-29-131Z/DOC-03-04.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "ERR-01",
"title": "取消",
"status": "passed",
"relatedRequirements": [
"product:file-workflows",
"product:recovery-status"
],
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/ERR-01-01.png",
"manual-2026-09-15T12-53-49-351Z/ERR-01-02.png",
"manual-2026-09-15T12-53-49-351Z/ERR-01-03.png",
"manual-2026-09-15T12-53-49-351Z/ERR-01-04.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "ERR-02",
"title": "非法输入",
"status": "passed",
"relatedRequirements": [
"product:file-workflows",
"product:task-panel"
],
"evidence": [
"manual-2026-09-15T08-09-15-351Z/report.md",
"manual-2026-09-15T08-09-15-351Z/ERR-02-01.png",
"manual-2026-09-15T08-09-15-351Z/ERR-02-02.png",
"manual-2026-09-15T08-09-15-351Z/ERR-02-03.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "ERR-03",
"title": "重复请求",
"status": "passed",
"relatedRequirements": [
"product:task-panel"
],
"evidence": [
"manual-2026-09-15T08-09-15-351Z/report.md",
"manual-2026-09-15T08-09-15-351Z/ERR-03-01.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "PERF-01",
"title": "大文件加载",
"status": "passed",
"relatedRequirements": [
"product:file-workflows",
"product:multi-object-viewport"
],
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/PERF-01-01.png",
"manual-2026-09-15T12-53-49-351Z/PERF-01-02.png",
"manual-2026-09-15T12-53-49-351Z/PERF-01-03.png",
"manual-2026-09-15T12-53-49-351Z/PERF-01-04.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
},
{
"id": "PERF-02",
"title": "长时间稳定性",
"status": "passed",
"relatedRequirements": [
"Part:part.document",
"Part:part.saveReopen",
"product:file-workflows"
],
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/PERF-02-01.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-02.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-03.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-04.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-05.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-06.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-07.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-08.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-09.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-10.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-11.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-12.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-13.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-14.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-15.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-16.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-17.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-18.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-19.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-20.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-21.png"
],
"acceptanceEffect": "reference_only; current business proof checked separately"
}
],
"note": "Cumulative manual outcomes are references only; acceptance requires the current fingerprinted business runner evidence."
},
"acceptanceReconciliation": {
"complete": true,
"integrity": {
"duplicateRequirementIds": 0,
"unmappedManualItems": [],
"unknownMappedRequirements": []
},
"report": "docs/current/business-acceptance-reconciliation.json",
"note": "Accounting for every item does not imply business acceptance passed."
},
"implementationProgress": {
"completed": 1506,
"total": 1507,
"remaining": 1
},
"remaining": {
"failureReconciliation": 3932,
"featureRoutes": 1,
"businessAcceptance": 1510,
"workbenchCommands": 0,
"formatWorkflows": 0,
"productWorkflows": 0
},
"traceabilityOnly": {
"pythonApi": {
"implementation": 9066,
"restrictedOrNonportable": 3007
},
"objectRows": {
"implementation": 174,
"boundary": 58
},
"fullParityAreas": 8,
"historicalTaskCards": {
"completed": 1073,
"in_progress": 1,
"planned": 23,
"blocked": 0
},
"blockingBusinessCompletion": false
},
"inventories": {
"pythonApi": {
"total": 13386,
"counts": {
"exposed": 1313,
"nonportable": 1,
"not_implemented": 9065,
"planned": 1,
"restricted": 3006
},
"implementationBacklogByModule": {
"CAM": 1950,
"Draft": 1475,
"BIM": 1251,
"Import": 1135,
"Fem": 1060,
"Part": 662,
"Assembly": 380,
"OpenSCAD": 214,
"Mesh": 161,
"PartDesign": 138,
"Material": 129,
"Sketcher": 127,
"TemplatePyMod": 119,
"TechDraw": 117,
"Spreadsheet": 54,
"Show": 43,
"Sandbox": 22,
"Points": 8,
"Robot": 8,
"Surface": 7,
"Plot": 6
}
},
"objects": {
"total": 403,
"counts": {
"blocked": 13,
"exposed": 157,
"not_implemented": 121,
"passed": 14,
"passed_boundary": 7,
"planned": 40,
"restricted": 51
}
},
"workbench": {
"total": 1492,
"counts": {
"native_handler": 196,
"restricted": 1296
},
"coveredByImplementationReceipts": 1296
},
"formats": {
"total": 236,
"counts": {
"passed": 12,
"passed_boundary": 224,
"blocked": 0
}
}
},
"modules": [
{
"module": "Part",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 100,
"businessAccepted": 0,
"businessPending": 100,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "PartDesign",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 53,
"businessAccepted": 0,
"businessPending": 53,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Sketcher",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 141,
"businessAccepted": 0,
"businessPending": 141,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "TechDraw",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 145,
"businessAccepted": 0,
"businessPending": 145,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Assembly",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 38,
"businessAccepted": 0,
"businessPending": 38,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "BIM",
"status": "pending",
"remaining": 1,
"businessTotal": 196,
"businessAccepted": 0,
"businessPending": 196,
"featureReceipts": 1,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Draft",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 90,
"businessAccepted": 0,
"businessPending": 90,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Material",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 12,
"businessAccepted": 0,
"businessPending": 12,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Mesh",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 53,
"businessAccepted": 1,
"businessPending": 52,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Import",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 12,
"businessAccepted": 0,
"businessPending": 12,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Fem",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 107,
"businessAccepted": 0,
"businessPending": 107,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "CAM",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 70,
"businessAccepted": 0,
"businessPending": 70,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Cloud",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 7,
"businessAccepted": 0,
"businessPending": 7,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Help",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 2,
"businessAccepted": 0,
"businessPending": 2,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Inspection",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 8,
"businessAccepted": 0,
"businessPending": 8,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "JtReader",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 3,
"businessAccepted": 0,
"businessPending": 3,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Measure",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 9,
"businessAccepted": 0,
"businessPending": 9,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "MeshPart",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 12,
"businessAccepted": 0,
"businessPending": 12,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "OpenSCAD",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 28,
"businessAccepted": 0,
"businessPending": 28,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Plot",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 2,
"businessAccepted": 0,
"businessPending": 2,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Points",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 14,
"businessAccepted": 0,
"businessPending": 14,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "ReverseEngineering",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 19,
"businessAccepted": 0,
"businessPending": 19,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Robot",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 21,
"businessAccepted": 0,
"businessPending": 21,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Sandbox",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 37,
"businessAccepted": 0,
"businessPending": 37,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Show",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 3,
"businessAccepted": 0,
"businessPending": 3,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Spreadsheet",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 23,
"businessAccepted": 0,
"businessPending": 23,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Start",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 8,
"businessAccepted": 0,
"businessPending": 8,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Surface",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 14,
"businessAccepted": 0,
"businessPending": 14,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "TemplatePyMod",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 14,
"businessAccepted": 0,
"businessPending": 14,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Test",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 26,
"businessAccepted": 0,
"businessPending": 26,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Tux",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 1,
"businessAccepted": 0,
"businessPending": 1,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
},
{
"module": "Web",
"status": "implementation_ready",
"remaining": 0,
"businessTotal": 243,
"businessAccepted": 0,
"businessPending": 243,
"featureReceipts": 0,
"workbench": 0,
"formats": 0,
"product": 0
}
],
"phases": [
{
"id": "failure-reconciliation-alongside-business",
"status": "in_progress",
"remaining": 3932,
"exit": "all current failure occurrences have attributable resolution or reviewed replacement evidence"
},
{
"id": "P1-feature-build-receipts",
"status": "in_progress",
"remaining": 1,
"exit": "every routed user command has a target build or React-only implementation receipt"
},
{
"id": "P2-module-import-export-workflows",
"status": "complete",
"remaining": 0,
"exit": "each source-declared user import/export extension has an implementation receipt; business acceptance remains P5"
},
{
"id": "P3-react-product-integration",
"status": "complete",
"remaining": 0,
"exit": "one primary React page integrates documents, workbenches, task/property panels, viewport, formats, Python console and recovery"
},
{
"id": "P4-workbench-route-reconciliation",
"status": "complete",
"remaining": 0,
"exit": "desktop restricted commands are reconciled to built native/React routes; no source-only command claim remains"
},
{
"id": "P5-business-acceptance",
"status": "pending",
"remaining": 1510,
"exit": "business-specific input and result assertions pass against the current module source and artifact; reuse matching evidence"
},
{
"id": "validation-nonblocking",
"status": "disabled",
"remaining": 0,
"exit": "historical API and full-parity gates are outside the business implementation queue"
}
],
"rules": [
"route coverage, source classification, build receipts and runtime validation are separate states",
"functional modules call FreeCAD internals directly; Python API inventory is not an implementation queue",
"per-type and API inventory remain nonblocking source traceability",
"business completion requires current input/result evidence; legacy API/full-parity gates do not drive implementation",
"all Worker/native calls retain the single cmd+args JSON dispatcher contract"
],
"sources": {
"tasks": {
"path": "docs/current/task-state.json",
"present": true,
"sha256": "7f7ae57ea09113dd6b97f25555789b963f4918448d5c7cbc3adabda2e77931b1"
},
"features": {
"path": "docs/current/feature-capability-registry.json",
"present": true,
"sha256": "1897feaed76b8b85adc5ec4728dd6eaa08d5dd5c763a6685a46af68408367958"
},
"receipts": {
"path": "docs/current/implementation-first-registry.json",
"present": true,
"sha256": "b33e216ccd6ebfe323330f6292262db5ddbf0a2368ec2be77145e2120544a9d5"
},
"pythonApi": {
"path": "docs/p6/python-api-manifest.json",
"present": true,
"sha256": "79082439be08151a83ff09bf4279bd5555a968e2a8719f8b1e39200fed44f9d7"
},
"objects": {
"path": "docs/p6/object-contract-matrix.json",
"present": true,
"sha256": "fb1fef516b02e24d1cc6173dc6ff0b0c9d041e61dc8c6b88d97858c6e4dc300b"
},
"workbench": {
"path": "docs/p6/workbench-command-matrix.json",
"present": true,
"sha256": "2d5536d00004b098578af7321559bce69c892cbb444d8723d7a6cacc829b52b4"
},
"formats": {
"path": "docs/p6/format-coverage-kernel.json",
"present": true,
"sha256": "d13be6c2db375043e6523f7d3eb3551dd6e3e8ce5f892d936ca3a2111626766f"
},
"fullParity": {
"path": "docs/p6/full-parity-gate.json",
"present": true,
"sha256": "f91c9eb7ca285e4e108f6bebc753fbdd9759ec8867b3f9625aad3cc4daeb47d6"
},
"modules": {
"path": "web/public/modules/manifest.json",
"present": true,
"sha256": "f7294c4ea50d824c0952020a84532bcb035058b0c5d406ba23423b0933847cf1"
},
"product": {
"path": "docs/current/product-business-backlog.json",
"present": true,
"sha256": "c6e442c1074a2162062421bee2ff7bd2fa4d0c1d7c72a1ae8413eeb0a115bc90"
},
"businessAcceptance": {
"path": "docs/current/business-acceptance.json",
"present": true,
"sha256": "8f2e913c72904102f26f5c81208d55e92e7fe33a82095a57e8beaf7a7c47e0b3"
},
"failureReconciliation": {
"path": "docs/current/failure-reconciliation.json",
"present": true,
"sha256": "0796b68dafcfa4feb3cf2dfad57e4ebdb5d98c99082ec0edd50de76790e08317"
}
}
}