1056 lines
32 KiB
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"
|
|
}
|
|
}
|
|
}
|