diff --git a/config/freecad-active-work-queue.json b/config/freecad-active-work-queue.json index 583953f..de2d2fc 100644 --- a/config/freecad-active-work-queue.json +++ b/config/freecad-active-work-queue.json @@ -24,12 +24,12 @@ ], "followUpProgress": "config/freecad-follow-up-task-progress.json" }, - "nextTask": "TSN-PAIR-fuse-revolution", + "nextTask": "TSN-PAIR-rotate-fuse", "summary": { "tasks": 1756, - "completed": 138, + "completed": 186, "inProgress": 1, - "pending": 1617 + "pending": 1569 }, "milestones": [ { @@ -1863,141 +1863,183 @@ { "id": "TSN-PAIR-fuse-revolution", "title": "Classify ordered operation pair fuse->revolution", - "status": "in_progress", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->revolution", + "classification": "rejected", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builder-and-freecad-profile-reject-with-clean-resave" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-fuse-groove", "title": "Classify ordered operation pair fuse->groove", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->groove", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-fuse-fillet", "title": "Classify ordered operation pair fuse->fillet", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->fillet", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-fuse-chamfer", "title": "Classify ordered operation pair fuse->chamfer", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->chamfer", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-fuse-hole", "title": "Classify ordered operation pair fuse->hole", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->hole", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-fuse-draft", "title": "Classify ordered operation pair fuse->draft", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->draft", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-fuse-thickness", "title": "Classify ordered operation pair fuse->thickness", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->thickness", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-fuse-linear-pattern", "title": "Classify ordered operation pair fuse->linear-pattern", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->linear-pattern", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-fuse-polar-pattern", "title": "Classify ordered operation pair fuse->polar-pattern", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->polar-pattern", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-fuse-mirrored", "title": "Classify ordered operation pair fuse->mirrored", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->mirrored", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-fuse-multi-transform", "title": "Classify ordered operation pair fuse->multi-transform", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->multi-transform", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-fuse", "title": "Classify ordered operation pair cut->fuse", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->fuse", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-cut", "title": "Classify ordered operation pair cut->cut", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->cut", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-common", "title": "Classify ordered operation pair cut->common", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->common", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { @@ -2011,347 +2053,449 @@ { "id": "TSN-PAIR-cut-pad", "title": "Classify ordered operation pair cut->pad", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->pad", + "classification": "rejected", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builder-and-freecad-profile-reject-with-clean-resave" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-pocket", "title": "Classify ordered operation pair cut->pocket", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->pocket", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-loft", "title": "Classify ordered operation pair cut->loft", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->loft", + "classification": "rejected", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-pipe", "title": "Classify ordered operation pair cut->pipe", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->pipe", + "classification": "rejected", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-revolution", "title": "Classify ordered operation pair cut->revolution", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->revolution", + "classification": "rejected", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builder-and-freecad-profile-reject-with-clean-resave" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-groove", "title": "Classify ordered operation pair cut->groove", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->groove", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-fillet", "title": "Classify ordered operation pair cut->fillet", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->fillet", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-chamfer", "title": "Classify ordered operation pair cut->chamfer", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->chamfer", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-hole", "title": "Classify ordered operation pair cut->hole", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->hole", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-draft", "title": "Classify ordered operation pair cut->draft", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->draft", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-thickness", "title": "Classify ordered operation pair cut->thickness", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->thickness", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-linear-pattern", "title": "Classify ordered operation pair cut->linear-pattern", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->linear-pattern", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-polar-pattern", "title": "Classify ordered operation pair cut->polar-pattern", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->polar-pattern", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-mirrored", "title": "Classify ordered operation pair cut->mirrored", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->mirrored", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-cut-multi-transform", "title": "Classify ordered operation pair cut->multi-transform", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "cut->multi-transform", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-fuse", "title": "Classify ordered operation pair common->fuse", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->fuse", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-cut", "title": "Classify ordered operation pair common->cut", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->cut", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-common", "title": "Classify ordered operation pair common->common", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->common", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-rotate", "title": "Classify ordered operation pair common->rotate", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->rotate", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-pad", "title": "Classify ordered operation pair common->pad", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->pad", + "classification": "rejected", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builder-and-freecad-profile-reject-with-clean-resave" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-pocket", "title": "Classify ordered operation pair common->pocket", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->pocket", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-loft", "title": "Classify ordered operation pair common->loft", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->loft", + "classification": "rejected", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-pipe", "title": "Classify ordered operation pair common->pipe", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->pipe", + "classification": "rejected", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-revolution", "title": "Classify ordered operation pair common->revolution", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->revolution", + "classification": "rejected", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builder-and-freecad-profile-reject-with-clean-resave" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-groove", "title": "Classify ordered operation pair common->groove", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->groove", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-fillet", "title": "Classify ordered operation pair common->fillet", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->fillet", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-chamfer", "title": "Classify ordered operation pair common->chamfer", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->chamfer", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-hole", "title": "Classify ordered operation pair common->hole", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->hole", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-draft", "title": "Classify ordered operation pair common->draft", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->draft", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-thickness", "title": "Classify ordered operation pair common->thickness", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->thickness", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-linear-pattern", "title": "Classify ordered operation pair common->linear-pattern", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->linear-pattern", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-polar-pattern", "title": "Classify ordered operation pair common->polar-pattern", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->polar-pattern", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-mirrored", "title": "Classify ordered operation pair common->mirrored", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->mirrored", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-common-multi-transform", "title": "Classify ordered operation pair common->multi-transform", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "common->multi-transform", + "classification": "accepted", + "evidence": [ + "config/freecad-ordered-operation-pair-classification.json", + "native-builders-mutation-naming-and-fcstd-resave-pass" + ], "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" }, { "id": "TSN-PAIR-rotate-fuse", "title": "Classify ordered operation pair rotate->fuse", - "status": "pending", + "status": "in_progress", "dependencies": [ "TSN-PROD-DRIFT-001" ], diff --git a/config/freecad-ordered-operation-pair-classification.json b/config/freecad-ordered-operation-pair-classification.json index a1fc723..273f42b 100644 --- a/config/freecad-ordered-operation-pair-classification.json +++ b/config/freecad-ordered-operation-pair-classification.json @@ -10,8 +10,8 @@ "nativeProbe": { "executor": { "path": "scripts/run-freecad-ordered-operation-pair-classification.mjs", - "bytes": 20865, - "sha256": "b30ff0534ff1681b9a7f966dba0687bd71e23ef9f71ee461f48f80c59643c51b" + "bytes": 28064, + "sha256": "afa884790c2d31cd6c6443ad8c382c6428776bdb371a8a9671640cfece19cb95" }, "matrix": { "path": "scripts/freecad-naming-production-matrix.mjs", @@ -20,8 +20,8 @@ }, "resave": { "path": "scripts/freecad-ordered-operation-pair-resave.py", - "bytes": 13776, - "sha256": "6a293f3c043230115759c72f97045a445e5012cdb0a0026ada29a13e197ccce4" + "bytes": 14348, + "sha256": "1b5597cac1d7f28004a842a2bc94423a88bfcba95795f7cd5be70f98ccf005b7" }, "artifacts": [ { @@ -1337,7 +1337,7 @@ "selectedRecords": 7, "ambiguousResults": 16, "historySha256": "3c9d5be39dd201d2a637810cc9ae644ee5c056f7eab523ab3480a74c7dc5c427", - "namingEvidenceSha256": "081b2236f2756400152fd4f8246d933bb9e91aa435f976ed98d794dc70868069", + "namingEvidenceSha256": "ce1c095b9f98a61d1224b7ee3745a69fef39a2578c83f0585e5566324e4de718", "namingSemanticSha256": "b310dc32da509dc7665d075332f8d7c6a5a8af7cdd4be3d4bb54f4822268453a" }, "second": { @@ -1564,7 +1564,7 @@ "selectedRecords": 7, "ambiguousResults": 16, "historySha256": "3c9d5be39dd201d2a637810cc9ae644ee5c056f7eab523ab3480a74c7dc5c427", - "namingEvidenceSha256": "a8c49791319027adde4462940a01f0d38503ca8660790c1d461c25925fceb0a4", + "namingEvidenceSha256": "29e483c523b58b51915b240471e7b722778857bfa8a8c05d7429298e982a0e8b", "namingSemanticSha256": "ed827ba5065ddca163bca634b02d30a0dd9eb1f148b0437df4e178d29827baf6" }, "rejection": { @@ -1950,7 +1950,7 @@ "selectedRecords": 7, "ambiguousResults": 16, "historySha256": "3c9d5be39dd201d2a637810cc9ae644ee5c056f7eab523ab3480a74c7dc5c427", - "namingEvidenceSha256": "96f0c7103f8b7a1964a017e24c687b287b6c9e749e08deacc722776f88f40893", + "namingEvidenceSha256": "3e73ebdbbfcce2482495e7a77b0f1411137e9bb0490a266bb99eea6c2041a51b", "namingSemanticSha256": "dee4bbec7e0940a6035f6af3d22633f6ef0d1a574db0b5ba5872446e7ad6de15" }, "rejection": { @@ -2303,14 +2303,12075 @@ "status": "pass" } } + }, + { + "taskId": "TSN-PAIR-fuse-revolution", + "pair": "fuse->revolution", + "classification": "rejected", + "reasonCode": "native-builder-and-freecad-profile-reject-with-clean-resave", + "nativeDecision": "rejected", + "first": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 29, + "vertices": 18, + "volume": 1075, + "area": 660, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 52, + "selectedRecords": 7, + "ambiguousResults": 16, + "historySha256": "3c9d5be39dd201d2a637810cc9ae644ee5c056f7eab523ab3480a74c7dc5c427", + "namingEvidenceSha256": "8ee29355114e453d2bbed78ffab03ed23081a44f4eba2935c5ca9fa40846e571", + "namingSemanticSha256": "bfad98d0a2dc7b1d9b96dc7f5602d3af835399765c6b5f9f37d05450ed4f8123" + }, + "rejection": { + "scope": "second-operation-only", + "authority": "occt-builder", + "parameter": "angle", + "trajectory": [ + 360, + 270, + 360 + ], + "stable": true, + "attempts": [ + { + "operation": "revolution", + "builder": "BRepPrimAPI_MakeRevol", + "inputCount": 1, + "parameter": "angle", + "parameterValue": 360, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + }, + { + "operation": "revolution", + "builder": "BRepPrimAPI_MakeRevol", + "inputCount": 1, + "parameter": "angle", + "parameterValue": 270, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + }, + { + "operation": "revolution", + "builder": "BRepPrimAPI_MakeRevol", + "inputCount": 1, + "parameter": "angle", + "parameterValue": 360, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + } + ], + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "documentStable": true, + "documentUnpolluted": true, + "fuseSolidUsedAsInput": true, + "nativeFeatureConstructed": true, + "nativeFeatureRejected": true, + "objectSetRestored": true, + "recomputeStatusCaptured": true, + "sourceShapeRestored": true + }, + "decision": "rejected", + "diagnostic": { + "exception": null, + "exceptionType": null, + "input": { + "name": "Part__Feature", + "subelements": [], + "typeId": "Part::Feature" + }, + "inputShape": { + "area": 660, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 29, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 18, + "volume": 1075 + }, + "nativeTypeId": "Part::Revolution", + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + }, + { + "name": "PairResult", + "typeId": "Part::Revolution" + } + ], + "parameter": { + "name": "angle", + "value": 360 + }, + "recomputeResult": true, + "shapeNull": true, + "shapeValid": false, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "Solids are not Processed" + }, + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "nativeTypeId": "Part::Revolution", + "operation": "revolution", + "pair": "fuse->revolution", + "phases": { + "initial": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 660, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 29, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 18, + "volume": 1075 + }, + "typeId": "Part::Feature" + } + ] + }, + "reopened": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 660, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 29, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 18, + "volume": 1075 + }, + "typeId": "Part::Feature" + } + ] + }, + "resaved": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 660, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 29, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 18, + "volume": 1075 + }, + "typeId": "Part::Feature" + } + ] + } + }, + "rollback": { + "after": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 660, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "brepSha256": "8af7e24097019d0eff0f246d1e3f87b20f792b24da993125c9071b17b718d162", + "edges": 29, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 18, + "volume": 1075 + } + }, + "before": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 660, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "brepSha256": "8af7e24097019d0eff0f246d1e3f87b20f792b24da993125c9071b17b718d162", + "edges": 29, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 18, + "volume": 1075 + } + } + }, + "schemaVersion": 1, + "source": { + "name": "Part__Feature", + "shape": { + "area": 660, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "brepSha256": "8af7e24097019d0eff0f246d1e3f87b20f792b24da993125c9071b17b718d162", + "edges": 29, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 18, + "volume": 1075 + }, + "typeId": "Part::Feature" + }, + "status": "pass" + } + } + }, + { + "taskId": "TSN-PAIR-fuse-groove", + "pair": "fuse->groove", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 29, + "vertices": 18, + "volume": 1075, + "area": 660, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 52, + "selectedRecords": 7, + "ambiguousResults": 16, + "historySha256": "3c9d5be39dd201d2a637810cc9ae644ee5c056f7eab523ab3480a74c7dc5c427", + "namingEvidenceSha256": "3b1aa2c7bccf4be5fb7b4e4996f9c378194d349d95cf6a0b523de4558a6f2c5e", + "namingSemanticSha256": "d8aa73e08cca6f3ba89eb416788f18b5754ef2fdd201436bcec84415805b25f3" + }, + "second": { + "operation": "groove", + "builder": "BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 17, + "edges": 41, + "vertices": 26, + "volume": 1070.287611, + "area": 666.5663706, + "bounds": [ + -2e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 18, + "selectedRecords": 6, + "ambiguousResults": 6, + "historySha256": "481ba0edb1ababe90d3d339dad84d0942c25e7910aca73221b349bff469282ac", + "namingEvidenceSha256": "56606a6114522c665ffc36bf7ab21c037e81237861e5909270f98bfd5c102e64", + "namingSemanticSha256": "5ed80477d778133512a36e6ac3e65ef27d483637711077cbdcb2f27bf66949eb" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "angle", + "trajectory": [ + 360, + 180, + 360 + ], + "beforeValue": 360, + "editedValue": 180, + "restoredValue": 360, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "groove", + "builder": "BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 33, + "vertices": 22, + "volume": 1075, + "area": 660, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 56, + "selectedRecords": 1, + "ambiguousResults": 5, + "historySha256": "be9ba304126dca6e4c49e50947917f8823dbb5423af4530b2ae9f6e7a31c1b03", + "namingEvidenceSha256": "db29bac721434a1fa0876b705f474018389a2b2a6c3f6189249eb5d5f3fe2224", + "namingSemanticSha256": "8d3c28342393d347fa0a7b5cc8e9ca097820e3e561962f3691ab97af2f87406c" + }, + "restoredEvidence": { + "operation": "groove", + "builder": "BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 17, + "edges": 41, + "vertices": 26, + "volume": 1070.287611, + "area": 666.5663706, + "bounds": [ + -2e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 18, + "selectedRecords": 6, + "ambiguousResults": 6, + "historySha256": "481ba0edb1ababe90d3d339dad84d0942c25e7910aca73221b349bff469282ac", + "namingEvidenceSha256": "ba133f18278fc53b3d49a61ee9004a2b511d68d0f033a53f31205c9ced316a90", + "namingSemanticSha256": "5ed80477d778133512a36e6ac3e65ef27d483637711077cbdcb2f27bf66949eb" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "fuse->groove", + "phases": { + "initial": { + "namingEvidenceBytes": 4766, + "namingEvidenceSha256": "56606a6114522c665ffc36bf7ab21c037e81237861e5909270f98bfd5c102e64", + "pair": "fuse->groove", + "shape": { + "area": 666.5663706, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 41, + "faces": 17, + "solids": 1, + "valid": true, + "vertices": 26, + "volume": 1070.287611 + } + }, + "reopened": { + "namingEvidenceBytes": 4766, + "namingEvidenceSha256": "56606a6114522c665ffc36bf7ab21c037e81237861e5909270f98bfd5c102e64", + "pair": "fuse->groove", + "shape": { + "area": 666.5663706, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 41, + "faces": 17, + "solids": 1, + "valid": true, + "vertices": 26, + "volume": 1070.287611 + } + }, + "resaved": { + "namingEvidenceBytes": 4766, + "namingEvidenceSha256": "56606a6114522c665ffc36bf7ab21c037e81237861e5909270f98bfd5c102e64", + "pair": "fuse->groove", + "shape": { + "area": 666.5663706, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 41, + "faces": 17, + "solids": 1, + "valid": true, + "vertices": 26, + "volume": 1070.287611 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-fuse-fillet", + "pair": "fuse->fillet", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 28, + "vertices": 16, + "volume": 1500, + "area": 800, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 15.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 66, + "selectedRecords": 8, + "ambiguousResults": 24, + "historySha256": "777335aae7dc5c90e6c4b998820327f02354e64ae4d2647f026d99a2a24ba6b7", + "namingEvidenceSha256": "a35ca5536f4242fbd23a1336afc8ee199cc25f32ab71921dd67a55868813e74b", + "namingSemanticSha256": "c118fbf3a56f6faef63d00535b9b0d0cb0a4d1a6f2f2ee47e72dd2d25083bb78" + }, + "second": { + "operation": "fillet", + "builder": "BRepFilletAPI_MakeFillet", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 42, + "edges": 88, + "vertices": 40, + "volume": 1495.2786299, + "area": 775.7833557, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 15.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 270, + "selectedRecords": 10, + "ambiguousResults": 40, + "historySha256": "b01bf01c72f4e5fb61abca83dd35acef66430b428fdb5ef52ec13f0939f7a10c", + "namingEvidenceSha256": "f31e20f9d668c6cc79a1369db1fb603f878650026c8e3ae0b73002bc09bd4116", + "namingSemanticSha256": "1eb2dfadaa548d7850a571291cce0bf5257e260ee6adbee04831322932b84de1" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "radius", + "trajectory": [ + 0.4, + 0.6, + 0.4 + ], + "beforeValue": 0.4, + "editedValue": 0.6, + "restoredValue": 0.4, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "fillet", + "builder": "BRepFilletAPI_MakeFillet", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 42, + "edges": 88, + "vertices": 40, + "volume": 1489.473342, + "area": 763.5391046, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 15.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 270, + "selectedRecords": 10, + "ambiguousResults": 40, + "historySha256": "b01bf01c72f4e5fb61abca83dd35acef66430b428fdb5ef52ec13f0939f7a10c", + "namingEvidenceSha256": "574d41dae4a5ed8057b49ba13f0d25ff71c679edd39d2d4213cb926325831989", + "namingSemanticSha256": "1eb2dfadaa548d7850a571291cce0bf5257e260ee6adbee04831322932b84de1" + }, + "restoredEvidence": { + "operation": "fillet", + "builder": "BRepFilletAPI_MakeFillet", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 42, + "edges": 88, + "vertices": 40, + "volume": 1495.2786299, + "area": 775.7833557, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 15.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 270, + "selectedRecords": 10, + "ambiguousResults": 40, + "historySha256": "b01bf01c72f4e5fb61abca83dd35acef66430b428fdb5ef52ec13f0939f7a10c", + "namingEvidenceSha256": "379da73d8f93f434473b590e97ad68d100a8ed55134ad68c5212b4bc0963de16", + "namingSemanticSha256": "1eb2dfadaa548d7850a571291cce0bf5257e260ee6adbee04831322932b84de1" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "fuse->fillet", + "phases": { + "initial": { + "namingEvidenceBytes": 19845, + "namingEvidenceSha256": "f31e20f9d668c6cc79a1369db1fb603f878650026c8e3ae0b73002bc09bd4116", + "pair": "fuse->fillet", + "shape": { + "area": 775.7833557, + "bounds": [ + 0, + 0, + 0, + 15, + 10, + 10 + ], + "edges": 88, + "faces": 42, + "solids": 1, + "valid": true, + "vertices": 40, + "volume": 1495.2786299 + } + }, + "reopened": { + "namingEvidenceBytes": 19845, + "namingEvidenceSha256": "f31e20f9d668c6cc79a1369db1fb603f878650026c8e3ae0b73002bc09bd4116", + "pair": "fuse->fillet", + "shape": { + "area": 775.7833557, + "bounds": [ + 0, + 0, + 0, + 15, + 10, + 10 + ], + "edges": 88, + "faces": 42, + "solids": 1, + "valid": true, + "vertices": 40, + "volume": 1495.2786299 + } + }, + "resaved": { + "namingEvidenceBytes": 19845, + "namingEvidenceSha256": "f31e20f9d668c6cc79a1369db1fb603f878650026c8e3ae0b73002bc09bd4116", + "pair": "fuse->fillet", + "shape": { + "area": 775.7833557, + "bounds": [ + 0, + 0, + 0, + 15, + 10, + 10 + ], + "edges": 88, + "faces": 42, + "solids": 1, + "valid": true, + "vertices": 40, + "volume": 1495.2786299 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-fuse-chamfer", + "pair": "fuse->chamfer", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 28, + "vertices": 16, + "volume": 1500, + "area": 800, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 15.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 66, + "selectedRecords": 8, + "ambiguousResults": 24, + "historySha256": "777335aae7dc5c90e6c4b998820327f02354e64ae4d2647f026d99a2a24ba6b7", + "namingEvidenceSha256": "b20593ebf73fe0819bff1d9d9c03c9ab34e7f23ae6a66855cc57896151cdcc30", + "namingSemanticSha256": "2a92f0308db3d218134c4ec86fd7b6cafcbfeed7bdab0e7f2b0b10743c9f85ee" + }, + "second": { + "operation": "chamfer", + "builder": "BRepFilletAPI_MakeChamfer", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 42, + "edges": 80, + "vertices": 40, + "volume": 1489.1413333, + "area": 766.7138919, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 15.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 270, + "selectedRecords": 10, + "ambiguousResults": 40, + "historySha256": "56d637add2e2b0d88027ae046c3b460293ca96044de7f325ed32f3ba17d1542c", + "namingEvidenceSha256": "9f59dba30d2134cfee31ae308b43551cba4442d0ae7d9e32f9e0bcb5bb7b79eb", + "namingSemanticSha256": "d08ef33cffc6448954fc896515faa873600d62aff668570cbde80cd5abe75c7b" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "distance", + "trajectory": [ + 0.4, + 0.6, + 0.4 + ], + "beforeValue": 0.4, + "editedValue": 0.6, + "restoredValue": 0.4, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "chamfer", + "builder": "BRepFilletAPI_MakeChamfer", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 42, + "edges": 80, + "vertices": 40, + "volume": 1475.952, + "area": 749.7092872, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 15.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 270, + "selectedRecords": 10, + "ambiguousResults": 40, + "historySha256": "56d637add2e2b0d88027ae046c3b460293ca96044de7f325ed32f3ba17d1542c", + "namingEvidenceSha256": "be6e1a85a34ce9e6e039131fa4fa82d3b77215348c087efa2697d2e3196b27fe", + "namingSemanticSha256": "d08ef33cffc6448954fc896515faa873600d62aff668570cbde80cd5abe75c7b" + }, + "restoredEvidence": { + "operation": "chamfer", + "builder": "BRepFilletAPI_MakeChamfer", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 42, + "edges": 80, + "vertices": 40, + "volume": 1489.1413333, + "area": 766.7138919, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 15.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 270, + "selectedRecords": 10, + "ambiguousResults": 40, + "historySha256": "56d637add2e2b0d88027ae046c3b460293ca96044de7f325ed32f3ba17d1542c", + "namingEvidenceSha256": "f66764f59593f1732bd552c1b7a37d36d32806c6f44c17816628ee4df313ef8a", + "namingSemanticSha256": "d08ef33cffc6448954fc896515faa873600d62aff668570cbde80cd5abe75c7b" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "fuse->chamfer", + "phases": { + "initial": { + "namingEvidenceBytes": 20008, + "namingEvidenceSha256": "9f59dba30d2134cfee31ae308b43551cba4442d0ae7d9e32f9e0bcb5bb7b79eb", + "pair": "fuse->chamfer", + "shape": { + "area": 766.7138919, + "bounds": [ + 0, + 0, + 0, + 15, + 10, + 10 + ], + "edges": 80, + "faces": 42, + "solids": 1, + "valid": true, + "vertices": 40, + "volume": 1489.1413333 + } + }, + "reopened": { + "namingEvidenceBytes": 20008, + "namingEvidenceSha256": "9f59dba30d2134cfee31ae308b43551cba4442d0ae7d9e32f9e0bcb5bb7b79eb", + "pair": "fuse->chamfer", + "shape": { + "area": 766.7138919, + "bounds": [ + 0, + 0, + 0, + 15, + 10, + 10 + ], + "edges": 80, + "faces": 42, + "solids": 1, + "valid": true, + "vertices": 40, + "volume": 1489.1413333 + } + }, + "resaved": { + "namingEvidenceBytes": 20008, + "namingEvidenceSha256": "9f59dba30d2134cfee31ae308b43551cba4442d0ae7d9e32f9e0bcb5bb7b79eb", + "pair": "fuse->chamfer", + "shape": { + "area": 766.7138919, + "bounds": [ + 0, + 0, + 0, + 15, + 10, + 10 + ], + "edges": 80, + "faces": 42, + "solids": 1, + "valid": true, + "vertices": 40, + "volume": 1489.1413333 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-fuse-hole", + "pair": "fuse->hole", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 29, + "vertices": 18, + "volume": 1075, + "area": 660, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 52, + "selectedRecords": 7, + "ambiguousResults": 16, + "historySha256": "3c9d5be39dd201d2a637810cc9ae644ee5c056f7eab523ab3480a74c7dc5c427", + "namingEvidenceSha256": "364804122870897619be8a6a6df9b8e17de9745e35c085a0e688a1f01799c0fa", + "namingSemanticSha256": "50a50c045b7842a649a5e06039a43c492b27bb905e67e37c97c44813155e0cef" + }, + "second": { + "operation": "hole", + "builder": "BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "native-evidence", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 32, + "vertices": 20, + "volume": 1043.5840735, + "area": 716.5486678, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 23, + "selectedRecords": 2, + "ambiguousResults": 0, + "historySha256": "09e64a0152b436cb8c88b6ed29a47e50085779832c3ffe7181cec877ac0120dc", + "namingEvidenceSha256": "cb7b0a5c795747bebe7574c8286c3d42815673581b96442a616a2bef51383267", + "namingSemanticSha256": "83842a5b5e9e5640e8546b1d69dfa761d5f731898f1e02eb890d063a7089efaf" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "radius", + "trajectory": [ + 1, + 1.5, + 1 + ], + "beforeValue": 1, + "editedValue": 1.5, + "restoredValue": 1, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "hole", + "builder": "BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "native-evidence", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 32, + "vertices": 20, + "volume": 1004.3141653, + "area": 740.1106127, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 23, + "selectedRecords": 2, + "ambiguousResults": 0, + "historySha256": "09e64a0152b436cb8c88b6ed29a47e50085779832c3ffe7181cec877ac0120dc", + "namingEvidenceSha256": "a006be43aca18bb8dde0762d69f906d4a4d75d74614a0eb3ceb56819f7f2adec", + "namingSemanticSha256": "83842a5b5e9e5640e8546b1d69dfa761d5f731898f1e02eb890d063a7089efaf" + }, + "restoredEvidence": { + "operation": "hole", + "builder": "BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "native-evidence", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 32, + "vertices": 20, + "volume": 1043.5840735, + "area": 716.5486678, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 23, + "selectedRecords": 2, + "ambiguousResults": 0, + "historySha256": "09e64a0152b436cb8c88b6ed29a47e50085779832c3ffe7181cec877ac0120dc", + "namingEvidenceSha256": "825c397e8c73aba41a22573fb2eb3e82a85d797fc6ba01fceadf77c51f0fc90b", + "namingSemanticSha256": "83842a5b5e9e5640e8546b1d69dfa761d5f731898f1e02eb890d063a7089efaf" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "fuse->hole", + "phases": { + "initial": { + "namingEvidenceBytes": 1512, + "namingEvidenceSha256": "cb7b0a5c795747bebe7574c8286c3d42815673581b96442a616a2bef51383267", + "pair": "fuse->hole", + "shape": { + "area": 716.5486678, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 32, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 20, + "volume": 1043.5840735 + } + }, + "reopened": { + "namingEvidenceBytes": 1512, + "namingEvidenceSha256": "cb7b0a5c795747bebe7574c8286c3d42815673581b96442a616a2bef51383267", + "pair": "fuse->hole", + "shape": { + "area": 716.5486678, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 32, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 20, + "volume": 1043.5840735 + } + }, + "resaved": { + "namingEvidenceBytes": 1512, + "namingEvidenceSha256": "cb7b0a5c795747bebe7574c8286c3d42815673581b96442a616a2bef51383267", + "pair": "fuse->hole", + "shape": { + "area": 716.5486678, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 32, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 20, + "volume": 1043.5840735 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-fuse-draft", + "pair": "fuse->draft", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 29, + "vertices": 18, + "volume": 1075, + "area": 660, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 52, + "selectedRecords": 7, + "ambiguousResults": 16, + "historySha256": "3c9d5be39dd201d2a637810cc9ae644ee5c056f7eab523ab3480a74c7dc5c427", + "namingEvidenceSha256": "9d8f4ca96264d7ced81de346621e6f8405b911e06843ddaf9e22f4317028edf8", + "namingSemanticSha256": "a6302fe6a8ba67344afb9b460abf370a32d9f82b9e96043f336a524184a5f592" + }, + "second": { + "operation": "draft", + "builder": "BRepOffsetAPI_DraftAngle", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "native-evidence", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 29, + "vertices": 18, + "volume": 1031.2556682, + "area": 642.884251, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 5, + "selectedRecords": 5, + "ambiguousResults": 0, + "historySha256": "382606c9d5b8b29b560437d914a6e3b33f1d1a3073cd9c0c3fcb59edc8adaa14", + "namingEvidenceSha256": "efc60296637c52f05264d5c6a546ff7a45fcfc9ea32cc30e4c88fa671b1ed4f6", + "namingSemanticSha256": "9051293e9338c3c07394e762c427bdc308d2c1f6a678e5dee1059cc428e55f9b" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "angle", + "trajectory": [ + 5, + 8, + 5 + ], + "beforeValue": 5, + "editedValue": 8, + "restoredValue": 5, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "draft", + "builder": "BRepOffsetAPI_DraftAngle", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "native-evidence", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 29, + "vertices": 18, + "volume": 1004.7295826, + "area": 632.8745903, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 5, + "selectedRecords": 5, + "ambiguousResults": 0, + "historySha256": "382606c9d5b8b29b560437d914a6e3b33f1d1a3073cd9c0c3fcb59edc8adaa14", + "namingEvidenceSha256": "8e0f7adfe8b82081a031496e185d230eef03789779638ecba329f87269f7a51f", + "namingSemanticSha256": "9051293e9338c3c07394e762c427bdc308d2c1f6a678e5dee1059cc428e55f9b" + }, + "restoredEvidence": { + "operation": "draft", + "builder": "BRepOffsetAPI_DraftAngle", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "native-evidence", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 29, + "vertices": 18, + "volume": 1031.2556682, + "area": 642.884251, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 5, + "selectedRecords": 5, + "ambiguousResults": 0, + "historySha256": "382606c9d5b8b29b560437d914a6e3b33f1d1a3073cd9c0c3fcb59edc8adaa14", + "namingEvidenceSha256": "ebc5d8df1175a91ffdf13876b145832347f5f0bdf139ba07c018f5f610dde19f", + "namingSemanticSha256": "9051293e9338c3c07394e762c427bdc308d2c1f6a678e5dee1059cc428e55f9b" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "fuse->draft", + "phases": { + "initial": { + "namingEvidenceBytes": 2500, + "namingEvidenceSha256": "efc60296637c52f05264d5c6a546ff7a45fcfc9ea32cc30e4c88fa671b1ed4f6", + "pair": "fuse->draft", + "shape": { + "area": 642.884251, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 29, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 18, + "volume": 1031.2556682 + } + }, + "reopened": { + "namingEvidenceBytes": 2500, + "namingEvidenceSha256": "efc60296637c52f05264d5c6a546ff7a45fcfc9ea32cc30e4c88fa671b1ed4f6", + "pair": "fuse->draft", + "shape": { + "area": 642.884251, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 29, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 18, + "volume": 1031.2556682 + } + }, + "resaved": { + "namingEvidenceBytes": 2500, + "namingEvidenceSha256": "efc60296637c52f05264d5c6a546ff7a45fcfc9ea32cc30e4c88fa671b1ed4f6", + "pair": "fuse->draft", + "shape": { + "area": 642.884251, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 29, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 18, + "volume": 1031.2556682 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-fuse-thickness", + "pair": "fuse->thickness", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 1000, + "area": 600, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 156, + "selectedRecords": 0, + "ambiguousResults": 26, + "historySha256": "3b4b1e5e7d7658fe842533f7fac0e04d26650e5d72fe2076acf675bf4bc67aa4", + "namingEvidenceSha256": "2418df1c7cad46ba4401f9b9fe22798dea0ca38a730e21996e5a79d1aafbc726", + "namingSemanticSha256": "bdf69311439d33086f5a07344293dd54544ec0c67b159f3763159a48c98bc50d" + }, + "second": { + "operation": "thickness", + "builder": "BRepOffsetAPI_MakeThickSolid", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 11, + "edges": 24, + "vertices": 16, + "volume": 187.456, + "area": 953.28, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 38, + "selectedRecords": 0, + "ambiguousResults": 14, + "historySha256": "c5842e0aea2aae1bab3b1fb33a9891a3c7fb3822d1cb60265a27fc257c8b516a", + "namingEvidenceSha256": "5db8b0548c041ca7e9d5fb4339db7c0ec1c4d68a9e817303526b9991f5ad6526", + "namingSemanticSha256": "45b9a83ddbfb52b1152e1c619d4e99c52d3f365b75befb54fda4878999340c47" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "offset", + "trajectory": [ + -0.4, + -0.6, + -0.4 + ], + "beforeValue": -0.4, + "editedValue": -0.6, + "restoredValue": -0.4, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "thickness", + "builder": "BRepOffsetAPI_MakeThickSolid", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 11, + "edges": 24, + "vertices": 16, + "volume": 272.064, + "area": 930.88, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 38, + "selectedRecords": 0, + "ambiguousResults": 14, + "historySha256": "c5842e0aea2aae1bab3b1fb33a9891a3c7fb3822d1cb60265a27fc257c8b516a", + "namingEvidenceSha256": "5db8b0548c041ca7e9d5fb4339db7c0ec1c4d68a9e817303526b9991f5ad6526", + "namingSemanticSha256": "45b9a83ddbfb52b1152e1c619d4e99c52d3f365b75befb54fda4878999340c47" + }, + "restoredEvidence": { + "operation": "thickness", + "builder": "BRepOffsetAPI_MakeThickSolid", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 11, + "edges": 24, + "vertices": 16, + "volume": 187.456, + "area": 953.28, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 38, + "selectedRecords": 0, + "ambiguousResults": 14, + "historySha256": "c5842e0aea2aae1bab3b1fb33a9891a3c7fb3822d1cb60265a27fc257c8b516a", + "namingEvidenceSha256": "5db8b0548c041ca7e9d5fb4339db7c0ec1c4d68a9e817303526b9991f5ad6526", + "namingSemanticSha256": "45b9a83ddbfb52b1152e1c619d4e99c52d3f365b75befb54fda4878999340c47" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "fuse->thickness", + "phases": { + "initial": { + "namingEvidenceBytes": 8845, + "namingEvidenceSha256": "5db8b0548c041ca7e9d5fb4339db7c0ec1c4d68a9e817303526b9991f5ad6526", + "pair": "fuse->thickness", + "shape": { + "area": 953.28, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 11, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 187.456 + } + }, + "reopened": { + "namingEvidenceBytes": 8845, + "namingEvidenceSha256": "5db8b0548c041ca7e9d5fb4339db7c0ec1c4d68a9e817303526b9991f5ad6526", + "pair": "fuse->thickness", + "shape": { + "area": 953.28, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 11, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 187.456 + } + }, + "resaved": { + "namingEvidenceBytes": 8845, + "namingEvidenceSha256": "5db8b0548c041ca7e9d5fb4339db7c0ec1c4d68a9e817303526b9991f5ad6526", + "pair": "fuse->thickness", + "shape": { + "area": 953.28, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 11, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 187.456 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-fuse-linear-pattern", + "pair": "fuse->linear-pattern", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 29, + "vertices": 18, + "volume": 1075, + "area": 660, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 52, + "selectedRecords": 7, + "ambiguousResults": 16, + "historySha256": "3c9d5be39dd201d2a637810cc9ae644ee5c056f7eab523ab3480a74c7dc5c427", + "namingEvidenceSha256": "2fc9779ff6ade33cd46721565881e53b7cca6a1fa33bef712df8cf711ceb4b32", + "namingSemanticSha256": "46436ea2ef40c9644f582e2658cfc6fcc92e8ff2bcaceae4e0fc97d4266500ae" + }, + "second": { + "operation": "linear-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 25, + "edges": 56, + "vertices": 33, + "volume": 1875, + "area": 980, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 21.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 141, + "selectedRecords": 10, + "ambiguousResults": 26, + "historySha256": "ed1fdcb837c267da9086cceea6483b4c446919e292deca01fed04f81b7194870", + "namingEvidenceSha256": "2c6e1843ae80744b3340ef77fa92283cb8611143a6439a0cc183d23cc3f3f615", + "namingSemanticSha256": "dd1482c61d0261d767f350a62617b59eae30a4097c862fea9ba3a86a76d4a544" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "translationX", + "trajectory": [ + 8, + 9, + 8 + ], + "beforeValue": 8, + "editedValue": 9, + "restoredValue": 8, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "linear-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 27, + "edges": 61, + "vertices": 36, + "volume": 1975, + "area": 1020, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 22.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 129, + "selectedRecords": 10, + "ambiguousResults": 27, + "historySha256": "b48af27371b701de600c85d1d79a1ac22d3cc473c8820abe5597fdb2dd6e472f", + "namingEvidenceSha256": "c03e2bdcf5d8badd10b195113b078ec2049bb06a3cfb0c9e000fc24400c85bbd", + "namingSemanticSha256": "6b780b188d893dbdb6f014c030d4d2fd8bcb0c097f764407263e15f7ced03ccd" + }, + "restoredEvidence": { + "operation": "linear-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 25, + "edges": 56, + "vertices": 33, + "volume": 1875, + "area": 980, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 21.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 141, + "selectedRecords": 10, + "ambiguousResults": 26, + "historySha256": "ed1fdcb837c267da9086cceea6483b4c446919e292deca01fed04f81b7194870", + "namingEvidenceSha256": "2f84dab6b052e542292afdbf055d2021375fd69a663ee87b2b069e19c8a0555e", + "namingSemanticSha256": "dd1482c61d0261d767f350a62617b59eae30a4097c862fea9ba3a86a76d4a544" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "fuse->linear-pattern", + "phases": { + "initial": { + "namingEvidenceBytes": 13585, + "namingEvidenceSha256": "2c6e1843ae80744b3340ef77fa92283cb8611143a6439a0cc183d23cc3f3f615", + "pair": "fuse->linear-pattern", + "shape": { + "area": 980, + "bounds": [ + 0, + 0, + 0, + 21, + 10, + 10 + ], + "edges": 56, + "faces": 25, + "solids": 1, + "valid": true, + "vertices": 33, + "volume": 1875 + } + }, + "reopened": { + "namingEvidenceBytes": 13585, + "namingEvidenceSha256": "2c6e1843ae80744b3340ef77fa92283cb8611143a6439a0cc183d23cc3f3f615", + "pair": "fuse->linear-pattern", + "shape": { + "area": 980, + "bounds": [ + 0, + 0, + 0, + 21, + 10, + 10 + ], + "edges": 56, + "faces": 25, + "solids": 1, + "valid": true, + "vertices": 33, + "volume": 1875 + } + }, + "resaved": { + "namingEvidenceBytes": 13585, + "namingEvidenceSha256": "2c6e1843ae80744b3340ef77fa92283cb8611143a6439a0cc183d23cc3f3f615", + "pair": "fuse->linear-pattern", + "shape": { + "area": 980, + "bounds": [ + 0, + 0, + 0, + 21, + 10, + 10 + ], + "edges": 56, + "faces": 25, + "solids": 1, + "valid": true, + "vertices": 33, + "volume": 1875 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-fuse-polar-pattern", + "pair": "fuse->polar-pattern", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 29, + "vertices": 18, + "volume": 1075, + "area": 660, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 52, + "selectedRecords": 7, + "ambiguousResults": 16, + "historySha256": "3c9d5be39dd201d2a637810cc9ae644ee5c056f7eab523ab3480a74c7dc5c427", + "namingEvidenceSha256": "5920108baf8160273bf8b99cb9ea8de34f591ba39d878a17a1aa242458ee0b68", + "namingSemanticSha256": "b95ba6267525491c77939ae29e8d6abe84ec43ac54193df8d8918f0d85ce5f18" + }, + "second": { + "operation": "polar-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 33, + "edges": 73, + "vertices": 42, + "volume": 1510.7700496, + "area": 843.1348789, + "bounds": [ + -5.0000001, + -1e-7, + -1e-7, + 13.0000001, + 13.6602542, + 10.0000001 + ] + }, + "historyRecords": 178, + "selectedRecords": 12, + "ambiguousResults": 22, + "historySha256": "e9af10beed68d7df93060477c5c9af31877bbc29418b4093db3e6876352423e2", + "namingEvidenceSha256": "85bc79c221c96171661a049ab3def10ef6a83105306ea7349df8fcaed0eba4f4", + "namingSemanticSha256": "14ccc88e134ad54323a2b653ed3a65b4a3fb43669809fda95ccc1cf08fc959da" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "angle", + "trajectory": [ + 30, + 45, + 30 + ], + "beforeValue": 30, + "editedValue": 45, + "restoredValue": 30, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "polar-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 26, + "edges": 61, + "vertices": 37, + "volume": 1696.1544033, + "area": 917.2485579, + "bounds": [ + -7.071068, + -1e-7, + -1e-7, + 13.0000001, + 14.1421358, + 10.0000001 + ] + }, + "historyRecords": 140, + "selectedRecords": 8, + "ambiguousResults": 13, + "historySha256": "942333ff25f5c877c53eaf00c174a8103470a42337b7da554fb21bcd8ff0879c", + "namingEvidenceSha256": "a6dcb78cd458f1844f5544355792fb8149e6e36f8b32b8303e1bb750f7182a7a", + "namingSemanticSha256": "2f79fa241c8fffebb8a582a784138dbb6f974355d923bb69ba77e36fb1841360" + }, + "restoredEvidence": { + "operation": "polar-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 33, + "edges": 73, + "vertices": 42, + "volume": 1510.7700496, + "area": 843.1348789, + "bounds": [ + -5.0000001, + -1e-7, + -1e-7, + 13.0000001, + 13.6602542, + 10.0000001 + ] + }, + "historyRecords": 178, + "selectedRecords": 12, + "ambiguousResults": 22, + "historySha256": "e9af10beed68d7df93060477c5c9af31877bbc29418b4093db3e6876352423e2", + "namingEvidenceSha256": "4324ad9203f1ae1d76214ed516706715d532b6cbe341e5cee46477e14a54c3fa", + "namingSemanticSha256": "14ccc88e134ad54323a2b653ed3a65b4a3fb43669809fda95ccc1cf08fc959da" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "fuse->polar-pattern", + "phases": { + "initial": { + "namingEvidenceBytes": 13329, + "namingEvidenceSha256": "85bc79c221c96171661a049ab3def10ef6a83105306ea7349df8fcaed0eba4f4", + "pair": "fuse->polar-pattern", + "shape": { + "area": 843.1348789, + "bounds": [ + -5, + 0, + 0, + 13, + 13.660254, + 10 + ], + "edges": 73, + "faces": 33, + "solids": 1, + "valid": true, + "vertices": 42, + "volume": 1510.7700496 + } + }, + "reopened": { + "namingEvidenceBytes": 13329, + "namingEvidenceSha256": "85bc79c221c96171661a049ab3def10ef6a83105306ea7349df8fcaed0eba4f4", + "pair": "fuse->polar-pattern", + "shape": { + "area": 843.1348789, + "bounds": [ + -5, + 0, + 0, + 13, + 13.660254, + 10 + ], + "edges": 73, + "faces": 33, + "solids": 1, + "valid": true, + "vertices": 42, + "volume": 1510.7700496 + } + }, + "resaved": { + "namingEvidenceBytes": 13329, + "namingEvidenceSha256": "85bc79c221c96171661a049ab3def10ef6a83105306ea7349df8fcaed0eba4f4", + "pair": "fuse->polar-pattern", + "shape": { + "area": 843.1348789, + "bounds": [ + -5, + 0, + 0, + 13, + 13.660254, + 10 + ], + "edges": 73, + "faces": 33, + "solids": 1, + "valid": true, + "vertices": 42, + "volume": 1510.7700496 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-fuse-mirrored", + "pair": "fuse->mirrored", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 29, + "vertices": 18, + "volume": 1075, + "area": 660, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 52, + "selectedRecords": 7, + "ambiguousResults": 16, + "historySha256": "3c9d5be39dd201d2a637810cc9ae644ee5c056f7eab523ab3480a74c7dc5c427", + "namingEvidenceSha256": "ece961c28e530425183cb4bc9c8c0b905ea4dc34048f1259435ab2cc693884e0", + "namingSemanticSha256": "0ab7099aa86177ae767c87a0dc5512da9bed3529b2298917e432122aad029cae" + }, + "second": { + "operation": "mirrored", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 20, + "edges": 46, + "vertices": 28, + "volume": 1150, + "area": 720, + "bounds": [ + -3.0000001, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 224, + "selectedRecords": 10, + "ambiguousResults": 35, + "historySha256": "b3bbb472b469962c36db0ae2cf8035ec742a7f3240b21f5e54a5c310ee32f014", + "namingEvidenceSha256": "725a4dee83fc45f126975f637af6f2be0d90d83d4a40c993366d25ef0dcb0011", + "namingSemanticSha256": "5a492b29243696d04e95f3f9c18261ee40d4fdad3f8b3620a54bd828499c0e18" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "planeOriginX", + "trajectory": [ + 5, + 6, + 5 + ], + "beforeValue": 5, + "editedValue": 6, + "restoredValue": 5, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "mirrored", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 32, + "edges": 70, + "vertices": 40, + "volume": 1250, + "area": 720, + "bounds": [ + -1.0000001, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 188, + "selectedRecords": 19, + "ambiguousResults": 33, + "historySha256": "b34097cafc06909b14bbbb465ee975e7c5628bb6902d6c5f1f9333d074222d23", + "namingEvidenceSha256": "6da8f023368f776afb587d4099b86cdfc0f18f130fa5493210cfe4081d2dac25", + "namingSemanticSha256": "70abf0dcbdab8dd8bb8b7ce2bb75a4602956451d991eadadac3b02f8714940b4" + }, + "restoredEvidence": { + "operation": "mirrored", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 20, + "edges": 46, + "vertices": 28, + "volume": 1150, + "area": 720, + "bounds": [ + -3.0000001, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 224, + "selectedRecords": 10, + "ambiguousResults": 35, + "historySha256": "b3bbb472b469962c36db0ae2cf8035ec742a7f3240b21f5e54a5c310ee32f014", + "namingEvidenceSha256": "1242d91ba0f2eb23f2917103c8d961068910873162ff6a49f77a9ef366908795", + "namingSemanticSha256": "5a492b29243696d04e95f3f9c18261ee40d4fdad3f8b3620a54bd828499c0e18" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "fuse->mirrored", + "phases": { + "initial": { + "namingEvidenceBytes": 17364, + "namingEvidenceSha256": "725a4dee83fc45f126975f637af6f2be0d90d83d4a40c993366d25ef0dcb0011", + "pair": "fuse->mirrored", + "shape": { + "area": 720, + "bounds": [ + -3, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 46, + "faces": 20, + "solids": 1, + "valid": true, + "vertices": 28, + "volume": 1150 + } + }, + "reopened": { + "namingEvidenceBytes": 17364, + "namingEvidenceSha256": "725a4dee83fc45f126975f637af6f2be0d90d83d4a40c993366d25ef0dcb0011", + "pair": "fuse->mirrored", + "shape": { + "area": 720, + "bounds": [ + -3, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 46, + "faces": 20, + "solids": 1, + "valid": true, + "vertices": 28, + "volume": 1150 + } + }, + "resaved": { + "namingEvidenceBytes": 17364, + "namingEvidenceSha256": "725a4dee83fc45f126975f637af6f2be0d90d83d4a40c993366d25ef0dcb0011", + "pair": "fuse->mirrored", + "shape": { + "area": 720, + "bounds": [ + -3, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 46, + "faces": 20, + "solids": 1, + "valid": true, + "vertices": 28, + "volume": 1150 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-fuse-multi-transform", + "pair": "fuse->multi-transform", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 29, + "vertices": 18, + "volume": 1075, + "area": 660, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 52, + "selectedRecords": 7, + "ambiguousResults": 16, + "historySha256": "3c9d5be39dd201d2a637810cc9ae644ee5c056f7eab523ab3480a74c7dc5c427", + "namingEvidenceSha256": "4db535b27892debe8349a75a18850e3382ed2f6b9ee88f30f586f91179931c62", + "namingSemanticSha256": "4605465189e1d1dce7ff971ec755fbc41d7455fe19838dc50b31e88f94380e5e" + }, + "second": { + "operation": "multi-transform", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 44, + "edges": 100, + "vertices": 58, + "volume": 2750, + "area": 1360, + "bounds": [ + -11.0000001, + -1e-7, + -1e-7, + 21.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 769, + "selectedRecords": 32, + "ambiguousResults": 170, + "historySha256": "5b1bf3630c545edaa009d94bb2336c28a3c1c822dc294af75951884628975d0c", + "namingEvidenceSha256": "284a2ccfe1d9d595c24df008bc1f10e448385dbb1b8bf57d92fe91a969e8f508", + "namingSemanticSha256": "68c85aade66f84ced8f7a5781462c2196594b1f7ba3befa719c6f350260dbba8" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "multiTranslationX", + "trajectory": [ + 8, + 9, + 8 + ], + "beforeValue": 8, + "editedValue": 9, + "restoredValue": 8, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "multi-transform", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 48, + "edges": 110, + "vertices": 64, + "volume": 2950, + "area": 1440, + "bounds": [ + -12.0000001, + -1e-7, + -1e-7, + 22.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 793, + "selectedRecords": 32, + "ambiguousResults": 186, + "historySha256": "f091e70b07239a459502e8fc3225a1f1be8a27318374f909d6cdd02888530b91", + "namingEvidenceSha256": "4377adbfc318de45711bfb39d9c98c62851d9172cd733322173f3eee9c65a572", + "namingSemanticSha256": "b731ca378662d935a09913cb39327d829970a23bbedf4397bfff7045cab20d5d" + }, + "restoredEvidence": { + "operation": "multi-transform", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 44, + "edges": 100, + "vertices": 58, + "volume": 2750, + "area": 1360, + "bounds": [ + -11.0000001, + -1e-7, + -1e-7, + 21.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 769, + "selectedRecords": 32, + "ambiguousResults": 170, + "historySha256": "5b1bf3630c545edaa009d94bb2336c28a3c1c822dc294af75951884628975d0c", + "namingEvidenceSha256": "ba009c6d67941eaa546cb62030896258689a0e687ecf21cc5db657ff5b1b3f5f", + "namingSemanticSha256": "68c85aade66f84ced8f7a5781462c2196594b1f7ba3befa719c6f350260dbba8" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "fuse->multi-transform", + "phases": { + "initial": { + "namingEvidenceBytes": 94981, + "namingEvidenceSha256": "284a2ccfe1d9d595c24df008bc1f10e448385dbb1b8bf57d92fe91a969e8f508", + "pair": "fuse->multi-transform", + "shape": { + "area": 1360, + "bounds": [ + -11, + 0, + 0, + 21, + 10, + 10 + ], + "edges": 100, + "faces": 44, + "solids": 1, + "valid": true, + "vertices": 58, + "volume": 2750 + } + }, + "reopened": { + "namingEvidenceBytes": 94981, + "namingEvidenceSha256": "284a2ccfe1d9d595c24df008bc1f10e448385dbb1b8bf57d92fe91a969e8f508", + "pair": "fuse->multi-transform", + "shape": { + "area": 1360, + "bounds": [ + -11, + 0, + 0, + 21, + 10, + 10 + ], + "edges": 100, + "faces": 44, + "solids": 1, + "valid": true, + "vertices": 58, + "volume": 2750 + } + }, + "resaved": { + "namingEvidenceBytes": 94981, + "namingEvidenceSha256": "284a2ccfe1d9d595c24df008bc1f10e448385dbb1b8bf57d92fe91a969e8f508", + "pair": "fuse->multi-transform", + "shape": { + "area": 1360, + "bounds": [ + -11, + 0, + 0, + 21, + 10, + 10 + ], + "edges": 100, + "faces": 44, + "solids": 1, + "valid": true, + "vertices": 58, + "volume": 2750 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-fuse", + "pair": "cut->fuse", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "cca3d050392a30b8fbc8d9e0025784b261d3d9e7f8e839f91ae13d5767f0162e", + "namingSemanticSha256": "c57d159513285c40ffeec338310a828c8061d4b5b3b04a2e4816a25f949825b8" + }, + "second": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 17, + "edges": 41, + "vertices": 26, + "volume": 1011, + "area": 692, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 52, + "selectedRecords": 7, + "ambiguousResults": 16, + "historySha256": "932999f08b09fe429f42ac6ece9354fadfd527ffe69e784353c2f29cd7a35c34", + "namingEvidenceSha256": "529eff581a1e9aa7a52a5ccfc9b0e630d2608b6d632bd348c5956e02fae00833", + "namingSemanticSha256": "d2b7535aa85dc6c3f00fce727900dd2a66f52342ab61366186895ba717908fd8" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "toolOffsetX", + "trajectory": [ + 8, + 9, + 8 + ], + "beforeValue": 8, + "editedValue": 9, + "restoredValue": 8, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 17, + "edges": 41, + "vertices": 26, + "volume": 1036, + "area": 712, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 14.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 52, + "selectedRecords": 7, + "ambiguousResults": 16, + "historySha256": "932999f08b09fe429f42ac6ece9354fadfd527ffe69e784353c2f29cd7a35c34", + "namingEvidenceSha256": "84839ff042990bb9eb33cc930beb7e5a8a311c19c99ba75142fcfc2acd91c8fb", + "namingSemanticSha256": "d2b7535aa85dc6c3f00fce727900dd2a66f52342ab61366186895ba717908fd8" + }, + "restoredEvidence": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 17, + "edges": 41, + "vertices": 26, + "volume": 1011, + "area": 692, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 52, + "selectedRecords": 7, + "ambiguousResults": 16, + "historySha256": "932999f08b09fe429f42ac6ece9354fadfd527ffe69e784353c2f29cd7a35c34", + "namingEvidenceSha256": "eb971dd1d6e3ec8b4cfdf72f8b53ab1447738dcd04f2d2ddc4f87533a8b90a3e", + "namingSemanticSha256": "d2b7535aa85dc6c3f00fce727900dd2a66f52342ab61366186895ba717908fd8" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->fuse", + "phases": { + "initial": { + "namingEvidenceBytes": 8411, + "namingEvidenceSha256": "529eff581a1e9aa7a52a5ccfc9b0e630d2608b6d632bd348c5956e02fae00833", + "pair": "cut->fuse", + "shape": { + "area": 692, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 41, + "faces": 17, + "solids": 1, + "valid": true, + "vertices": 26, + "volume": 1011 + } + }, + "reopened": { + "namingEvidenceBytes": 8411, + "namingEvidenceSha256": "529eff581a1e9aa7a52a5ccfc9b0e630d2608b6d632bd348c5956e02fae00833", + "pair": "cut->fuse", + "shape": { + "area": 692, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 41, + "faces": 17, + "solids": 1, + "valid": true, + "vertices": 26, + "volume": 1011 + } + }, + "resaved": { + "namingEvidenceBytes": 8411, + "namingEvidenceSha256": "529eff581a1e9aa7a52a5ccfc9b0e630d2608b6d632bd348c5956e02fae00833", + "pair": "cut->fuse", + "shape": { + "area": 692, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 41, + "faces": 17, + "solids": 1, + "valid": true, + "vertices": 26, + "volume": 1011 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-cut", + "pair": "cut->cut", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "98e6a0a8f13b7a18eb12a7c1f9687ac592f2f30049c04251cb6429745b4fb47a", + "namingSemanticSha256": "817bd88f5ece0904224ff747e6fe5b40f13eb48f32fc1c510a0d55f9137d06b4" + }, + "second": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 33, + "vertices": 22, + "volume": 909, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 42, + "selectedRecords": 3, + "ambiguousResults": 9, + "historySha256": "a79fe37ed2c713b596e116e583044b978e8f142f0c77bc2054c8484530e137b8", + "namingEvidenceSha256": "2d3cab670940ccb070b5492669548ab81403e31e81658abc1297a7b32e3fba10", + "namingSemanticSha256": "080299d095f74c3206957bf8d8829bf0c61a05fd5cf087f6f96ccb312a01f4ef" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "toolSize", + "trajectory": [ + 3, + 4, + 3 + ], + "beforeValue": 3, + "editedValue": 4, + "restoredValue": 3, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 11, + "edges": 26, + "vertices": 17, + "volume": 872, + "area": 600, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 116, + "selectedRecords": 7, + "ambiguousResults": 15, + "historySha256": "45e63b956c39e58d3fce7e20c1d04a5ea77ebbd6c3a171d972e6939752924714", + "namingEvidenceSha256": "38ecbf50f32773796c5dfc9f9695e4dfe6f8ccff5a7d2cdd65e94aaeeff80f95", + "namingSemanticSha256": "0fca7e13172c779f637a0914e06cd07d0a29056cebf0477812a0272049f74ba6" + }, + "restoredEvidence": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 33, + "vertices": 22, + "volume": 909, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 42, + "selectedRecords": 3, + "ambiguousResults": 9, + "historySha256": "a79fe37ed2c713b596e116e583044b978e8f142f0c77bc2054c8484530e137b8", + "namingEvidenceSha256": "4a8a9216af61355c87f9b07f14997a56c810b6d380f4b28d2bd5dcb060bee28d", + "namingSemanticSha256": "080299d095f74c3206957bf8d8829bf0c61a05fd5cf087f6f96ccb312a01f4ef" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->cut", + "phases": { + "initial": { + "namingEvidenceBytes": 4517, + "namingEvidenceSha256": "2d3cab670940ccb070b5492669548ab81403e31e81658abc1297a7b32e3fba10", + "pair": "cut->cut", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 33, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 22, + "volume": 909 + } + }, + "reopened": { + "namingEvidenceBytes": 4517, + "namingEvidenceSha256": "2d3cab670940ccb070b5492669548ab81403e31e81658abc1297a7b32e3fba10", + "pair": "cut->cut", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 33, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 22, + "volume": 909 + } + }, + "resaved": { + "namingEvidenceBytes": 4517, + "namingEvidenceSha256": "2d3cab670940ccb070b5492669548ab81403e31e81658abc1297a7b32e3fba10", + "pair": "cut->cut", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 33, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 22, + "volume": 909 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-common", + "pair": "cut->common", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "292659a5884e2ca8a6e432721c5a8d5e618455a1ffeaaa2d8e81119a78b554f7", + "namingSemanticSha256": "f89ae7f6d1ccfb38bf9cb8b18869df8dd04a18efd91a3123e18f632349a34dfb" + }, + "second": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 9, + "edges": 21, + "vertices": 14, + "volume": 93, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 148, + "selectedRecords": 3, + "ambiguousResults": 14, + "historySha256": "52359afa03f719a679c31cd0bc0b8c387503f9a4955c1d76dd3373db3382aac9", + "namingEvidenceSha256": "6e9d7bbc479313154ddf2ea549fbaecd7ca9f29878950060b900725ea4b7d370", + "namingSemanticSha256": "8159243c9790aa0bcc5e6bebccecb370044e83ecede91966d70d54f4258926a2" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "toolOffsetX", + "trajectory": [ + 4, + 5, + 4 + ], + "beforeValue": 4, + "editedValue": 5, + "restoredValue": 4, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 9, + "edges": 21, + "vertices": 14, + "volume": 109, + "area": 150, + "bounds": [ + 4.9999999, + -1e-7, + -1e-7, + 10.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 159, + "selectedRecords": 3, + "ambiguousResults": 18, + "historySha256": "dae6fd5c1c30d4899034cf9e9d05056631d79be5f7f9231d44595b6718619321", + "namingEvidenceSha256": "051393c92a64d6394680dd2a6cfc4c878fd97f92dc31c2c70d0ce4af8638ee77", + "namingSemanticSha256": "611f12e4b31eb5b34ede93ac9f1a0f502f95db24fc897c7bc5ddf891c7f636c4" + }, + "restoredEvidence": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 9, + "edges": 21, + "vertices": 14, + "volume": 93, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 148, + "selectedRecords": 3, + "ambiguousResults": 14, + "historySha256": "52359afa03f719a679c31cd0bc0b8c387503f9a4955c1d76dd3373db3382aac9", + "namingEvidenceSha256": "bf3339b34fe7859841b2cdce9d942cad953e9606a5d0e23a8041671722038aca", + "namingSemanticSha256": "8159243c9790aa0bcc5e6bebccecb370044e83ecede91966d70d54f4258926a2" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->common", + "phases": { + "initial": { + "namingEvidenceBytes": 5804, + "namingEvidenceSha256": "6e9d7bbc479313154ddf2ea549fbaecd7ca9f29878950060b900725ea4b7d370", + "pair": "cut->common", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 21, + "faces": 9, + "solids": 1, + "valid": true, + "vertices": 14, + "volume": 93 + } + }, + "reopened": { + "namingEvidenceBytes": 5804, + "namingEvidenceSha256": "6e9d7bbc479313154ddf2ea549fbaecd7ca9f29878950060b900725ea4b7d370", + "pair": "cut->common", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 21, + "faces": 9, + "solids": 1, + "valid": true, + "vertices": 14, + "volume": 93 + } + }, + "resaved": { + "namingEvidenceBytes": 5804, + "namingEvidenceSha256": "6e9d7bbc479313154ddf2ea549fbaecd7ca9f29878950060b900725ea4b7d370", + "pair": "cut->common", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 21, + "faces": 9, + "solids": 1, + "valid": true, + "vertices": 14, + "volume": 93 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-pad", + "pair": "cut->pad", + "classification": "rejected", + "reasonCode": "native-builder-and-freecad-profile-reject-with-clean-resave", + "nativeDecision": "rejected", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "2d5043626a6947c9f52a69c88be249781983631ab9332da2a72ef361faa1e767", + "namingSemanticSha256": "4df8a36f884005c9d05aee6582fbe6cb2f67eec67c87a02cd75c5917e0238450" + }, + "rejection": { + "scope": "second-operation-only", + "authority": "occt-builder", + "parameter": "length", + "trajectory": [ + 5, + 7.5, + 5 + ], + "stable": true, + "attempts": [ + { + "operation": "pad", + "builder": "BRepPrimAPI_MakePrism", + "inputCount": 1, + "parameter": "length", + "parameterValue": 5, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + }, + { + "operation": "pad", + "builder": "BRepPrimAPI_MakePrism", + "inputCount": 1, + "parameter": "length", + "parameterValue": 7.5, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + }, + { + "operation": "pad", + "builder": "BRepPrimAPI_MakePrism", + "inputCount": 1, + "parameter": "length", + "parameterValue": 5, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + } + ], + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "documentStable": true, + "documentUnpolluted": true, + "fuseSolidUsedAsInput": true, + "nativeFeatureConstructed": true, + "nativeFeatureRejected": true, + "objectSetRestored": true, + "recomputeStatusCaptured": true, + "sourceShapeRestored": true + }, + "decision": "rejected", + "diagnostic": { + "exception": null, + "exceptionType": null, + "input": { + "name": "Part__Feature", + "subelements": [], + "typeId": "Part::Feature" + }, + "inputShape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "nativeTypeId": "PartDesign::Pad", + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + }, + { + "name": "Body", + "typeId": "PartDesign::Body" + }, + { + "name": "Origin", + "typeId": "App::Origin" + }, + { + "name": "X_Axis", + "typeId": "App::Line" + }, + { + "name": "Y_Axis", + "typeId": "App::Line" + }, + { + "name": "Z_Axis", + "typeId": "App::Line" + }, + { + "name": "XY_Plane", + "typeId": "App::Plane" + }, + { + "name": "XZ_Plane", + "typeId": "App::Plane" + }, + { + "name": "YZ_Plane", + "typeId": "App::Plane" + }, + { + "name": "Origin001", + "typeId": "App::Point" + }, + { + "name": "PairResult", + "typeId": "PartDesign::Pad" + } + ], + "parameter": { + "name": "length", + "value": 5 + }, + "recomputeResult": true, + "shapeNull": true, + "shapeValid": false, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "FeatureExtrusion: Length: Could not extrude the sketch!" + }, + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "nativeTypeId": "PartDesign::Pad", + "operation": "pad", + "pair": "cut->pad", + "phases": { + "initial": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + } + ] + }, + "reopened": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + } + ] + }, + "resaved": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + } + ] + } + }, + "rollback": { + "after": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "brepSha256": "00f069ce733b447d2bc5184e529ee9ccf4a8091bdad1a8d6c03c3cbbf2f90a8a", + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + } + }, + "before": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "brepSha256": "00f069ce733b447d2bc5184e529ee9ccf4a8091bdad1a8d6c03c3cbbf2f90a8a", + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + } + } + }, + "schemaVersion": 1, + "source": { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "brepSha256": "00f069ce733b447d2bc5184e529ee9ccf4a8091bdad1a8d6c03c3cbbf2f90a8a", + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + }, + "status": "pass" + } + } + }, + { + "taskId": "TSN-PAIR-cut-pocket", + "pair": "cut->pocket", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "687b0b1c3647e0396cc3226708a7e03018326013553bbe8141ffcc99746153d0", + "namingSemanticSha256": "550c1514ad9253b2152311cdc5777a6c35d585fcb1bd8679e00f5282f3c82d2f" + }, + "second": { + "operation": "pocket", + "builder": "BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 32, + "vertices": 21, + "volume": 906, + "area": 608, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 70, + "selectedRecords": 7, + "ambiguousResults": 12, + "historySha256": "b634a177fd6f984684cde4e6ba6fa5650bb0eff8ae954fcb40db1d94f20e0270", + "namingEvidenceSha256": "3a023b6c02c9bb05065c09b32dcca9d29db36b42882ee835bee1dcc238f86801", + "namingSemanticSha256": "e85fc37374b1cb4248b868b9634cfe16cd26f6efbf31c3d4621fdffd23116640" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "length", + "trajectory": [ + 5, + 4, + 5 + ], + "beforeValue": 5, + "editedValue": 4, + "restoredValue": 5, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "pocket", + "builder": "BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 12, + "edges": 29, + "vertices": 19, + "volume": 912, + "area": 608, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 84, + "selectedRecords": 6, + "ambiguousResults": 12, + "historySha256": "efddf2a86aa431a8e43154c45d0fe32ab41c2410a6300e62f03bfbadb5f7a142", + "namingEvidenceSha256": "103eb37aa278f79ece86c9688b4d6e3c532f14168ed65bf4e8b09b06d848a9bb", + "namingSemanticSha256": "240e5801a98106b2705ca70875ca6cf367ee8f0a48e0000c453d8a0f075ba190" + }, + "restoredEvidence": { + "operation": "pocket", + "builder": "BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 13, + "edges": 32, + "vertices": 21, + "volume": 906, + "area": 608, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 70, + "selectedRecords": 7, + "ambiguousResults": 12, + "historySha256": "b634a177fd6f984684cde4e6ba6fa5650bb0eff8ae954fcb40db1d94f20e0270", + "namingEvidenceSha256": "ede07072d6f25619d63c0be0fd32746c2a091a27bee7cd64a3db3e109104c9b3", + "namingSemanticSha256": "e85fc37374b1cb4248b868b9634cfe16cd26f6efbf31c3d4621fdffd23116640" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->pocket", + "phases": { + "initial": { + "namingEvidenceBytes": 6793, + "namingEvidenceSha256": "3a023b6c02c9bb05065c09b32dcca9d29db36b42882ee835bee1dcc238f86801", + "pair": "cut->pocket", + "shape": { + "area": 608, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 32, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 21, + "volume": 906 + } + }, + "reopened": { + "namingEvidenceBytes": 6793, + "namingEvidenceSha256": "3a023b6c02c9bb05065c09b32dcca9d29db36b42882ee835bee1dcc238f86801", + "pair": "cut->pocket", + "shape": { + "area": 608, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 32, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 21, + "volume": 906 + } + }, + "resaved": { + "namingEvidenceBytes": 6793, + "namingEvidenceSha256": "3a023b6c02c9bb05065c09b32dcca9d29db36b42882ee835bee1dcc238f86801", + "pair": "cut->pocket", + "shape": { + "area": 608, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 32, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 21, + "volume": 906 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-loft", + "pair": "cut->loft", + "classification": "rejected", + "reasonCode": "freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave", + "nativeDecision": "rejected", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "e12a035916cb7e9c96121a5feb7ada25b10028aa8949809eae1fd3744b1cdf1b", + "namingSemanticSha256": "dfedb830d08477c64a2369ac14b209398ae9efcdb45fe6d04b022d98b56499ee" + }, + "rejection": { + "scope": "second-operation-only", + "authority": "freecad-document", + "parameter": "ruled", + "trajectory": [ + false, + true, + false + ], + "kernelAttempts": [ + { + "operation": "loft", + "builder": "BRepOffsetAPI_ThruSections", + "inputCount": 2, + "parameter": "ruled", + "parameterValue": false, + "runtime": "occt-native", + "outcome": "accepted", + "resultProduced": true, + "shapeProduced": true, + "validShapeProduced": true, + "historyProduced": true, + "historyProvider": "occt-native", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 91.6666667, + "area": 293.5473231, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 2.0000001, + 10.0000001, + 15.0000001 + ] + }, + "historyRecords": 24, + "historySha256": "9f0ec53f6c7b6a6704cd926e6d16c24c51625ef328c2d89275f86d0ccda2ace7", + "authority": "kernel-superset-only" + }, + { + "operation": "loft", + "builder": "BRepOffsetAPI_ThruSections", + "inputCount": 2, + "parameter": "ruled", + "parameterValue": true, + "runtime": "occt-native", + "outcome": "accepted", + "resultProduced": true, + "shapeProduced": true, + "validShapeProduced": true, + "historyProduced": true, + "historyProvider": "occt-native", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 91.6666667, + "area": 293.5473231, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 2.0000001, + 10.0000001, + 15.0000001 + ] + }, + "historyRecords": 24, + "historySha256": "9f0ec53f6c7b6a6704cd926e6d16c24c51625ef328c2d89275f86d0ccda2ace7", + "authority": "kernel-superset-only" + }, + { + "operation": "loft", + "builder": "BRepOffsetAPI_ThruSections", + "inputCount": 2, + "parameter": "ruled", + "parameterValue": false, + "runtime": "occt-native", + "outcome": "accepted", + "resultProduced": true, + "shapeProduced": true, + "validShapeProduced": true, + "historyProduced": true, + "historyProvider": "occt-native", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 91.6666667, + "area": 293.5473231, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 2.0000001, + 10.0000001, + 15.0000001 + ] + }, + "historyRecords": 24, + "historySha256": "9f0ec53f6c7b6a6704cd926e6d16c24c51625ef328c2d89275f86d0ccda2ace7", + "authority": "kernel-superset-only" + } + ], + "kernelRestoredExactly": true, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "documentStable": true, + "documentUnpolluted": true, + "fuseSolidUsedAsInput": true, + "nativeFeatureConstructed": true, + "nativeFeatureRejected": true, + "objectSetRestored": true, + "recomputeStatusCaptured": true, + "sourceShapeRestored": true + }, + "decision": "rejected", + "diagnostic": { + "exception": null, + "exceptionType": null, + "input": { + "sections": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + }, + { + "name": "Section", + "typeId": "Part::Feature" + } + ] + }, + "inputShape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "nativeTypeId": "Part::Loft", + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + }, + { + "name": "Section", + "typeId": "Part::Feature" + }, + { + "name": "PairResult", + "typeId": "Part::Loft" + } + ], + "parameter": { + "name": "ruled", + "value": false + }, + "recomputeResult": true, + "shapeNull": true, + "shapeValid": false, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "Profile shape is not a single vertex, edge, wire nor face." + }, + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "nativeTypeId": "Part::Loft", + "operation": "loft", + "pair": "cut->loft", + "phases": { + "initial": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + } + ] + }, + "reopened": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + } + ] + }, + "resaved": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + } + ] + } + }, + "rollback": { + "after": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "brepSha256": "00f069ce733b447d2bc5184e529ee9ccf4a8091bdad1a8d6c03c3cbbf2f90a8a", + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + } + }, + "before": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "brepSha256": "00f069ce733b447d2bc5184e529ee9ccf4a8091bdad1a8d6c03c3cbbf2f90a8a", + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + } + } + }, + "schemaVersion": 1, + "source": { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "brepSha256": "00f069ce733b447d2bc5184e529ee9ccf4a8091bdad1a8d6c03c3cbbf2f90a8a", + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + }, + "status": "pass" + } + } + }, + { + "taskId": "TSN-PAIR-cut-pipe", + "pair": "cut->pipe", + "classification": "rejected", + "reasonCode": "freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave", + "nativeDecision": "rejected", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "d09c8d85e8a4037c764cffbbb40027f7c8db8fc1f3d17ad1b7edcf04b46271dc", + "namingSemanticSha256": "35aed6bcdbfec950e52404c6ab9ecf26ce97be3efcdf117295dab32cf8e7eb81" + }, + "rejection": { + "scope": "second-operation-only", + "authority": "freecad-document", + "parameter": "spineLength", + "trajectory": [ + 15, + 12, + 15 + ], + "kernelAttempts": [ + { + "operation": "pipe", + "builder": "BRepOffsetAPI_MakePipe", + "inputCount": 2, + "parameter": "spineLength", + "parameterValue": 15, + "runtime": "occt-native", + "outcome": "invalid-result", + "resultProduced": true, + "shapeProduced": true, + "validShapeProduced": false, + "historyProduced": true, + "historyProvider": "occt-native", + "summary": { + "isValid": false, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 0, + "area": 500, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 1e-7, + 10.0000001, + 25.0000001 + ] + }, + "historyRecords": 28, + "historySha256": "0b29085cd086854553f7e799c787527dddb9e1e7e798579dbb78cb09bb5d9d7c", + "authority": "kernel-invalid-result" + }, + { + "operation": "pipe", + "builder": "BRepOffsetAPI_MakePipe", + "inputCount": 2, + "parameter": "spineLength", + "parameterValue": 12, + "runtime": "occt-native", + "outcome": "invalid-result", + "resultProduced": true, + "shapeProduced": true, + "validShapeProduced": false, + "historyProduced": true, + "historyProvider": "occt-native", + "summary": { + "isValid": false, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 0, + "area": 440, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 1e-7, + 10.0000001, + 22.0000001 + ] + }, + "historyRecords": 28, + "historySha256": "0b29085cd086854553f7e799c787527dddb9e1e7e798579dbb78cb09bb5d9d7c", + "authority": "kernel-invalid-result" + }, + { + "operation": "pipe", + "builder": "BRepOffsetAPI_MakePipe", + "inputCount": 2, + "parameter": "spineLength", + "parameterValue": 15, + "runtime": "occt-native", + "outcome": "invalid-result", + "resultProduced": true, + "shapeProduced": true, + "validShapeProduced": false, + "historyProduced": true, + "historyProvider": "occt-native", + "summary": { + "isValid": false, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 0, + "area": 500, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 1e-7, + 10.0000001, + 25.0000001 + ] + }, + "historyRecords": 28, + "historySha256": "0b29085cd086854553f7e799c787527dddb9e1e7e798579dbb78cb09bb5d9d7c", + "authority": "kernel-invalid-result" + } + ], + "kernelRestoredExactly": true, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "documentStable": true, + "documentUnpolluted": true, + "fuseSolidUsedAsInput": true, + "nativeFeatureConstructed": true, + "nativeFeatureRejected": true, + "objectSetRestored": true, + "recomputeStatusCaptured": true, + "sourceShapeRestored": true + }, + "decision": "rejected", + "diagnostic": { + "exception": null, + "exceptionType": null, + "input": { + "sections": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "spine": { + "name": "Spine", + "subelements": [], + "typeId": "Part::Feature" + } + }, + "inputShape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "nativeTypeId": "Part::Sweep", + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + }, + { + "name": "Spine", + "typeId": "Part::Feature" + }, + { + "name": "PairResult", + "typeId": "Part::Sweep" + } + ], + "parameter": { + "name": "spineLength", + "value": 15 + }, + "recomputeResult": true, + "shapeNull": true, + "shapeValid": false, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "A fatal error occurred when making the sweep" + }, + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "nativeTypeId": "Part::Sweep", + "operation": "pipe", + "pair": "cut->pipe", + "phases": { + "initial": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + } + ] + }, + "reopened": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + } + ] + }, + "resaved": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + } + ] + } + }, + "rollback": { + "after": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "brepSha256": "00f069ce733b447d2bc5184e529ee9ccf4a8091bdad1a8d6c03c3cbbf2f90a8a", + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + } + }, + "before": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "brepSha256": "00f069ce733b447d2bc5184e529ee9ccf4a8091bdad1a8d6c03c3cbbf2f90a8a", + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + } + } + }, + "schemaVersion": 1, + "source": { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "brepSha256": "00f069ce733b447d2bc5184e529ee9ccf4a8091bdad1a8d6c03c3cbbf2f90a8a", + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + }, + "status": "pass" + } + } + }, + { + "taskId": "TSN-PAIR-cut-revolution", + "pair": "cut->revolution", + "classification": "rejected", + "reasonCode": "native-builder-and-freecad-profile-reject-with-clean-resave", + "nativeDecision": "rejected", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "5f319d17a550081198de239685b295cdebb31ce6d089d63505236d6a20be1798", + "namingSemanticSha256": "dd74a49910db9993534d82db9c882016ccc43e2a290748dd077aa27e755e81f8" + }, + "rejection": { + "scope": "second-operation-only", + "authority": "occt-builder", + "parameter": "angle", + "trajectory": [ + 360, + 270, + 360 + ], + "stable": true, + "attempts": [ + { + "operation": "revolution", + "builder": "BRepPrimAPI_MakeRevol", + "inputCount": 1, + "parameter": "angle", + "parameterValue": 360, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + }, + { + "operation": "revolution", + "builder": "BRepPrimAPI_MakeRevol", + "inputCount": 1, + "parameter": "angle", + "parameterValue": 270, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + }, + { + "operation": "revolution", + "builder": "BRepPrimAPI_MakeRevol", + "inputCount": 1, + "parameter": "angle", + "parameterValue": 360, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + } + ], + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "documentStable": true, + "documentUnpolluted": true, + "fuseSolidUsedAsInput": true, + "nativeFeatureConstructed": true, + "nativeFeatureRejected": true, + "objectSetRestored": true, + "recomputeStatusCaptured": true, + "sourceShapeRestored": true + }, + "decision": "rejected", + "diagnostic": { + "exception": null, + "exceptionType": null, + "input": { + "name": "Part__Feature", + "subelements": [], + "typeId": "Part::Feature" + }, + "inputShape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "nativeTypeId": "Part::Revolution", + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + }, + { + "name": "PairResult", + "typeId": "Part::Revolution" + } + ], + "parameter": { + "name": "angle", + "value": 360 + }, + "recomputeResult": true, + "shapeNull": true, + "shapeValid": false, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "Solids are not Processed" + }, + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "nativeTypeId": "Part::Revolution", + "operation": "revolution", + "pair": "cut->revolution", + "phases": { + "initial": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + } + ] + }, + "reopened": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + } + ] + }, + "resaved": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + } + ] + } + }, + "rollback": { + "after": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "brepSha256": "00f069ce733b447d2bc5184e529ee9ccf4a8091bdad1a8d6c03c3cbbf2f90a8a", + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + } + }, + "before": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "brepSha256": "00f069ce733b447d2bc5184e529ee9ccf4a8091bdad1a8d6c03c3cbbf2f90a8a", + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + } + } + }, + "schemaVersion": 1, + "source": { + "name": "Part__Feature", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "brepSha256": "00f069ce733b447d2bc5184e529ee9ccf4a8091bdad1a8d6c03c3cbbf2f90a8a", + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 936 + }, + "typeId": "Part::Feature" + }, + "status": "pass" + } + } + }, + { + "taskId": "TSN-PAIR-cut-groove", + "pair": "cut->groove", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "d46b20ea63af8cdca4905c7f33879bdb342ed78338ca49e70812c39b4df29a6b", + "namingSemanticSha256": "82b66076e2925e077194341b3ea78091e51e60ed7da30cdb8182a2587f7706cd" + }, + "second": { + "operation": "groove", + "builder": "BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 36, + "vertices": 24, + "volume": 931.287611, + "area": 638.5663706, + "bounds": [ + -2e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 18, + "selectedRecords": 6, + "ambiguousResults": 6, + "historySha256": "e0e8541da0baff44462b0eea6973ad921aef72b76e94d3e1f1be1d04c441f43a", + "namingEvidenceSha256": "c1fdb695a255d641e28e2f997d04c6f53ce1d8a29ec59bbd40c4aeba21fff389", + "namingSemanticSha256": "acfc133e3d9d59c0bd1bff63716f7df37c42de92b930bb40528c56ba48dceda8" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "angle", + "trajectory": [ + 360, + 180, + 360 + ], + "beforeValue": 360, + "editedValue": 180, + "restoredValue": 360, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "groove", + "builder": "BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 11, + "edges": 28, + "vertices": 20, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 56, + "selectedRecords": 1, + "ambiguousResults": 5, + "historySha256": "bb0d2bbff1a909d06dca894cee77dff09d31e39e01aa645aca9c965f12f2dff7", + "namingEvidenceSha256": "91012c359832459a3eafc570d48e3f353482a669f9f91e6c6641ce40cb257a20", + "namingSemanticSha256": "4f14c3b64b68e589720eaa7baba730e26ae981c74efa295eb30962543250488f" + }, + "restoredEvidence": { + "operation": "groove", + "builder": "BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 36, + "vertices": 24, + "volume": 931.287611, + "area": 638.5663706, + "bounds": [ + -2e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 18, + "selectedRecords": 6, + "ambiguousResults": 6, + "historySha256": "e0e8541da0baff44462b0eea6973ad921aef72b76e94d3e1f1be1d04c441f43a", + "namingEvidenceSha256": "c1fdb695a255d641e28e2f997d04c6f53ce1d8a29ec59bbd40c4aeba21fff389", + "namingSemanticSha256": "acfc133e3d9d59c0bd1bff63716f7df37c42de92b930bb40528c56ba48dceda8" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->groove", + "phases": { + "initial": { + "namingEvidenceBytes": 4744, + "namingEvidenceSha256": "c1fdb695a255d641e28e2f997d04c6f53ce1d8a29ec59bbd40c4aeba21fff389", + "pair": "cut->groove", + "shape": { + "area": 638.5663706, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 36, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 24, + "volume": 931.287611 + } + }, + "reopened": { + "namingEvidenceBytes": 4744, + "namingEvidenceSha256": "c1fdb695a255d641e28e2f997d04c6f53ce1d8a29ec59bbd40c4aeba21fff389", + "pair": "cut->groove", + "shape": { + "area": 638.5663706, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 36, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 24, + "volume": 931.287611 + } + }, + "resaved": { + "namingEvidenceBytes": 4744, + "namingEvidenceSha256": "c1fdb695a255d641e28e2f997d04c6f53ce1d8a29ec59bbd40c4aeba21fff389", + "pair": "cut->groove", + "shape": { + "area": 638.5663706, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 36, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 24, + "volume": 931.287611 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-fillet", + "pair": "cut->fillet", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "5840a86261fb03e2a2b8233dd9d3ca1215f26aeb61fbf73ed0e89f18528f8f8c", + "namingSemanticSha256": "fc6b79bf5e36eea209c778d6ffbbb94e1a902292c0ba6ccd508970f2ff5693e4" + }, + "second": { + "operation": "fillet", + "builder": "BRepFilletAPI_MakeFillet", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 50, + "edges": 112, + "vertices": 52, + "volume": 931.9696595, + "area": 604.5855225, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 298, + "selectedRecords": 10, + "ambiguousResults": 40, + "historySha256": "083200eaa4b34b3869f284fcf1a0c847fd354cdb0c0cf7d7c58acbc903ef7646", + "namingEvidenceSha256": "47edaaa3284f2c1330d79741443dc817e9f13ad1397c06e890e4aaaefbebc796", + "namingSemanticSha256": "afe65eb8ca732f1cd14d2820fcdd8760f983e47b3bdf5b2285ac4865be650da3" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "radius", + "trajectory": [ + 0.4, + 0.6, + 0.4 + ], + "beforeValue": 0.4, + "editedValue": 0.6, + "restoredValue": 0.4, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "fillet", + "builder": "BRepFilletAPI_MakeFillet", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 50, + "edges": 112, + "vertices": 52, + "volume": 927.0330004, + "area": 590.919202, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 298, + "selectedRecords": 10, + "ambiguousResults": 40, + "historySha256": "083200eaa4b34b3869f284fcf1a0c847fd354cdb0c0cf7d7c58acbc903ef7646", + "namingEvidenceSha256": "4a2de0b650fdfe86c7de6b6984327502c17e4cee7c70c893a405e813ecb74b96", + "namingSemanticSha256": "afe65eb8ca732f1cd14d2820fcdd8760f983e47b3bdf5b2285ac4865be650da3" + }, + "restoredEvidence": { + "operation": "fillet", + "builder": "BRepFilletAPI_MakeFillet", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 50, + "edges": 112, + "vertices": 52, + "volume": 931.9696595, + "area": 604.5855225, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 298, + "selectedRecords": 10, + "ambiguousResults": 40, + "historySha256": "083200eaa4b34b3869f284fcf1a0c847fd354cdb0c0cf7d7c58acbc903ef7646", + "namingEvidenceSha256": "977206a893e4ddaf478c8c518bb710b5378403e5f5397325ef4bc3044295f44c", + "namingSemanticSha256": "afe65eb8ca732f1cd14d2820fcdd8760f983e47b3bdf5b2285ac4865be650da3" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->fillet", + "phases": { + "initial": { + "namingEvidenceBytes": 20492, + "namingEvidenceSha256": "47edaaa3284f2c1330d79741443dc817e9f13ad1397c06e890e4aaaefbebc796", + "pair": "cut->fillet", + "shape": { + "area": 604.5855225, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 112, + "faces": 50, + "solids": 1, + "valid": true, + "vertices": 52, + "volume": 931.9696595 + } + }, + "reopened": { + "namingEvidenceBytes": 20492, + "namingEvidenceSha256": "47edaaa3284f2c1330d79741443dc817e9f13ad1397c06e890e4aaaefbebc796", + "pair": "cut->fillet", + "shape": { + "area": 604.5855225, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 112, + "faces": 50, + "solids": 1, + "valid": true, + "vertices": 52, + "volume": 931.9696595 + } + }, + "resaved": { + "namingEvidenceBytes": 20492, + "namingEvidenceSha256": "47edaaa3284f2c1330d79741443dc817e9f13ad1397c06e890e4aaaefbebc796", + "pair": "cut->fillet", + "shape": { + "area": 604.5855225, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 112, + "faces": 50, + "solids": 1, + "valid": true, + "vertices": 52, + "volume": 931.9696595 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-chamfer", + "pair": "cut->chamfer", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "59904b4e6b5b807c4b0a6599d35abb15d14a25f1b708492511c3d2a382760f92", + "namingSemanticSha256": "c22ceb4e25919ac45e6e2681c4306830e9e12e8b007eae6a00bf6a51835e98b8" + }, + "second": { + "operation": "chamfer", + "builder": "BRepFilletAPI_MakeChamfer", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 50, + "edges": 100, + "vertices": 52, + "volume": 926.8266667, + "area": 594.6540454, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 298, + "selectedRecords": 10, + "ambiguousResults": 40, + "historySha256": "083200eaa4b34b3869f284fcf1a0c847fd354cdb0c0cf7d7c58acbc903ef7646", + "namingEvidenceSha256": "759aa0b0fdfe3ba04af339d20b8c4a584a70a9a48f835e94aa489c3bbfbfb2b1", + "namingSemanticSha256": "be977557cd79b0000e855929b6f21de4aa9b99736e467fbe9979f0e63042d2f7" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "distance", + "trajectory": [ + 0.4, + 0.6, + 0.4 + ], + "beforeValue": 0.4, + "editedValue": 0.6, + "restoredValue": 0.4, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "chamfer", + "builder": "BRepFilletAPI_MakeChamfer", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 50, + "edges": 100, + "vertices": 52, + "volume": 915.84, + "area": 576.0893511, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 298, + "selectedRecords": 10, + "ambiguousResults": 40, + "historySha256": "083200eaa4b34b3869f284fcf1a0c847fd354cdb0c0cf7d7c58acbc903ef7646", + "namingEvidenceSha256": "c811ece6a8f9f92d51d304c47bcf05139dc8635010b75c16b285d4cf737bf0c7", + "namingSemanticSha256": "be977557cd79b0000e855929b6f21de4aa9b99736e467fbe9979f0e63042d2f7" + }, + "restoredEvidence": { + "operation": "chamfer", + "builder": "BRepFilletAPI_MakeChamfer", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 50, + "edges": 100, + "vertices": 52, + "volume": 926.8266667, + "area": 594.6540454, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 298, + "selectedRecords": 10, + "ambiguousResults": 40, + "historySha256": "083200eaa4b34b3869f284fcf1a0c847fd354cdb0c0cf7d7c58acbc903ef7646", + "namingEvidenceSha256": "340ab981bf0a465eb7ba54698213125b751c1a4bd4ac6bbad3aa9b4be0977d8c", + "namingSemanticSha256": "be977557cd79b0000e855929b6f21de4aa9b99736e467fbe9979f0e63042d2f7" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->chamfer", + "phases": { + "initial": { + "namingEvidenceBytes": 20667, + "namingEvidenceSha256": "759aa0b0fdfe3ba04af339d20b8c4a584a70a9a48f835e94aa489c3bbfbfb2b1", + "pair": "cut->chamfer", + "shape": { + "area": 594.6540454, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 100, + "faces": 50, + "solids": 1, + "valid": true, + "vertices": 52, + "volume": 926.8266667 + } + }, + "reopened": { + "namingEvidenceBytes": 20667, + "namingEvidenceSha256": "759aa0b0fdfe3ba04af339d20b8c4a584a70a9a48f835e94aa489c3bbfbfb2b1", + "pair": "cut->chamfer", + "shape": { + "area": 594.6540454, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 100, + "faces": 50, + "solids": 1, + "valid": true, + "vertices": 52, + "volume": 926.8266667 + } + }, + "resaved": { + "namingEvidenceBytes": 20667, + "namingEvidenceSha256": "759aa0b0fdfe3ba04af339d20b8c4a584a70a9a48f835e94aa489c3bbfbfb2b1", + "pair": "cut->chamfer", + "shape": { + "area": 594.6540454, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 100, + "faces": 50, + "solids": 1, + "valid": true, + "vertices": 52, + "volume": 926.8266667 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-hole", + "pair": "cut->hole", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "47d0c6b8103fa906587cc9a62337e4cefcc5073f0d6ac9b62e826056dee65fd2", + "namingSemanticSha256": "a1adb920d3d16519fa2a7d60c39ba1f220668f6c286231d388a2a2d6171aa58e" + }, + "second": { + "operation": "hole", + "builder": "BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 12, + "edges": 31, + "vertices": 20, + "volume": 904.5840735, + "area": 688.5486678, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 34, + "selectedRecords": 5, + "ambiguousResults": 4, + "historySha256": "1d603c0b6c8174a38dd4717eb0d79199a789383b8efa322f0d4f39e64a6a0bf9", + "namingEvidenceSha256": "be67e27129e49f18aa9096a2e71a6932cd02bb2275f1a328e9584fae7815948f", + "namingSemanticSha256": "dda9cadb0cb751c2321b36d053cb1937c446976d90368450e78247626ced89f0" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "radius", + "trajectory": [ + 1, + 1.5, + 1 + ], + "beforeValue": 1, + "editedValue": 1.5, + "restoredValue": 1, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "hole", + "builder": "BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 11, + "edges": 30, + "vertices": 20, + "volume": 868.3827488, + "area": 693.7415628, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 48, + "selectedRecords": 5, + "ambiguousResults": 4, + "historySha256": "87134d83a7ba22221e2597a00319af19081daded72dd3083ea5c30822eb1f5bc", + "namingEvidenceSha256": "424d6b94a8a2cd0c57f4e05d5a0c84c5a459f73634f94babb22008d36642be68", + "namingSemanticSha256": "a8b9030b5c89a70f20bbf1874268e4674004521d2e5bd71c4a048e498c1cc8e2" + }, + "restoredEvidence": { + "operation": "hole", + "builder": "BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 12, + "edges": 31, + "vertices": 20, + "volume": 904.5840735, + "area": 688.5486678, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 34, + "selectedRecords": 5, + "ambiguousResults": 4, + "historySha256": "1d603c0b6c8174a38dd4717eb0d79199a789383b8efa322f0d4f39e64a6a0bf9", + "namingEvidenceSha256": "b49ad721d2bfa4a317401161ea51fb1fa009fafa919c9c39ac27c4b5b9c54c6f", + "namingSemanticSha256": "dda9cadb0cb751c2321b36d053cb1937c446976d90368450e78247626ced89f0" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->hole", + "phases": { + "initial": { + "namingEvidenceBytes": 3835, + "namingEvidenceSha256": "be67e27129e49f18aa9096a2e71a6932cd02bb2275f1a328e9584fae7815948f", + "pair": "cut->hole", + "shape": { + "area": 688.5486678, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 31, + "faces": 12, + "solids": 1, + "valid": true, + "vertices": 20, + "volume": 904.5840735 + } + }, + "reopened": { + "namingEvidenceBytes": 3835, + "namingEvidenceSha256": "be67e27129e49f18aa9096a2e71a6932cd02bb2275f1a328e9584fae7815948f", + "pair": "cut->hole", + "shape": { + "area": 688.5486678, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 31, + "faces": 12, + "solids": 1, + "valid": true, + "vertices": 20, + "volume": 904.5840735 + } + }, + "resaved": { + "namingEvidenceBytes": 3835, + "namingEvidenceSha256": "be67e27129e49f18aa9096a2e71a6932cd02bb2275f1a328e9584fae7815948f", + "pair": "cut->hole", + "shape": { + "area": 688.5486678, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 31, + "faces": 12, + "solids": 1, + "valid": true, + "vertices": 20, + "volume": 904.5840735 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-draft", + "pair": "cut->draft", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "269d057e0eb24265d8fea004a21c1e757033c07836c9a9c491bce34ffff32024", + "namingSemanticSha256": "5bae651c64b248b7dda976e5af9198f81cb8485513a8173c4eb786b1a15a2b10" + }, + "second": { + "operation": "draft", + "builder": "BRepOffsetAPI_DraftAngle", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "native-evidence", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 892.2556682, + "area": 614.884251, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 5, + "selectedRecords": 5, + "ambiguousResults": 0, + "historySha256": "382606c9d5b8b29b560437d914a6e3b33f1d1a3073cd9c0c3fcb59edc8adaa14", + "namingEvidenceSha256": "f444caad3f503b7e6b09ccba4ae71620fe1a242787691025a02c52349d5b2e8a", + "namingSemanticSha256": "9051293e9338c3c07394e762c427bdc308d2c1f6a678e5dee1059cc428e55f9b" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "angle", + "trajectory": [ + 5, + 8, + 5 + ], + "beforeValue": 5, + "editedValue": 8, + "restoredValue": 5, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "draft", + "builder": "BRepOffsetAPI_DraftAngle", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "native-evidence", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 865.7295826, + "area": 604.8745903, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 5, + "selectedRecords": 5, + "ambiguousResults": 0, + "historySha256": "382606c9d5b8b29b560437d914a6e3b33f1d1a3073cd9c0c3fcb59edc8adaa14", + "namingEvidenceSha256": "b3c36f3e022e7b6622fbf39a37284165240709111d61d8ae1517dd87cdee75d9", + "namingSemanticSha256": "9051293e9338c3c07394e762c427bdc308d2c1f6a678e5dee1059cc428e55f9b" + }, + "restoredEvidence": { + "operation": "draft", + "builder": "BRepOffsetAPI_DraftAngle", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "native-evidence", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 892.2556682, + "area": 614.884251, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 5, + "selectedRecords": 5, + "ambiguousResults": 0, + "historySha256": "382606c9d5b8b29b560437d914a6e3b33f1d1a3073cd9c0c3fcb59edc8adaa14", + "namingEvidenceSha256": "76e9f507eb3c6690097adb8efe9de2ca526590c4ee5d7b3b04cf10e47db377c2", + "namingSemanticSha256": "9051293e9338c3c07394e762c427bdc308d2c1f6a678e5dee1059cc428e55f9b" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->draft", + "phases": { + "initial": { + "namingEvidenceBytes": 2500, + "namingEvidenceSha256": "f444caad3f503b7e6b09ccba4ae71620fe1a242787691025a02c52349d5b2e8a", + "pair": "cut->draft", + "shape": { + "area": 614.884251, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 892.2556682 + } + }, + "reopened": { + "namingEvidenceBytes": 2500, + "namingEvidenceSha256": "f444caad3f503b7e6b09ccba4ae71620fe1a242787691025a02c52349d5b2e8a", + "pair": "cut->draft", + "shape": { + "area": 614.884251, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 892.2556682 + } + }, + "resaved": { + "namingEvidenceBytes": 2500, + "namingEvidenceSha256": "f444caad3f503b7e6b09ccba4ae71620fe1a242787691025a02c52349d5b2e8a", + "pair": "cut->draft", + "shape": { + "area": 614.884251, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 892.2556682 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-thickness", + "pair": "cut->thickness", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 500, + "area": 400, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 5.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 98, + "selectedRecords": 4, + "ambiguousResults": 8, + "historySha256": "6268cfab209985176050e004c63bcad53183c965cc4cd4e5d893f06c57b8ddff", + "namingEvidenceSha256": "286e377f91a2c1ff934344aca4233243b23e8e380ff55d6b2fe61835d91faa79", + "namingSemanticSha256": "3b5e48758ebed8354c1b42b1864de3bdbc0a55997466b412a186007e29b8044c" + }, + "second": { + "operation": "thickness", + "builder": "BRepOffsetAPI_MakeThickSolid", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 11, + "edges": 24, + "vertices": 16, + "volume": 129.056, + "area": 657.28, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 5.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 38, + "selectedRecords": 6, + "ambiguousResults": 8, + "historySha256": "c5842e0aea2aae1bab3b1fb33a9891a3c7fb3822d1cb60265a27fc257c8b516a", + "namingEvidenceSha256": "437a57109d889a9874c20d4da826cb3382e64cb6ac8bc4a0fd3935437f8bf9d8", + "namingSemanticSha256": "c2a4fb3580d95e35eade999e7ee904858ba00eace33041c1fd977cbec04f7436" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "offset", + "trajectory": [ + -0.4, + -0.6, + -0.4 + ], + "beforeValue": -0.4, + "editedValue": -0.6, + "restoredValue": -0.4, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "thickness", + "builder": "BRepOffsetAPI_MakeThickSolid", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 11, + "edges": 24, + "vertices": 16, + "volume": 185.664, + "area": 636.88, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 5.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 38, + "selectedRecords": 6, + "ambiguousResults": 8, + "historySha256": "c5842e0aea2aae1bab3b1fb33a9891a3c7fb3822d1cb60265a27fc257c8b516a", + "namingEvidenceSha256": "f149d7c4294cd961678a6d988b26a405ea2029e24f56f3d4f4bf181b1fe60af3", + "namingSemanticSha256": "c2a4fb3580d95e35eade999e7ee904858ba00eace33041c1fd977cbec04f7436" + }, + "restoredEvidence": { + "operation": "thickness", + "builder": "BRepOffsetAPI_MakeThickSolid", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 11, + "edges": 24, + "vertices": 16, + "volume": 129.056, + "area": 657.28, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 5.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 38, + "selectedRecords": 6, + "ambiguousResults": 8, + "historySha256": "c5842e0aea2aae1bab3b1fb33a9891a3c7fb3822d1cb60265a27fc257c8b516a", + "namingEvidenceSha256": "dedc92db31b301b2c690c9a5f53c8f80eeaed567301c58b0600ed54ad5668c53", + "namingSemanticSha256": "c2a4fb3580d95e35eade999e7ee904858ba00eace33041c1fd977cbec04f7436" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->thickness", + "phases": { + "initial": { + "namingEvidenceBytes": 6657, + "namingEvidenceSha256": "437a57109d889a9874c20d4da826cb3382e64cb6ac8bc4a0fd3935437f8bf9d8", + "pair": "cut->thickness", + "shape": { + "area": 657.28, + "bounds": [ + 0, + 0, + 0, + 5, + 10, + 10 + ], + "edges": 24, + "faces": 11, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 129.056 + } + }, + "reopened": { + "namingEvidenceBytes": 6657, + "namingEvidenceSha256": "437a57109d889a9874c20d4da826cb3382e64cb6ac8bc4a0fd3935437f8bf9d8", + "pair": "cut->thickness", + "shape": { + "area": 657.28, + "bounds": [ + 0, + 0, + 0, + 5, + 10, + 10 + ], + "edges": 24, + "faces": 11, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 129.056 + } + }, + "resaved": { + "namingEvidenceBytes": 6657, + "namingEvidenceSha256": "437a57109d889a9874c20d4da826cb3382e64cb6ac8bc4a0fd3935437f8bf9d8", + "pair": "cut->thickness", + "shape": { + "area": 657.28, + "bounds": [ + 0, + 0, + 0, + 5, + 10, + 10 + ], + "edges": 24, + "faces": 11, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 129.056 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-linear-pattern", + "pair": "cut->linear-pattern", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "c15ded64aa400ffc720f6e048b09592dcd75fb60310147e1789a8c5bbc3b31d8", + "namingSemanticSha256": "f7f7853c597167456ff5a6ecd58f7512734a97228e326e370616216dda5b7daf" + }, + "second": { + "operation": "linear-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 22, + "edges": 51, + "vertices": 31, + "volume": 1672, + "area": 984, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 18.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 89, + "selectedRecords": 9, + "ambiguousResults": 15, + "historySha256": "e637300b019a2a3aebc635ea88a12f95cd5e1fc59e9d0fb8489cd62cd1dc3e43", + "namingEvidenceSha256": "780832a233cb958d8d7274a3224b9552db3455f7958a54f3a52be80a117f7663", + "namingSemanticSha256": "76a7f02543613cfa64ee985aa5026a5402e1ee13d158a5ae2cb75ef248ae0829" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "translationX", + "trajectory": [ + 8, + 9, + 8 + ], + "beforeValue": 8, + "editedValue": 9, + "restoredValue": 8, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "linear-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 22, + "edges": 52, + "vertices": 32, + "volume": 1772, + "area": 1024, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 19.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 66, + "selectedRecords": 8, + "ambiguousResults": 12, + "historySha256": "f15f5a4517710bdb9b1e609822016a6708ebc795e357c13ac66e3426d77edb88", + "namingEvidenceSha256": "d81abc3992bda1d334df61c2eb8876c6cc8b6502b975a44cddbc50ac6be6b807", + "namingSemanticSha256": "daa9fd927327df83c747b49333de6c43ee4e43c48daa5a22aa3113e7d2ccd72f" + }, + "restoredEvidence": { + "operation": "linear-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 22, + "edges": 51, + "vertices": 31, + "volume": 1672, + "area": 984, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 18.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 89, + "selectedRecords": 9, + "ambiguousResults": 15, + "historySha256": "e637300b019a2a3aebc635ea88a12f95cd5e1fc59e9d0fb8489cd62cd1dc3e43", + "namingEvidenceSha256": "8ef79cf95f6cf5eff8085a6bf3fe9eef3f060129528090eee7d3bc00e2705469", + "namingSemanticSha256": "76a7f02543613cfa64ee985aa5026a5402e1ee13d158a5ae2cb75ef248ae0829" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->linear-pattern", + "phases": { + "initial": { + "namingEvidenceBytes": 9547, + "namingEvidenceSha256": "780832a233cb958d8d7274a3224b9552db3455f7958a54f3a52be80a117f7663", + "pair": "cut->linear-pattern", + "shape": { + "area": 984, + "bounds": [ + 0, + 0, + 0, + 18, + 10, + 10 + ], + "edges": 51, + "faces": 22, + "solids": 1, + "valid": true, + "vertices": 31, + "volume": 1672 + } + }, + "reopened": { + "namingEvidenceBytes": 9547, + "namingEvidenceSha256": "780832a233cb958d8d7274a3224b9552db3455f7958a54f3a52be80a117f7663", + "pair": "cut->linear-pattern", + "shape": { + "area": 984, + "bounds": [ + 0, + 0, + 0, + 18, + 10, + 10 + ], + "edges": 51, + "faces": 22, + "solids": 1, + "valid": true, + "vertices": 31, + "volume": 1672 + } + }, + "resaved": { + "namingEvidenceBytes": 9547, + "namingEvidenceSha256": "780832a233cb958d8d7274a3224b9552db3455f7958a54f3a52be80a117f7663", + "pair": "cut->linear-pattern", + "shape": { + "area": 984, + "bounds": [ + 0, + 0, + 0, + 18, + 10, + 10 + ], + "edges": 51, + "faces": 22, + "solids": 1, + "valid": true, + "vertices": 31, + "volume": 1672 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-polar-pattern", + "pair": "cut->polar-pattern", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "1447cef9f1d68787134912d7baa6c723a219c86da14b0a253efd692a5ba12254", + "namingSemanticSha256": "29209683e4f1f76a4fa180c4351ba601a88da9ac99fd9b3b0147d5f4e6d25eb0" + }, + "second": { + "operation": "polar-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 26, + "edges": 62, + "vertices": 38, + "volume": 1361.9420727, + "area": 807.5795289, + "bounds": [ + -5.0000001, + -1e-7, + -1e-7, + 10.0000001, + 13.6602542, + 10.0000001 + ] + }, + "historyRecords": 160, + "selectedRecords": 14, + "ambiguousResults": 21, + "historySha256": "6a114d317417c8db03eacda7d1b72a0609263bb0e3ca40e4507f1ad48325bda7", + "namingEvidenceSha256": "e09a647cf003de87d38c44b63575118548518045ec7cdabf610893af92229fdf", + "namingSemanticSha256": "75ea53f005e5488364e3f31aca759e863b519a1519469f7b6b4b95951628ea53" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "angle", + "trajectory": [ + 30, + 45, + 30 + ], + "beforeValue": 30, + "editedValue": 45, + "restoredValue": 30, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "polar-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 22, + "edges": 55, + "vertices": 35, + "volume": 1513.7864376, + "area": 893.6282835, + "bounds": [ + -7.071068, + -1e-7, + -1e-7, + 10.0000001, + 14.1421358, + 10.0000001 + ] + }, + "historyRecords": 145, + "selectedRecords": 12, + "ambiguousResults": 17, + "historySha256": "547f8caff20643cfd0f9dee95144e2df734625e82b863986826a9705e5bd5d89", + "namingEvidenceSha256": "30e0128b1a0b6c62cd125d2287ba5417153d2034278e41b1b6de81862c68d2e1", + "namingSemanticSha256": "c7f88c65a7560bc02733ef686e11a41ea2141318370b3e806c4e9bf75ab2b7cc" + }, + "restoredEvidence": { + "operation": "polar-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 26, + "edges": 62, + "vertices": 38, + "volume": 1361.9420727, + "area": 807.5795289, + "bounds": [ + -5.0000001, + -1e-7, + -1e-7, + 10.0000001, + 13.6602542, + 10.0000001 + ] + }, + "historyRecords": 160, + "selectedRecords": 14, + "ambiguousResults": 21, + "historySha256": "6a114d317417c8db03eacda7d1b72a0609263bb0e3ca40e4507f1ad48325bda7", + "namingEvidenceSha256": "4a905037e5b22f14c6d3f088f82a09d6296e739dc38ec3c06dd76af0eea4b320", + "namingSemanticSha256": "75ea53f005e5488364e3f31aca759e863b519a1519469f7b6b4b95951628ea53" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->polar-pattern", + "phases": { + "initial": { + "namingEvidenceBytes": 13099, + "namingEvidenceSha256": "e09a647cf003de87d38c44b63575118548518045ec7cdabf610893af92229fdf", + "pair": "cut->polar-pattern", + "shape": { + "area": 807.5795289, + "bounds": [ + -5, + 0, + 0, + 10, + 13.660254, + 10 + ], + "edges": 62, + "faces": 26, + "solids": 1, + "valid": true, + "vertices": 38, + "volume": 1361.9420727 + } + }, + "reopened": { + "namingEvidenceBytes": 13099, + "namingEvidenceSha256": "e09a647cf003de87d38c44b63575118548518045ec7cdabf610893af92229fdf", + "pair": "cut->polar-pattern", + "shape": { + "area": 807.5795289, + "bounds": [ + -5, + 0, + 0, + 10, + 13.660254, + 10 + ], + "edges": 62, + "faces": 26, + "solids": 1, + "valid": true, + "vertices": 38, + "volume": 1361.9420727 + } + }, + "resaved": { + "namingEvidenceBytes": 13099, + "namingEvidenceSha256": "e09a647cf003de87d38c44b63575118548518045ec7cdabf610893af92229fdf", + "pair": "cut->polar-pattern", + "shape": { + "area": 807.5795289, + "bounds": [ + -5, + 0, + 0, + 10, + 13.660254, + 10 + ], + "edges": 62, + "faces": 26, + "solids": 1, + "valid": true, + "vertices": 38, + "volume": 1361.9420727 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-mirrored", + "pair": "cut->mirrored", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "8ea58b0c5f35e45d68eb7f1ccc52b5ce1f7a1258cd5ed609f8e4e8382b5d519b", + "namingSemanticSha256": "4b439b4023b97f5b500037c72b91c5e54d41318814f0d86a8dcf18bdecbfe4ef" + }, + "second": { + "operation": "mirrored", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 34, + "vertices": 22, + "volume": 968, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 230, + "selectedRecords": 10, + "ambiguousResults": 31, + "historySha256": "75800e886cb71f3d3a2f61c0a4830d7ebb05f55f6f55666b47208d1aace5a388", + "namingEvidenceSha256": "5ad4ff0d9d1a1bf1928965b8e549c0a5e4a7ccbba5f930e956f56e72a4fd024f", + "namingSemanticSha256": "6589e7899b7d2b4eebdeed4de51beb1f05ab94127779fa855838f02c1384580b" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "planeOriginX", + "trajectory": [ + 5, + 6, + 5 + ], + "beforeValue": 5, + "editedValue": 6, + "restoredValue": 5, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "mirrored", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 18, + "edges": 39, + "vertices": 23, + "volume": 1200, + "area": 680, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 12.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 214, + "selectedRecords": 10, + "ambiguousResults": 25, + "historySha256": "5ed8c6a43b1910b721f344112f02a5d628b19a84552210987bba3b1707aeb441", + "namingEvidenceSha256": "5398378c0f10d4cdc2f1a487d95b69534832291636a68ec52399c6e94754ce32", + "namingSemanticSha256": "3a48e0f2a05d854cca90f9f51277897d3c1e6627431b0637f539305797853abd" + }, + "restoredEvidence": { + "operation": "mirrored", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 34, + "vertices": 22, + "volume": 968, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 230, + "selectedRecords": 10, + "ambiguousResults": 31, + "historySha256": "75800e886cb71f3d3a2f61c0a4830d7ebb05f55f6f55666b47208d1aace5a388", + "namingEvidenceSha256": "f0682b1ceceecbceb97816d6a3976bb175cb1dd5e28e5c92c719aa24faef5df7", + "namingSemanticSha256": "6589e7899b7d2b4eebdeed4de51beb1f05ab94127779fa855838f02c1384580b" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->mirrored", + "phases": { + "initial": { + "namingEvidenceBytes": 15216, + "namingEvidenceSha256": "5ad4ff0d9d1a1bf1928965b8e549c0a5e4a7ccbba5f930e956f56e72a4fd024f", + "pair": "cut->mirrored", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 34, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 22, + "volume": 968 + } + }, + "reopened": { + "namingEvidenceBytes": 15216, + "namingEvidenceSha256": "5ad4ff0d9d1a1bf1928965b8e549c0a5e4a7ccbba5f930e956f56e72a4fd024f", + "pair": "cut->mirrored", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 34, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 22, + "volume": 968 + } + }, + "resaved": { + "namingEvidenceBytes": 15216, + "namingEvidenceSha256": "5ad4ff0d9d1a1bf1928965b8e549c0a5e4a7ccbba5f930e956f56e72a4fd024f", + "pair": "cut->mirrored", + "shape": { + "area": 632, + "bounds": [ + 0, + 0, + 0, + 10, + 10, + 10 + ], + "edges": 34, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 22, + "volume": 968 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-cut-multi-transform", + "pair": "cut->multi-transform", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 936, + "area": 632, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 10.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 22, + "selectedRecords": 2, + "ambiguousResults": 8, + "historySha256": "b65277e3e865693bad596c66f74681f349245de069db73565af5ff1944bfc7ee", + "namingEvidenceSha256": "e746a6c3aae94a7ccc3e0831d61a9fba43cbb60ea5951caa17965c71c3dc3aed", + "namingSemanticSha256": "ef8199cdb401e1d8dce811a04d925b07a66e1aaec0ed2fac01c598abc29c53c5" + }, + "second": { + "operation": "multi-transform", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 38, + "edges": 86, + "vertices": 50, + "volume": 2440, + "area": 1336, + "bounds": [ + -8.0000001, + -1e-7, + -1e-7, + 18.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 670, + "selectedRecords": 36, + "ambiguousResults": 138, + "historySha256": "fb9bebf4dbf41b15288a2186ec9e954c46546c3c03d472c6189be67768818684", + "namingEvidenceSha256": "09013ceb647b3b241cc00b5933de3b63f9944af4f317c57e909286c33ad7abe5", + "namingSemanticSha256": "b08b395255e58f9ccb5d07a5573e7fb0531bff8db7c85e19ceca7b487ec7a6dd" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "multiTranslationX", + "trajectory": [ + 8, + 9, + 8 + ], + "beforeValue": 8, + "editedValue": 9, + "restoredValue": 8, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "multi-transform", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 38, + "edges": 90, + "vertices": 54, + "volume": 2640, + "area": 1416, + "bounds": [ + -9.0000001, + -1e-7, + -1e-7, + 19.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 655, + "selectedRecords": 38, + "ambiguousResults": 144, + "historySha256": "e61b52a9e3221ad330ef73c625f659d385dc2ee174e60adb19ebaea09bd98864", + "namingEvidenceSha256": "047eb8720073c9d20f3ebf1008dc755979d1e5903a5206ae313bcf52e8abd7cf", + "namingSemanticSha256": "a780efd43d1af201741bd8bc4678cd3964dfbc3eaf5b9271865cba5ab4ebdee6" + }, + "restoredEvidence": { + "operation": "multi-transform", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 38, + "edges": 86, + "vertices": 50, + "volume": 2440, + "area": 1336, + "bounds": [ + -8.0000001, + -1e-7, + -1e-7, + 18.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 670, + "selectedRecords": 36, + "ambiguousResults": 138, + "historySha256": "fb9bebf4dbf41b15288a2186ec9e954c46546c3c03d472c6189be67768818684", + "namingEvidenceSha256": "7dd3e3bf119691bbaa9566962d7ac5263c52a817b3bc89c96b78856eb8156456", + "namingSemanticSha256": "b08b395255e58f9ccb5d07a5573e7fb0531bff8db7c85e19ceca7b487ec7a6dd" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "cut->multi-transform", + "phases": { + "initial": { + "namingEvidenceBytes": 80929, + "namingEvidenceSha256": "09013ceb647b3b241cc00b5933de3b63f9944af4f317c57e909286c33ad7abe5", + "pair": "cut->multi-transform", + "shape": { + "area": 1336, + "bounds": [ + -8, + 0, + 0, + 18, + 10, + 10 + ], + "edges": 86, + "faces": 38, + "solids": 1, + "valid": true, + "vertices": 50, + "volume": 2440 + } + }, + "reopened": { + "namingEvidenceBytes": 80929, + "namingEvidenceSha256": "09013ceb647b3b241cc00b5933de3b63f9944af4f317c57e909286c33ad7abe5", + "pair": "cut->multi-transform", + "shape": { + "area": 1336, + "bounds": [ + -8, + 0, + 0, + 18, + 10, + 10 + ], + "edges": 86, + "faces": 38, + "solids": 1, + "valid": true, + "vertices": 50, + "volume": 2440 + } + }, + "resaved": { + "namingEvidenceBytes": 80929, + "namingEvidenceSha256": "09013ceb647b3b241cc00b5933de3b63f9944af4f317c57e909286c33ad7abe5", + "pair": "cut->multi-transform", + "shape": { + "area": 1336, + "bounds": [ + -8, + 0, + 0, + 18, + 10, + 10 + ], + "edges": 86, + "faces": 38, + "solids": 1, + "valid": true, + "vertices": 50, + "volume": 2440 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-fuse", + "pair": "common->fuse", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "37d8d284f05233e4e593c4765cd7f42e2b51207fed94748381c6dad89df06251", + "namingSemanticSha256": "dba7bc9f0673011d82b00cd398b9c3530b980c66d8f947ad3e76823ac386a729" + }, + "second": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 28, + "vertices": 16, + "volume": 225, + "area": 230, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 13.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 66, + "selectedRecords": 6, + "ambiguousResults": 26, + "historySha256": "777335aae7dc5c90e6c4b998820327f02354e64ae4d2647f026d99a2a24ba6b7", + "namingEvidenceSha256": "25fb03eb1633899c043dc2637d0a05e293e1500707465deba7a201606b091855", + "namingSemanticSha256": "09bfa14a2ecb199c5b7aced4832aaaac25c3c3788f5d01de77ff0e2e7c106dc8" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "toolOffsetX", + "trajectory": [ + 8, + 7, + 8 + ], + "beforeValue": 8, + "editedValue": 7, + "restoredValue": 8, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 28, + "vertices": 16, + "volume": 200, + "area": 210, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 12.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 66, + "selectedRecords": 6, + "ambiguousResults": 26, + "historySha256": "777335aae7dc5c90e6c4b998820327f02354e64ae4d2647f026d99a2a24ba6b7", + "namingEvidenceSha256": "dd357830106e0b9e00f5b81d14cd29c377e10b6243f75e916cb8069895dad779", + "namingSemanticSha256": "09bfa14a2ecb199c5b7aced4832aaaac25c3c3788f5d01de77ff0e2e7c106dc8" + }, + "restoredEvidence": { + "operation": "fuse", + "builder": "BRepAlgoAPI_Fuse", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 28, + "vertices": 16, + "volume": 225, + "area": 230, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 13.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 66, + "selectedRecords": 6, + "ambiguousResults": 26, + "historySha256": "777335aae7dc5c90e6c4b998820327f02354e64ae4d2647f026d99a2a24ba6b7", + "namingEvidenceSha256": "d01ea272570424527bf0bda40f6bc02a7a26c590c928f2637012438f29f167ee", + "namingSemanticSha256": "09bfa14a2ecb199c5b7aced4832aaaac25c3c3788f5d01de77ff0e2e7c106dc8" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->fuse", + "phases": { + "initial": { + "namingEvidenceBytes": 11256, + "namingEvidenceSha256": "25fb03eb1633899c043dc2637d0a05e293e1500707465deba7a201606b091855", + "pair": "common->fuse", + "shape": { + "area": 230, + "bounds": [ + 4, + 0, + 0, + 13, + 5, + 5 + ], + "edges": 28, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 225 + } + }, + "reopened": { + "namingEvidenceBytes": 11256, + "namingEvidenceSha256": "25fb03eb1633899c043dc2637d0a05e293e1500707465deba7a201606b091855", + "pair": "common->fuse", + "shape": { + "area": 230, + "bounds": [ + 4, + 0, + 0, + 13, + 5, + 5 + ], + "edges": 28, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 225 + } + }, + "resaved": { + "namingEvidenceBytes": 11256, + "namingEvidenceSha256": "25fb03eb1633899c043dc2637d0a05e293e1500707465deba7a201606b091855", + "pair": "common->fuse", + "shape": { + "area": 230, + "bounds": [ + 4, + 0, + 0, + 13, + 5, + 5 + ], + "edges": 28, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 225 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-cut", + "pair": "common->cut", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "0c2b6181c3fb228d81771b48bf55a5080c8a86c7fd8ec2becf2b9d2a58ac0047", + "namingSemanticSha256": "236d6de377eccf7743f34ad10a531cde799f428fd892e5f80a6eb2a111a2b7e9" + }, + "second": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 9, + "edges": 21, + "vertices": 14, + "volume": 93, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 64, + "selectedRecords": 3, + "ambiguousResults": 10, + "historySha256": "7b3a355251b829e20ff5828211994fdc14a11e61bfb756afae930c6c2eb79391", + "namingEvidenceSha256": "0ac2db06953a1efaaa75a067a639fbb1f0ccb1b355d441be272be4ccb661a2eb", + "namingSemanticSha256": "21f0d26e4ac631a7b092bc73d2308d6e3460a9b2962901a65922cb5f9d782deb" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "toolSize", + "trajectory": [ + 4, + 3, + 4 + ], + "beforeValue": 4, + "editedValue": 3, + "restoredValue": 4, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 9, + "edges": 21, + "vertices": 14, + "volume": 116, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 64, + "selectedRecords": 3, + "ambiguousResults": 10, + "historySha256": "7b3a355251b829e20ff5828211994fdc14a11e61bfb756afae930c6c2eb79391", + "namingEvidenceSha256": "070985854e4b15621b39990ad5a244d4e198d8a3c7fd55c65c9298aff70924a0", + "namingSemanticSha256": "21f0d26e4ac631a7b092bc73d2308d6e3460a9b2962901a65922cb5f9d782deb" + }, + "restoredEvidence": { + "operation": "cut", + "builder": "BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 9, + "edges": 21, + "vertices": 14, + "volume": 93, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 64, + "selectedRecords": 3, + "ambiguousResults": 10, + "historySha256": "7b3a355251b829e20ff5828211994fdc14a11e61bfb756afae930c6c2eb79391", + "namingEvidenceSha256": "f62603211634984ca56e8f0fdc29f2fb27c51d0a16e895fb62867750cd263542", + "namingSemanticSha256": "21f0d26e4ac631a7b092bc73d2308d6e3460a9b2962901a65922cb5f9d782deb" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->cut", + "phases": { + "initial": { + "namingEvidenceBytes": 4741, + "namingEvidenceSha256": "0ac2db06953a1efaaa75a067a639fbb1f0ccb1b355d441be272be4ccb661a2eb", + "pair": "common->cut", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 21, + "faces": 9, + "solids": 1, + "valid": true, + "vertices": 14, + "volume": 93 + } + }, + "reopened": { + "namingEvidenceBytes": 4741, + "namingEvidenceSha256": "0ac2db06953a1efaaa75a067a639fbb1f0ccb1b355d441be272be4ccb661a2eb", + "pair": "common->cut", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 21, + "faces": 9, + "solids": 1, + "valid": true, + "vertices": 14, + "volume": 93 + } + }, + "resaved": { + "namingEvidenceBytes": 4741, + "namingEvidenceSha256": "0ac2db06953a1efaaa75a067a639fbb1f0ccb1b355d441be272be4ccb661a2eb", + "pair": "common->cut", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 21, + "faces": 9, + "solids": 1, + "valid": true, + "vertices": 14, + "volume": 93 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-common", + "pair": "common->common", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "4fab0fb79e2c2c21b339ecf6a5b417dd883ea1c7fd630fd4e1078c70fe0fd39c", + "namingSemanticSha256": "e1ce7454c5263cc7b88a7201d67a0d2a4a8e673a9bc6ef420ea3576624ac17a4" + }, + "second": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 32, + "area": 64, + "bounds": [ + 6.9999999, + -1e-7, + -1e-7, + 9.0000001, + 4.0000001, + 4.0000001 + ] + }, + "historyRecords": 121, + "selectedRecords": 3, + "ambiguousResults": 10, + "historySha256": "671b80def84912c5908978511baca536be2385c87a50285d7f26412124792e57", + "namingEvidenceSha256": "a8ce63acab8d3338db60ebb4c4f84a218b139660136ceec0468ab77cf6b7a92d", + "namingSemanticSha256": "ca8c244571bb8bc90ab3d027502a3dc4549d89167d6125f9e96e77bea40d9702" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "toolOffsetX", + "trajectory": [ + 7, + 6, + 7 + ], + "beforeValue": 7, + "editedValue": 6, + "restoredValue": 7, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 48, + "area": 80, + "bounds": [ + 5.9999999, + -1e-7, + -1e-7, + 9.0000001, + 4.0000001, + 4.0000001 + ] + }, + "historyRecords": 121, + "selectedRecords": 3, + "ambiguousResults": 10, + "historySha256": "671b80def84912c5908978511baca536be2385c87a50285d7f26412124792e57", + "namingEvidenceSha256": "cdad735978a78c5c6d90407328569dcf21d5bc8f19798f481a6d0ac421cd0a58", + "namingSemanticSha256": "ca8c244571bb8bc90ab3d027502a3dc4549d89167d6125f9e96e77bea40d9702" + }, + "restoredEvidence": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 32, + "area": 64, + "bounds": [ + 6.9999999, + -1e-7, + -1e-7, + 9.0000001, + 4.0000001, + 4.0000001 + ] + }, + "historyRecords": 121, + "selectedRecords": 3, + "ambiguousResults": 10, + "historySha256": "671b80def84912c5908978511baca536be2385c87a50285d7f26412124792e57", + "namingEvidenceSha256": "0e914d2b11837607d59cf29b780d2ca0d7eb8efefc9adf65cf838e811e575706", + "namingSemanticSha256": "ca8c244571bb8bc90ab3d027502a3dc4549d89167d6125f9e96e77bea40d9702" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->common", + "phases": { + "initial": { + "namingEvidenceBytes": 5072, + "namingEvidenceSha256": "a8ce63acab8d3338db60ebb4c4f84a218b139660136ceec0468ab77cf6b7a92d", + "pair": "common->common", + "shape": { + "area": 64, + "bounds": [ + 7, + 0, + 0, + 9, + 4, + 4 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 32 + } + }, + "reopened": { + "namingEvidenceBytes": 5072, + "namingEvidenceSha256": "a8ce63acab8d3338db60ebb4c4f84a218b139660136ceec0468ab77cf6b7a92d", + "pair": "common->common", + "shape": { + "area": 64, + "bounds": [ + 7, + 0, + 0, + 9, + 4, + 4 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 32 + } + }, + "resaved": { + "namingEvidenceBytes": 5072, + "namingEvidenceSha256": "a8ce63acab8d3338db60ebb4c4f84a218b139660136ceec0468ab77cf6b7a92d", + "pair": "common->common", + "shape": { + "area": 64, + "bounds": [ + 7, + 0, + 0, + 9, + 4, + 4 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 32 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-rotate", + "pair": "common->rotate", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "30b3f96942e902d8c2abca3e8643478d53077f2854e993cdcd2b70fd8fb0c0e8", + "namingSemanticSha256": "4e9ba4f64a945fac725f4bc11365de4631462f2f05a23658b0d468e590fdf3f1" + }, + "second": { + "operation": "rotate", + "builder": "BRepBuilderAPI_Transform", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 2.569608, + 1.0352761, + -1e-7, + 8.6933325, + 7.1590006, + 5.0000001 + ] + }, + "historyRecords": 78, + "selectedRecords": 4, + "ambiguousResults": 22, + "historySha256": "bee8c3d39b2e8d137b532235248b0ee9a41c8520722e8170cec260ce103d23e8", + "namingEvidenceSha256": "e16c7ba469dbc1c4ec9fc8843075ced354a071a073dfcab880059a6ccedca832", + "namingSemanticSha256": "000fc0a005cf30b9152a8a8824984e31b63346a99a804c9e4dd87476c43bbb7c" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "angle", + "trajectory": [ + 15, + 22.5, + 15 + ], + "beforeValue": 15, + "editedValue": 22.5, + "restoredValue": 15, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "rotate", + "builder": "BRepBuilderAPI_Transform", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 1.7821009, + 1.5307336, + -1e-7, + 8.3149159, + 8.0635487, + 5.0000001 + ] + }, + "historyRecords": 78, + "selectedRecords": 4, + "ambiguousResults": 22, + "historySha256": "bee8c3d39b2e8d137b532235248b0ee9a41c8520722e8170cec260ce103d23e8", + "namingEvidenceSha256": "aee966c129099bd6e84cf612d511caa83a7f253311232c5dff55afc826347853", + "namingSemanticSha256": "000fc0a005cf30b9152a8a8824984e31b63346a99a804c9e4dd87476c43bbb7c" + }, + "restoredEvidence": { + "operation": "rotate", + "builder": "BRepBuilderAPI_Transform", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 2.569608, + 1.0352761, + -1e-7, + 8.6933325, + 7.1590006, + 5.0000001 + ] + }, + "historyRecords": 78, + "selectedRecords": 4, + "ambiguousResults": 22, + "historySha256": "bee8c3d39b2e8d137b532235248b0ee9a41c8520722e8170cec260ce103d23e8", + "namingEvidenceSha256": "8532b55c16652d4b15089d1df0d635f4947bb227c100ab63d314de07326c05bd", + "namingSemanticSha256": "000fc0a005cf30b9152a8a8824984e31b63346a99a804c9e4dd87476c43bbb7c" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->rotate", + "phases": { + "initial": { + "namingEvidenceBytes": 10584, + "namingEvidenceSha256": "e16c7ba469dbc1c4ec9fc8843075ced354a071a073dfcab880059a6ccedca832", + "pair": "common->rotate", + "shape": { + "area": 150, + "bounds": [ + 2.5696081, + 1.0352762, + 0, + 8.6933324, + 7.1590005, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + } + }, + "reopened": { + "namingEvidenceBytes": 10584, + "namingEvidenceSha256": "e16c7ba469dbc1c4ec9fc8843075ced354a071a073dfcab880059a6ccedca832", + "pair": "common->rotate", + "shape": { + "area": 150, + "bounds": [ + 2.5696081, + 1.0352762, + 0, + 8.6933324, + 7.1590005, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + } + }, + "resaved": { + "namingEvidenceBytes": 10584, + "namingEvidenceSha256": "e16c7ba469dbc1c4ec9fc8843075ced354a071a073dfcab880059a6ccedca832", + "pair": "common->rotate", + "shape": { + "area": 150, + "bounds": [ + 2.5696081, + 1.0352762, + 0, + 8.6933324, + 7.1590005, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-pad", + "pair": "common->pad", + "classification": "rejected", + "reasonCode": "native-builder-and-freecad-profile-reject-with-clean-resave", + "nativeDecision": "rejected", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "907ad9e680bb405cf362768bbda59fbe999dcb1d59e4c6386c36d67f03482b94", + "namingSemanticSha256": "fe1f04dd359a42b2d61ff36ecc0a483d39af8e749a55fb6be9277bce9e85f6eb" + }, + "rejection": { + "scope": "second-operation-only", + "authority": "occt-builder", + "parameter": "length", + "trajectory": [ + 5, + 7.5, + 5 + ], + "stable": true, + "attempts": [ + { + "operation": "pad", + "builder": "BRepPrimAPI_MakePrism", + "inputCount": 1, + "parameter": "length", + "parameterValue": 5, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + }, + { + "operation": "pad", + "builder": "BRepPrimAPI_MakePrism", + "inputCount": 1, + "parameter": "length", + "parameterValue": 7.5, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + }, + { + "operation": "pad", + "builder": "BRepPrimAPI_MakePrism", + "inputCount": 1, + "parameter": "length", + "parameterValue": 5, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + } + ], + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "documentStable": true, + "documentUnpolluted": true, + "fuseSolidUsedAsInput": true, + "nativeFeatureConstructed": true, + "nativeFeatureRejected": true, + "objectSetRestored": true, + "recomputeStatusCaptured": true, + "sourceShapeRestored": true + }, + "decision": "rejected", + "diagnostic": { + "exception": null, + "exceptionType": null, + "input": { + "name": "Part__Feature", + "subelements": [], + "typeId": "Part::Feature" + }, + "inputShape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "nativeTypeId": "PartDesign::Pad", + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + }, + { + "name": "Body", + "typeId": "PartDesign::Body" + }, + { + "name": "Origin", + "typeId": "App::Origin" + }, + { + "name": "X_Axis", + "typeId": "App::Line" + }, + { + "name": "Y_Axis", + "typeId": "App::Line" + }, + { + "name": "Z_Axis", + "typeId": "App::Line" + }, + { + "name": "XY_Plane", + "typeId": "App::Plane" + }, + { + "name": "XZ_Plane", + "typeId": "App::Plane" + }, + { + "name": "YZ_Plane", + "typeId": "App::Plane" + }, + { + "name": "Origin001", + "typeId": "App::Point" + }, + { + "name": "PairResult", + "typeId": "PartDesign::Pad" + } + ], + "parameter": { + "name": "length", + "value": 5 + }, + "recomputeResult": true, + "shapeNull": true, + "shapeValid": false, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "FeatureExtrusion: Length: Could not extrude the sketch!" + }, + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "nativeTypeId": "PartDesign::Pad", + "operation": "pad", + "pair": "common->pad", + "phases": { + "initial": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + } + ] + }, + "reopened": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + } + ] + }, + "resaved": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + } + ] + } + }, + "rollback": { + "after": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "brepSha256": "c71c52262e9cdfca74e475bddacccf1c17d3d1228438d792155ac652b7f5f55f", + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + } + }, + "before": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "brepSha256": "c71c52262e9cdfca74e475bddacccf1c17d3d1228438d792155ac652b7f5f55f", + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + } + } + }, + "schemaVersion": 1, + "source": { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "brepSha256": "c71c52262e9cdfca74e475bddacccf1c17d3d1228438d792155ac652b7f5f55f", + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + }, + "status": "pass" + } + } + }, + { + "taskId": "TSN-PAIR-common-pocket", + "pair": "common->pocket", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 5.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 105, + "selectedRecords": 0, + "ambiguousResults": 13, + "historySha256": "b6242fcfaaeeb1e1d7fd7b3dc79709f54fad657c32b2980338b96aeb4dac2130", + "namingEvidenceSha256": "a53bdddd01e47baf0c788bdadac2d4949d71d601e948c6ba9d36701400c11193", + "namingSemanticSha256": "e41a3cca88aaa2ea44bcae640a2df57fb5147561a475c81b801662d542d7b9cc" + }, + "second": { + "operation": "pocket", + "builder": "BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 18, + "vertices": 12, + "volume": 95, + "area": 138, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 5.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 64, + "selectedRecords": 1, + "ambiguousResults": 13, + "historySha256": "3fbf02e26c11e8a946f683bd822b2b3a0623ca878dd9d92a8e88a068b146cfb9", + "namingEvidenceSha256": "c51712f8d57d8c02eca3c2726707d73a45ce6d55c5f01185457e2191346c09cf", + "namingSemanticSha256": "61337fb8b35c1b342704cc45698123a035dfce84866b733a1b4409129492bcd9" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "length", + "trajectory": [ + 5, + 4, + 5 + ], + "beforeValue": 5, + "editedValue": 4, + "restoredValue": 5, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "pocket", + "builder": "BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 9, + "edges": 21, + "vertices": 14, + "volume": 101, + "area": 150, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 5.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 42, + "selectedRecords": 0, + "ambiguousResults": 12, + "historySha256": "d67425b58badaaa01a03466eae3a43f8a5d84783f971596c1bbf5e14de8ef459", + "namingEvidenceSha256": "d0ac14123817d7bc1a191bdeb81d14b6919f7c12da167e94a8bec48fdf656582", + "namingSemanticSha256": "32373a605bac668f8716e49ba700d956f2bd818a4ed2586db58af285e54f8406" + }, + "restoredEvidence": { + "operation": "pocket", + "builder": "BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 18, + "vertices": 12, + "volume": 95, + "area": 138, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 5.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 64, + "selectedRecords": 1, + "ambiguousResults": 13, + "historySha256": "3fbf02e26c11e8a946f683bd822b2b3a0623ca878dd9d92a8e88a068b146cfb9", + "namingEvidenceSha256": "86b82973bcff95cc80251256dbc7727fb8ba66e35bb9daa3aeedecd7bb0a9b0b", + "namingSemanticSha256": "61337fb8b35c1b342704cc45698123a035dfce84866b733a1b4409129492bcd9" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->pocket", + "phases": { + "initial": { + "namingEvidenceBytes": 5021, + "namingEvidenceSha256": "c51712f8d57d8c02eca3c2726707d73a45ce6d55c5f01185457e2191346c09cf", + "pair": "common->pocket", + "shape": { + "area": 138, + "bounds": [ + 0, + 0, + 0, + 5, + 5, + 5 + ], + "edges": 18, + "faces": 8, + "solids": 1, + "valid": true, + "vertices": 12, + "volume": 95 + } + }, + "reopened": { + "namingEvidenceBytes": 5021, + "namingEvidenceSha256": "c51712f8d57d8c02eca3c2726707d73a45ce6d55c5f01185457e2191346c09cf", + "pair": "common->pocket", + "shape": { + "area": 138, + "bounds": [ + 0, + 0, + 0, + 5, + 5, + 5 + ], + "edges": 18, + "faces": 8, + "solids": 1, + "valid": true, + "vertices": 12, + "volume": 95 + } + }, + "resaved": { + "namingEvidenceBytes": 5021, + "namingEvidenceSha256": "c51712f8d57d8c02eca3c2726707d73a45ce6d55c5f01185457e2191346c09cf", + "pair": "common->pocket", + "shape": { + "area": 138, + "bounds": [ + 0, + 0, + 0, + 5, + 5, + 5 + ], + "edges": 18, + "faces": 8, + "solids": 1, + "valid": true, + "vertices": 12, + "volume": 95 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-loft", + "pair": "common->loft", + "classification": "rejected", + "reasonCode": "freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave", + "nativeDecision": "rejected", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "ae180bd0111805cd6c89b79708ba233b94b51d34fab439a98b4567870e92546d", + "namingSemanticSha256": "6f544517cfd0b3c35ac7ca6303d3c48519859de9e2cc0fd7f161e741cd89f7a3" + }, + "rejection": { + "scope": "second-operation-only", + "authority": "freecad-document", + "parameter": "ruled", + "trajectory": [ + false, + true, + false + ], + "kernelAttempts": [ + { + "operation": "loft", + "builder": "BRepOffsetAPI_ThruSections", + "inputCount": 2, + "parameter": "ruled", + "parameterValue": false, + "runtime": "occt-native", + "outcome": "accepted", + "resultProduced": true, + "shapeProduced": true, + "validShapeProduced": true, + "historyProduced": true, + "historyProvider": "occt-native", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": -13.3333333, + "area": 158.6225087, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 4.0000001, + 5.0000001, + 15.0000001 + ] + }, + "historyRecords": 24, + "historySha256": "9f0ec53f6c7b6a6704cd926e6d16c24c51625ef328c2d89275f86d0ccda2ace7", + "authority": "kernel-superset-only" + }, + { + "operation": "loft", + "builder": "BRepOffsetAPI_ThruSections", + "inputCount": 2, + "parameter": "ruled", + "parameterValue": true, + "runtime": "occt-native", + "outcome": "accepted", + "resultProduced": true, + "shapeProduced": true, + "validShapeProduced": true, + "historyProduced": true, + "historyProvider": "occt-native", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": -13.3333333, + "area": 158.6225087, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 4.0000001, + 5.0000001, + 15.0000001 + ] + }, + "historyRecords": 24, + "historySha256": "9f0ec53f6c7b6a6704cd926e6d16c24c51625ef328c2d89275f86d0ccda2ace7", + "authority": "kernel-superset-only" + }, + { + "operation": "loft", + "builder": "BRepOffsetAPI_ThruSections", + "inputCount": 2, + "parameter": "ruled", + "parameterValue": false, + "runtime": "occt-native", + "outcome": "accepted", + "resultProduced": true, + "shapeProduced": true, + "validShapeProduced": true, + "historyProduced": true, + "historyProvider": "occt-native", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": -13.3333333, + "area": 158.6225087, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 4.0000001, + 5.0000001, + 15.0000001 + ] + }, + "historyRecords": 24, + "historySha256": "9f0ec53f6c7b6a6704cd926e6d16c24c51625ef328c2d89275f86d0ccda2ace7", + "authority": "kernel-superset-only" + } + ], + "kernelRestoredExactly": true, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "documentStable": true, + "documentUnpolluted": true, + "fuseSolidUsedAsInput": true, + "nativeFeatureConstructed": true, + "nativeFeatureRejected": true, + "objectSetRestored": true, + "recomputeStatusCaptured": true, + "sourceShapeRestored": true + }, + "decision": "rejected", + "diagnostic": { + "exception": null, + "exceptionType": null, + "input": { + "sections": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + }, + { + "name": "Section", + "typeId": "Part::Feature" + } + ] + }, + "inputShape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "nativeTypeId": "Part::Loft", + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + }, + { + "name": "Section", + "typeId": "Part::Feature" + }, + { + "name": "PairResult", + "typeId": "Part::Loft" + } + ], + "parameter": { + "name": "ruled", + "value": false + }, + "recomputeResult": true, + "shapeNull": true, + "shapeValid": false, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "Profile shape is not a single vertex, edge, wire nor face." + }, + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "nativeTypeId": "Part::Loft", + "operation": "loft", + "pair": "common->loft", + "phases": { + "initial": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + } + ] + }, + "reopened": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + } + ] + }, + "resaved": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + } + ] + } + }, + "rollback": { + "after": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "brepSha256": "c71c52262e9cdfca74e475bddacccf1c17d3d1228438d792155ac652b7f5f55f", + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + } + }, + "before": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "brepSha256": "c71c52262e9cdfca74e475bddacccf1c17d3d1228438d792155ac652b7f5f55f", + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + } + } + }, + "schemaVersion": 1, + "source": { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "brepSha256": "c71c52262e9cdfca74e475bddacccf1c17d3d1228438d792155ac652b7f5f55f", + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + }, + "status": "pass" + } + } + }, + { + "taskId": "TSN-PAIR-common-pipe", + "pair": "common->pipe", + "classification": "rejected", + "reasonCode": "freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave", + "nativeDecision": "rejected", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "6d25ea6ec8161c2614237c5f2bd8c7ba415ab1133002a5ac3d57444e641f42bf", + "namingSemanticSha256": "835ded124f93b4a2f14d263fd7415aaae3b8016901db252f8b5eb4a5a7d308f2" + }, + "rejection": { + "scope": "second-operation-only", + "authority": "freecad-document", + "parameter": "spineLength", + "trajectory": [ + 15, + 12, + 15 + ], + "kernelAttempts": [ + { + "operation": "pipe", + "builder": "BRepOffsetAPI_MakePipe", + "inputCount": 2, + "parameter": "spineLength", + "parameterValue": 15, + "runtime": "occt-native", + "outcome": "invalid-result", + "resultProduced": true, + "shapeProduced": true, + "validShapeProduced": false, + "historyProduced": true, + "historyProvider": "occt-native", + "summary": { + "isValid": false, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 0, + "area": 200, + "bounds": [ + 3.9999999, + -1e-7, + -15.0000001, + 4.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 28, + "historySha256": "0b29085cd086854553f7e799c787527dddb9e1e7e798579dbb78cb09bb5d9d7c", + "authority": "kernel-invalid-result" + }, + { + "operation": "pipe", + "builder": "BRepOffsetAPI_MakePipe", + "inputCount": 2, + "parameter": "spineLength", + "parameterValue": 12, + "runtime": "occt-native", + "outcome": "invalid-result", + "resultProduced": true, + "shapeProduced": true, + "validShapeProduced": false, + "historyProduced": true, + "historyProvider": "occt-native", + "summary": { + "isValid": false, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 0, + "area": 170, + "bounds": [ + 3.9999999, + -1e-7, + -12.0000001, + 4.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 28, + "historySha256": "0b29085cd086854553f7e799c787527dddb9e1e7e798579dbb78cb09bb5d9d7c", + "authority": "kernel-invalid-result" + }, + { + "operation": "pipe", + "builder": "BRepOffsetAPI_MakePipe", + "inputCount": 2, + "parameter": "spineLength", + "parameterValue": 15, + "runtime": "occt-native", + "outcome": "invalid-result", + "resultProduced": true, + "shapeProduced": true, + "validShapeProduced": false, + "historyProduced": true, + "historyProvider": "occt-native", + "summary": { + "isValid": false, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 0, + "area": 200, + "bounds": [ + 3.9999999, + -1e-7, + -15.0000001, + 4.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 28, + "historySha256": "0b29085cd086854553f7e799c787527dddb9e1e7e798579dbb78cb09bb5d9d7c", + "authority": "kernel-invalid-result" + } + ], + "kernelRestoredExactly": true, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "documentStable": true, + "documentUnpolluted": true, + "fuseSolidUsedAsInput": true, + "nativeFeatureConstructed": true, + "nativeFeatureRejected": true, + "objectSetRestored": true, + "recomputeStatusCaptured": true, + "sourceShapeRestored": true + }, + "decision": "rejected", + "diagnostic": { + "exception": null, + "exceptionType": null, + "input": { + "sections": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "spine": { + "name": "Spine", + "subelements": [], + "typeId": "Part::Feature" + } + }, + "inputShape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "nativeTypeId": "Part::Sweep", + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + }, + { + "name": "Spine", + "typeId": "Part::Feature" + }, + { + "name": "PairResult", + "typeId": "Part::Sweep" + } + ], + "parameter": { + "name": "spineLength", + "value": 15 + }, + "recomputeResult": true, + "shapeNull": true, + "shapeValid": false, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "A fatal error occurred when making the sweep" + }, + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "nativeTypeId": "Part::Sweep", + "operation": "pipe", + "pair": "common->pipe", + "phases": { + "initial": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + } + ] + }, + "reopened": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + } + ] + }, + "resaved": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + } + ] + } + }, + "rollback": { + "after": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "brepSha256": "c71c52262e9cdfca74e475bddacccf1c17d3d1228438d792155ac652b7f5f55f", + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + } + }, + "before": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "brepSha256": "c71c52262e9cdfca74e475bddacccf1c17d3d1228438d792155ac652b7f5f55f", + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + } + } + }, + "schemaVersion": 1, + "source": { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "brepSha256": "c71c52262e9cdfca74e475bddacccf1c17d3d1228438d792155ac652b7f5f55f", + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + }, + "status": "pass" + } + } + }, + { + "taskId": "TSN-PAIR-common-revolution", + "pair": "common->revolution", + "classification": "rejected", + "reasonCode": "native-builder-and-freecad-profile-reject-with-clean-resave", + "nativeDecision": "rejected", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "63294261a55998087c3e83dd6b3a722ca78e8be7648b446e8010116ea63c8755", + "namingSemanticSha256": "3d4fae345d02422db8be58152341dc3b5a10a16a2a39246dc5927f0ae5f799ab" + }, + "rejection": { + "scope": "second-operation-only", + "authority": "occt-builder", + "parameter": "angle", + "trajectory": [ + 360, + 270, + 360 + ], + "stable": true, + "attempts": [ + { + "operation": "revolution", + "builder": "BRepPrimAPI_MakeRevol", + "inputCount": 1, + "parameter": "angle", + "parameterValue": 360, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + }, + { + "operation": "revolution", + "builder": "BRepPrimAPI_MakeRevol", + "inputCount": 1, + "parameter": "angle", + "parameterValue": 270, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + }, + { + "operation": "revolution", + "builder": "BRepPrimAPI_MakeRevol", + "inputCount": 1, + "parameter": "angle", + "parameterValue": 360, + "runtime": "occt-native", + "outcome": "rejected", + "resultProduced": false, + "shapeProduced": false, + "historyProduced": false, + "rejectionStage": "builder", + "exceptionTransport": "emscripten-cpp-exception", + "thrownType": "number" + } + ], + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "documentStable": true, + "documentUnpolluted": true, + "fuseSolidUsedAsInput": true, + "nativeFeatureConstructed": true, + "nativeFeatureRejected": true, + "objectSetRestored": true, + "recomputeStatusCaptured": true, + "sourceShapeRestored": true + }, + "decision": "rejected", + "diagnostic": { + "exception": null, + "exceptionType": null, + "input": { + "name": "Part__Feature", + "subelements": [], + "typeId": "Part::Feature" + }, + "inputShape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "nativeTypeId": "Part::Revolution", + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + }, + { + "name": "PairResult", + "typeId": "Part::Revolution" + } + ], + "parameter": { + "name": "angle", + "value": 360 + }, + "recomputeResult": true, + "shapeNull": true, + "shapeValid": false, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "Solids are not Processed" + }, + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "nativeTypeId": "Part::Revolution", + "operation": "revolution", + "pair": "common->revolution", + "phases": { + "initial": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + } + ] + }, + "reopened": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + } + ] + }, + "resaved": { + "objects": [ + { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + } + ] + } + }, + "rollback": { + "after": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "brepSha256": "c71c52262e9cdfca74e475bddacccf1c17d3d1228438d792155ac652b7f5f55f", + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + } + }, + "before": { + "objects": [ + { + "name": "Part__Feature", + "typeId": "Part::Feature" + } + ], + "sourceShape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "brepSha256": "c71c52262e9cdfca74e475bddacccf1c17d3d1228438d792155ac652b7f5f55f", + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + } + } + }, + "schemaVersion": 1, + "source": { + "name": "Part__Feature", + "shape": { + "area": 150, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "brepSha256": "c71c52262e9cdfca74e475bddacccf1c17d3d1228438d792155ac652b7f5f55f", + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 125 + }, + "typeId": "Part::Feature" + }, + "status": "pass" + } + } + }, + { + "taskId": "TSN-PAIR-common-groove", + "pair": "common->groove", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 5.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 105, + "selectedRecords": 0, + "ambiguousResults": 13, + "historySha256": "b6242fcfaaeeb1e1d7fd7b3dc79709f54fad657c32b2980338b96aeb4dac2130", + "namingEvidenceSha256": "f5f33339a8e533d00d81240a5c1a020f5749339319b84fec77934b2b0aa1a9f4", + "namingSemanticSha256": "3ef0f6afe66c055531688d1193adc3d983684044d210c850cff5cdbbe4a828e6" + }, + "second": { + "operation": "groove", + "builder": "BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 120.287611, + "area": 153.424778, + "bounds": [ + -2e-7, + -1e-7, + -1e-7, + 5.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 28, + "selectedRecords": 5, + "ambiguousResults": 12, + "historySha256": "3c4db374db56fbbd4a1a7434986a814a785553d9c5859473b3e515da2d250a7a", + "namingEvidenceSha256": "1ae589ffbd61ce9067273677fbbef729ba4830c49c3f029210ce17a18c2d5575", + "namingSemanticSha256": "28068c97c4f6620141018ff2b2c6e7b332c260afc451d3cf9483d2fa199e101b" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "angle", + "trajectory": [ + 360, + 180, + 360 + ], + "beforeValue": 360, + "editedValue": 180, + "restoredValue": 360, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "groove", + "builder": "BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 17, + "vertices": 12, + "volume": 125, + "area": 150, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 5.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 63, + "selectedRecords": 1, + "ambiguousResults": 8, + "historySha256": "497a0a0ff3034f377ff61341293120dbe0f3923fc3c1cf6152cf36418cd65730", + "namingEvidenceSha256": "8b24f8118922d5e8c83132d8923a7efc91b97006cfda48b48a8875a6c96b679a", + "namingSemanticSha256": "e24c4a8be3eeb42004db868be9b7c86d4b18971b38c36fb0538d2f98556b22ed" + }, + "restoredEvidence": { + "operation": "groove", + "builder": "BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 10, + "edges": 24, + "vertices": 16, + "volume": 120.287611, + "area": 153.424778, + "bounds": [ + -2e-7, + -1e-7, + -1e-7, + 5.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 28, + "selectedRecords": 5, + "ambiguousResults": 12, + "historySha256": "3c4db374db56fbbd4a1a7434986a814a785553d9c5859473b3e515da2d250a7a", + "namingEvidenceSha256": "c813e02fcbdd056b5911a0cd48020bd3e7f869feae5cd90ea514b311b6e1dec5", + "namingSemanticSha256": "28068c97c4f6620141018ff2b2c6e7b332c260afc451d3cf9483d2fa199e101b" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->groove", + "phases": { + "initial": { + "namingEvidenceBytes": 6086, + "namingEvidenceSha256": "1ae589ffbd61ce9067273677fbbef729ba4830c49c3f029210ce17a18c2d5575", + "pair": "common->groove", + "shape": { + "area": 153.424778, + "bounds": [ + 0, + 0, + 0, + 5, + 5, + 5 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 120.287611 + } + }, + "reopened": { + "namingEvidenceBytes": 6086, + "namingEvidenceSha256": "1ae589ffbd61ce9067273677fbbef729ba4830c49c3f029210ce17a18c2d5575", + "pair": "common->groove", + "shape": { + "area": 153.424778, + "bounds": [ + 0, + 0, + 0, + 5, + 5, + 5 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 120.287611 + } + }, + "resaved": { + "namingEvidenceBytes": 6086, + "namingEvidenceSha256": "1ae589ffbd61ce9067273677fbbef729ba4830c49c3f029210ce17a18c2d5575", + "pair": "common->groove", + "shape": { + "area": 153.424778, + "bounds": [ + 0, + 0, + 0, + 5, + 5, + 5 + ], + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 120.287611 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-fillet", + "pair": "common->fillet", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "135947b8f1e0a8824f30f6d77140858ba95a3bfea7779e24cf8c12b89eb0f19d", + "namingSemanticSha256": "53780fef9442ef7da9ad38e264b568846f26b5f678d22f98e1475f8c263fb3c9" + }, + "second": { + "operation": "fillet", + "builder": "BRepFilletAPI_MakeFillet", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 26, + "edges": 56, + "vertices": 24, + "volume": 123.0255334, + "area": 139.5178732, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 150, + "selectedRecords": 4, + "ambiguousResults": 22, + "historySha256": "174a5a268c990440fa62f4ec119f35cc7514c7cdb33b8345baf0559b418dac62", + "namingEvidenceSha256": "3d5e94779141fbb6e40934cacb659e8ce91b95639c7dc710bbd84251c43d58eb", + "namingSemanticSha256": "61a7edb0f1b67051e7c0db0e71b0d86485c4e492d14f98a03b4a236bc6907e50" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "radius", + "trajectory": [ + 0.4, + 0.6, + 0.4 + ], + "beforeValue": 0.4, + "editedValue": 0.6, + "restoredValue": 0.4, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "fillet", + "builder": "BRepFilletAPI_MakeFillet", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 26, + "edges": 56, + "vertices": 24, + "volume": 120.6538749, + "area": 134.1408809, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 150, + "selectedRecords": 4, + "ambiguousResults": 22, + "historySha256": "174a5a268c990440fa62f4ec119f35cc7514c7cdb33b8345baf0559b418dac62", + "namingEvidenceSha256": "d735265ef0dbe8a9af4b8ffda39524877b8f450354e2790fb6d9978b2146d46d", + "namingSemanticSha256": "61a7edb0f1b67051e7c0db0e71b0d86485c4e492d14f98a03b4a236bc6907e50" + }, + "restoredEvidence": { + "operation": "fillet", + "builder": "BRepFilletAPI_MakeFillet", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 26, + "edges": 56, + "vertices": 24, + "volume": 123.0255334, + "area": 139.5178732, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 150, + "selectedRecords": 4, + "ambiguousResults": 22, + "historySha256": "174a5a268c990440fa62f4ec119f35cc7514c7cdb33b8345baf0559b418dac62", + "namingEvidenceSha256": "496634b41f48bba79a66d708941c950757f690e83b7a2d9e60c856124026b33f", + "namingSemanticSha256": "61a7edb0f1b67051e7c0db0e71b0d86485c4e492d14f98a03b4a236bc6907e50" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->fillet", + "phases": { + "initial": { + "namingEvidenceBytes": 11270, + "namingEvidenceSha256": "3d5e94779141fbb6e40934cacb659e8ce91b95639c7dc710bbd84251c43d58eb", + "pair": "common->fillet", + "shape": { + "area": 139.5178732, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 56, + "faces": 26, + "solids": 1, + "valid": true, + "vertices": 24, + "volume": 123.0255334 + } + }, + "reopened": { + "namingEvidenceBytes": 11270, + "namingEvidenceSha256": "3d5e94779141fbb6e40934cacb659e8ce91b95639c7dc710bbd84251c43d58eb", + "pair": "common->fillet", + "shape": { + "area": 139.5178732, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 56, + "faces": 26, + "solids": 1, + "valid": true, + "vertices": 24, + "volume": 123.0255334 + } + }, + "resaved": { + "namingEvidenceBytes": 11270, + "namingEvidenceSha256": "3d5e94779141fbb6e40934cacb659e8ce91b95639c7dc710bbd84251c43d58eb", + "pair": "common->fillet", + "shape": { + "area": 139.5178732, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 56, + "faces": 26, + "solids": 1, + "valid": true, + "vertices": 24, + "volume": 123.0255334 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-chamfer", + "pair": "common->chamfer", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "20d0f3e59e1dd4a223d046f032da656b39f59a2d7c56f27508edfed6629ba6ee", + "namingSemanticSha256": "0543c18bb5b25ebc0df7a7182d5abe7f0e8cbb413a6fe030d7611d08ce796073" + }, + "second": { + "operation": "chamfer", + "builder": "BRepFilletAPI_MakeChamfer", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 26, + "edges": 48, + "vertices": 24, + "volume": 120.5413333, + "area": 135.4590579, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 150, + "selectedRecords": 4, + "ambiguousResults": 22, + "historySha256": "174a5a268c990440fa62f4ec119f35cc7514c7cdb33b8345baf0559b418dac62", + "namingEvidenceSha256": "cba2382550417a681545438c499ebab6b74fd7d6383732bba4a15c34e349d429", + "namingSemanticSha256": "1c29feae6bc041348183c49d73778dbc89445610e3865b3a1a30af8360517d02" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "distance", + "trajectory": [ + 0.4, + 0.6, + 0.4 + ], + "beforeValue": 0.4, + "editedValue": 0.6, + "restoredValue": 0.4, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "chamfer", + "builder": "BRepFilletAPI_MakeChamfer", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 26, + "edges": 48, + "vertices": 24, + "volume": 115.352, + "area": 127.8270362, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 150, + "selectedRecords": 4, + "ambiguousResults": 22, + "historySha256": "174a5a268c990440fa62f4ec119f35cc7514c7cdb33b8345baf0559b418dac62", + "namingEvidenceSha256": "5fdcc51608cddaf7b4049a04bad22760ed577897f584604dd3865b6e13a95eff", + "namingSemanticSha256": "1c29feae6bc041348183c49d73778dbc89445610e3865b3a1a30af8360517d02" + }, + "restoredEvidence": { + "operation": "chamfer", + "builder": "BRepFilletAPI_MakeChamfer", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 26, + "edges": 48, + "vertices": 24, + "volume": 120.5413333, + "area": 135.4590579, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 150, + "selectedRecords": 4, + "ambiguousResults": 22, + "historySha256": "174a5a268c990440fa62f4ec119f35cc7514c7cdb33b8345baf0559b418dac62", + "namingEvidenceSha256": "07dd39c3739551eca3032c848eb35ef1a1727784a45b957b68fb1557e8d6a851", + "namingSemanticSha256": "1c29feae6bc041348183c49d73778dbc89445610e3865b3a1a30af8360517d02" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->chamfer", + "phases": { + "initial": { + "namingEvidenceBytes": 11366, + "namingEvidenceSha256": "cba2382550417a681545438c499ebab6b74fd7d6383732bba4a15c34e349d429", + "pair": "common->chamfer", + "shape": { + "area": 135.4590579, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 48, + "faces": 26, + "solids": 1, + "valid": true, + "vertices": 24, + "volume": 120.5413333 + } + }, + "reopened": { + "namingEvidenceBytes": 11366, + "namingEvidenceSha256": "cba2382550417a681545438c499ebab6b74fd7d6383732bba4a15c34e349d429", + "pair": "common->chamfer", + "shape": { + "area": 135.4590579, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 48, + "faces": 26, + "solids": 1, + "valid": true, + "vertices": 24, + "volume": 120.5413333 + } + }, + "resaved": { + "namingEvidenceBytes": 11366, + "namingEvidenceSha256": "cba2382550417a681545438c499ebab6b74fd7d6383732bba4a15c34e349d429", + "pair": "common->chamfer", + "shape": { + "area": 135.4590579, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 48, + "faces": 26, + "solids": 1, + "valid": true, + "vertices": 24, + "volume": 120.5413333 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-hole", + "pair": "common->hole", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "6788ef422f06558fede8830a65fca7e74f7bae5a884b65d4bf89b7c38ce8f12f", + "namingSemanticSha256": "d394bb6af15e856395d7eb50545382060cda79e49c3fe2c609d90f780b666712" + }, + "second": { + "operation": "hole", + "builder": "BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 117.1460184, + "area": 152.5663706, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 30, + "selectedRecords": 2, + "ambiguousResults": 4, + "historySha256": "d0ad9dd2eb539178bd194d8d8911c81c37694cfe3b65766b48263e90f93bc058", + "namingEvidenceSha256": "81ef96456d4d9a3275b5902a93ec0b29c15735c561d056310612d42335733cab", + "namingSemanticSha256": "3c104de8a5f885527fb0053d7a8979f8b566cd5fc7a0b64d1911320a6a54d697" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "radius", + "trajectory": [ + 1, + 1.5, + 1 + ], + "beforeValue": 1, + "editedValue": 1.5, + "restoredValue": 1, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "hole", + "builder": "BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 109.2644676, + "area": 142.869547, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 47, + "selectedRecords": 3, + "ambiguousResults": 5, + "historySha256": "e2df67eb30fd4aec007bf8a9f953bb7a5826fd193f1bcef037dfaf0fd8168594", + "namingEvidenceSha256": "e904c449928f4f8b43df7ce43d01e98de6e0bf594e8004862227589f40999630", + "namingSemanticSha256": "15d8d2cedef3e9b9d0c79bd3f98119e6341078ab252e65168c860fa57536e803" + }, + "restoredEvidence": { + "operation": "hole", + "builder": "BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 117.1460184, + "area": 152.5663706, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 30, + "selectedRecords": 2, + "ambiguousResults": 4, + "historySha256": "d0ad9dd2eb539178bd194d8d8911c81c37694cfe3b65766b48263e90f93bc058", + "namingEvidenceSha256": "baac0e62617ad9040cc0ebc20acd5c1c946a5ee48ec81a2cb41fa917d806dc38", + "namingSemanticSha256": "3c104de8a5f885527fb0053d7a8979f8b566cd5fc7a0b64d1911320a6a54d697" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->hole", + "phases": { + "initial": { + "namingEvidenceBytes": 2580, + "namingEvidenceSha256": "81ef96456d4d9a3275b5902a93ec0b29c15735c561d056310612d42335733cab", + "pair": "common->hole", + "shape": { + "area": 152.5663706, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "vertices": 10, + "volume": 117.1460184 + } + }, + "reopened": { + "namingEvidenceBytes": 2580, + "namingEvidenceSha256": "81ef96456d4d9a3275b5902a93ec0b29c15735c561d056310612d42335733cab", + "pair": "common->hole", + "shape": { + "area": 152.5663706, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "vertices": 10, + "volume": 117.1460184 + } + }, + "resaved": { + "namingEvidenceBytes": 2580, + "namingEvidenceSha256": "81ef96456d4d9a3275b5902a93ec0b29c15735c561d056310612d42335733cab", + "pair": "common->hole", + "shape": { + "area": 152.5663706, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "vertices": 10, + "volume": 117.1460184 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-draft", + "pair": "common->draft", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "77fa69e84afeab7417729e64834f77c8f76118e70d1a6fe5b493c027d751adc8", + "namingSemanticSha256": "c2d1709ebbf5f1770441e1e0139c6e1cd8d30fd45a280f1084c3b838792767d8" + }, + "second": { + "operation": "draft", + "builder": "BRepOffsetAPI_DraftAngle", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 119.5319585, + "area": 145.7210628, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 5, + "selectedRecords": 3, + "ambiguousResults": 2, + "historySha256": "892f032e032350527d18612c7f3a1ada59c5014cb063799a04dcb1fb8edd5dad", + "namingEvidenceSha256": "e4032f7b1a155cb3783cc98fb90bca738458eeff7ac8705dd80399c0ec691d10", + "namingSemanticSha256": "70cb60bfed12b0f6e2b97ba3f1c91699dcad303f02fc180429fbcfc88a2bbc5b" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "angle", + "trajectory": [ + 5, + 8, + 5 + ], + "beforeValue": 5, + "editedValue": 8, + "restoredValue": 5, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "draft", + "builder": "BRepOffsetAPI_DraftAngle", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 116.2161978, + "area": 143.2186476, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 5, + "selectedRecords": 3, + "ambiguousResults": 2, + "historySha256": "892f032e032350527d18612c7f3a1ada59c5014cb063799a04dcb1fb8edd5dad", + "namingEvidenceSha256": "d9979c62c5d3e89afb6795f69c8bf420a94576286871549777240b1eadd02c9d", + "namingSemanticSha256": "70cb60bfed12b0f6e2b97ba3f1c91699dcad303f02fc180429fbcfc88a2bbc5b" + }, + "restoredEvidence": { + "operation": "draft", + "builder": "BRepOffsetAPI_DraftAngle", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 119.5319585, + "area": 145.7210628, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 5, + "selectedRecords": 3, + "ambiguousResults": 2, + "historySha256": "892f032e032350527d18612c7f3a1ada59c5014cb063799a04dcb1fb8edd5dad", + "namingEvidenceSha256": "d9979c62c5d3e89afb6795f69c8bf420a94576286871549777240b1eadd02c9d", + "namingSemanticSha256": "70cb60bfed12b0f6e2b97ba3f1c91699dcad303f02fc180429fbcfc88a2bbc5b" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->draft", + "phases": { + "initial": { + "namingEvidenceBytes": 2319, + "namingEvidenceSha256": "e4032f7b1a155cb3783cc98fb90bca738458eeff7ac8705dd80399c0ec691d10", + "pair": "common->draft", + "shape": { + "area": 145.7210628, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 119.5319585 + } + }, + "reopened": { + "namingEvidenceBytes": 2319, + "namingEvidenceSha256": "e4032f7b1a155cb3783cc98fb90bca738458eeff7ac8705dd80399c0ec691d10", + "pair": "common->draft", + "shape": { + "area": 145.7210628, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 119.5319585 + } + }, + "resaved": { + "namingEvidenceBytes": 2319, + "namingEvidenceSha256": "e4032f7b1a155cb3783cc98fb90bca738458eeff7ac8705dd80399c0ec691d10", + "pair": "common->draft", + "shape": { + "area": 145.7210628, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "vertices": 8, + "volume": 119.5319585 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-thickness", + "pair": "common->thickness", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "25400eb57ea2f0d3103bdc554613e1dd5e549cc929115c6e314cf3e5f1c52400", + "namingSemanticSha256": "ff01bc896141ecd2472d3735365ac8c860c4ad2394b9e49d964b964a03ae6e07" + }, + "second": { + "operation": "thickness", + "builder": "BRepOffsetAPI_MakeThickSolid", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 11, + "edges": 24, + "vertices": 16, + "volume": 43.856, + "area": 227.28, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 38, + "selectedRecords": 4, + "ambiguousResults": 10, + "historySha256": "aa204d4aa6adb782dfbd8caa8fe653c41371d2e03c06a44a33e252a8077384b6", + "namingEvidenceSha256": "c07f0f4db2f420ae2074e95d1582cbc3286bd3bb8ff7b94c6a4c7b2b88bbe46f", + "namingSemanticSha256": "fe5cd51236a9af17b09ce1e73f6a1347c2c711cd3a79fb112f063ea66bba07d6" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "offset", + "trajectory": [ + -0.4, + -0.6, + -0.4 + ], + "beforeValue": -0.4, + "editedValue": -0.6, + "restoredValue": -0.4, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "thickness", + "builder": "BRepOffsetAPI_MakeThickSolid", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 11, + "edges": 24, + "vertices": 16, + "volume": 61.464, + "area": 216.88, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 38, + "selectedRecords": 4, + "ambiguousResults": 10, + "historySha256": "aa204d4aa6adb782dfbd8caa8fe653c41371d2e03c06a44a33e252a8077384b6", + "namingEvidenceSha256": "d871dfb4825e7dd90bc390c309a845a17d6410f3d12b549d40effba9bb2c173e", + "namingSemanticSha256": "fe5cd51236a9af17b09ce1e73f6a1347c2c711cd3a79fb112f063ea66bba07d6" + }, + "restoredEvidence": { + "operation": "thickness", + "builder": "BRepOffsetAPI_MakeThickSolid", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 11, + "edges": 24, + "vertices": 16, + "volume": 43.856, + "area": 227.28, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 38, + "selectedRecords": 4, + "ambiguousResults": 10, + "historySha256": "aa204d4aa6adb782dfbd8caa8fe653c41371d2e03c06a44a33e252a8077384b6", + "namingEvidenceSha256": "a33735e85ed2d6a19a2d49931adde1c1b4dcdec6741a1d7225e355246f2b0ba7", + "namingSemanticSha256": "fe5cd51236a9af17b09ce1e73f6a1347c2c711cd3a79fb112f063ea66bba07d6" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->thickness", + "phases": { + "initial": { + "namingEvidenceBytes": 6316, + "namingEvidenceSha256": "c07f0f4db2f420ae2074e95d1582cbc3286bd3bb8ff7b94c6a4c7b2b88bbe46f", + "pair": "common->thickness", + "shape": { + "area": 227.28, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 24, + "faces": 11, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 43.856 + } + }, + "reopened": { + "namingEvidenceBytes": 6316, + "namingEvidenceSha256": "c07f0f4db2f420ae2074e95d1582cbc3286bd3bb8ff7b94c6a4c7b2b88bbe46f", + "pair": "common->thickness", + "shape": { + "area": 227.28, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 24, + "faces": 11, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 43.856 + } + }, + "resaved": { + "namingEvidenceBytes": 6316, + "namingEvidenceSha256": "c07f0f4db2f420ae2074e95d1582cbc3286bd3bb8ff7b94c6a4c7b2b88bbe46f", + "pair": "common->thickness", + "shape": { + "area": 227.28, + "bounds": [ + 4, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 24, + "faces": 11, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 43.856 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-linear-pattern", + "pair": "common->linear-pattern", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "fedf272adc3433248266ee0541b6269ccb63b5933c89f31e546d03d023b1e596", + "namingSemanticSha256": "797e8a756dc71ecac82cec5f78fc264aacda311f1396be81bda33f78db8caad1" + }, + "second": { + "operation": "linear-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 28, + "vertices": 16, + "volume": 225, + "area": 230, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 13.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 66, + "selectedRecords": 4, + "ambiguousResults": 16, + "historySha256": "777335aae7dc5c90e6c4b998820327f02354e64ae4d2647f026d99a2a24ba6b7", + "namingEvidenceSha256": "7eef0c24c8ff6a602622804a625609017b156629c8697e6878d38ed1b987418f", + "namingSemanticSha256": "ef1a87394da913e3b1272117e721253c03673dd31e3276b70b1f45932256e54f" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "translationX", + "trajectory": [ + 4, + 3, + 4 + ], + "beforeValue": 4, + "editedValue": 3, + "restoredValue": 4, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "linear-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 28, + "vertices": 16, + "volume": 200, + "area": 210, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 12.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 66, + "selectedRecords": 4, + "ambiguousResults": 16, + "historySha256": "777335aae7dc5c90e6c4b998820327f02354e64ae4d2647f026d99a2a24ba6b7", + "namingEvidenceSha256": "ff6d57f2a0db9f4958b8e4c594559a247658c9463d90dfb9b0f68af0032b5201", + "namingSemanticSha256": "ef1a87394da913e3b1272117e721253c03673dd31e3276b70b1f45932256e54f" + }, + "restoredEvidence": { + "operation": "linear-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 28, + "vertices": 16, + "volume": 225, + "area": 230, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 13.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 66, + "selectedRecords": 4, + "ambiguousResults": 16, + "historySha256": "777335aae7dc5c90e6c4b998820327f02354e64ae4d2647f026d99a2a24ba6b7", + "namingEvidenceSha256": "cfdd73f867383daf7d9f0e686144f45efe37c00cd7771f418bb3709ec9a251aa", + "namingSemanticSha256": "ef1a87394da913e3b1272117e721253c03673dd31e3276b70b1f45932256e54f" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->linear-pattern", + "phases": { + "initial": { + "namingEvidenceBytes": 7683, + "namingEvidenceSha256": "7eef0c24c8ff6a602622804a625609017b156629c8697e6878d38ed1b987418f", + "pair": "common->linear-pattern", + "shape": { + "area": 230, + "bounds": [ + 4, + 0, + 0, + 13, + 5, + 5 + ], + "edges": 28, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 225 + } + }, + "reopened": { + "namingEvidenceBytes": 7683, + "namingEvidenceSha256": "7eef0c24c8ff6a602622804a625609017b156629c8697e6878d38ed1b987418f", + "pair": "common->linear-pattern", + "shape": { + "area": 230, + "bounds": [ + 4, + 0, + 0, + 13, + 5, + 5 + ], + "edges": 28, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 225 + } + }, + "resaved": { + "namingEvidenceBytes": 7683, + "namingEvidenceSha256": "7eef0c24c8ff6a602622804a625609017b156629c8697e6878d38ed1b987418f", + "pair": "common->linear-pattern", + "shape": { + "area": 230, + "bounds": [ + 4, + 0, + 0, + 13, + 5, + 5 + ], + "edges": 28, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 225 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-polar-pattern", + "pair": "common->polar-pattern", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "4a69d0c35f7432708b9fe19ea0770d5fac35c9ee03fddba1f7aa27ef4d61b964", + "namingSemanticSha256": "2d1c3de6ee4f27f667df77dffd9643e23ae753b5ab742defe2a819b191d07716" + }, + "second": { + "operation": "polar-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 32, + "vertices": 20, + "volume": 220.0961894, + "area": 232.2649731, + "bounds": [ + 0.9641015, + -1e-7, + -1e-7, + 9.0000001, + 8.8301272, + 5.0000001 + ] + }, + "historyRecords": 48, + "selectedRecords": 4, + "ambiguousResults": 10, + "historySha256": "f64c8f69fec5ab1c7cb842673f45b2683ef1b265ab19a6a8b433d386ab49cb3c", + "namingEvidenceSha256": "5c9c2698f46252de114701a8d810c8e93a9653bec10840180390ccd72978a0de", + "namingSemanticSha256": "12295503b69126180aeb75976205c48692bb91ecb91db6e81c3e7730e8e55b12" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "angle", + "trajectory": [ + 30, + 45, + 30 + ], + "beforeValue": 30, + "editedValue": 45, + "restoredValue": 30, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "polar-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 15, + "edges": 33, + "vertices": 20, + "volume": 247.5, + "area": 281.9289322, + "bounds": [ + -0.7071069, + -1e-7, + -1e-7, + 9.0000001, + 9.8994951, + 5.0000001 + ] + }, + "historyRecords": 42, + "selectedRecords": 4, + "ambiguousResults": 10, + "historySha256": "58688ab724eb333eff9960d17cfb6b56675ba38b750dea2482f396e6deb43ebe", + "namingEvidenceSha256": "fd5c92cb1cbd58510a746cdb747bb11944fec771e209a0da0cc79bad284b2992", + "namingSemanticSha256": "06a0096eb226edb498f50d929dcc58e2f29d243a8befea9cd56777d420c3ed17" + }, + "restoredEvidence": { + "operation": "polar-pattern", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 32, + "vertices": 20, + "volume": 220.0961894, + "area": 232.2649731, + "bounds": [ + 0.9641015, + -1e-7, + -1e-7, + 9.0000001, + 8.8301272, + 5.0000001 + ] + }, + "historyRecords": 48, + "selectedRecords": 4, + "ambiguousResults": 10, + "historySha256": "f64c8f69fec5ab1c7cb842673f45b2683ef1b265ab19a6a8b433d386ab49cb3c", + "namingEvidenceSha256": "fb7f9f360c68652ab636dc35989ebcae4a5fd8486ba203d6bd5dc1b5586cd387", + "namingSemanticSha256": "12295503b69126180aeb75976205c48692bb91ecb91db6e81c3e7730e8e55b12" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->polar-pattern", + "phases": { + "initial": { + "namingEvidenceBytes": 5355, + "namingEvidenceSha256": "5c9c2698f46252de114701a8d810c8e93a9653bec10840180390ccd72978a0de", + "pair": "common->polar-pattern", + "shape": { + "area": 232.2649731, + "bounds": [ + 0.9641016, + 0, + 0, + 9, + 8.830127, + 5 + ], + "edges": 32, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 20, + "volume": 220.0961894 + } + }, + "reopened": { + "namingEvidenceBytes": 5355, + "namingEvidenceSha256": "5c9c2698f46252de114701a8d810c8e93a9653bec10840180390ccd72978a0de", + "pair": "common->polar-pattern", + "shape": { + "area": 232.2649731, + "bounds": [ + 0.9641016, + 0, + 0, + 9, + 8.830127, + 5 + ], + "edges": 32, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 20, + "volume": 220.0961894 + } + }, + "resaved": { + "namingEvidenceBytes": 5355, + "namingEvidenceSha256": "5c9c2698f46252de114701a8d810c8e93a9653bec10840180390ccd72978a0de", + "pair": "common->polar-pattern", + "shape": { + "area": 232.2649731, + "bounds": [ + 0.9641016, + 0, + 0, + 9, + 8.830127, + 5 + ], + "edges": 32, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 20, + "volume": 220.0961894 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-mirrored", + "pair": "common->mirrored", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "9b8d40a39cb5bc2ca89c6f6ecda11b3ca49eba372e75652c4f2093f33691de64", + "namingSemanticSha256": "5e08aa900974fb450e2fdced46693fa45d51f0856abd20cec569a9d26351c12f" + }, + "second": { + "operation": "mirrored", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 28, + "vertices": 16, + "volume": 200, + "area": 210, + "bounds": [ + 0.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 66, + "selectedRecords": 4, + "ambiguousResults": 16, + "historySha256": "46e785b97021d06ea4f9af648d877c82245e13d47589b3b7cce96fa3982ecda2", + "namingEvidenceSha256": "6b0164c93a2c50fd56b88db2100a4799ada690b101122217c758f286c48684bd", + "namingSemanticSha256": "49d4bc54ac38259b2dc8f4b6e912a9b206290e4628f81c99c0ecfaa45743ce3e" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "planeOriginX", + "trajectory": [ + 5, + 6, + 5 + ], + "beforeValue": 5, + "editedValue": 6, + "restoredValue": 5, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "mirrored", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 28, + "vertices": 16, + "volume": 150, + "area": 170, + "bounds": [ + 2.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 66, + "selectedRecords": 4, + "ambiguousResults": 16, + "historySha256": "46e785b97021d06ea4f9af648d877c82245e13d47589b3b7cce96fa3982ecda2", + "namingEvidenceSha256": "d17ef9d77ee48387b914bd49ef3ae027abde508f8e1e8c17fab5c78a06f76929", + "namingSemanticSha256": "49d4bc54ac38259b2dc8f4b6e912a9b206290e4628f81c99c0ecfaa45743ce3e" + }, + "restoredEvidence": { + "operation": "mirrored", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 14, + "edges": 28, + "vertices": 16, + "volume": 200, + "area": 210, + "bounds": [ + 0.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 66, + "selectedRecords": 4, + "ambiguousResults": 16, + "historySha256": "46e785b97021d06ea4f9af648d877c82245e13d47589b3b7cce96fa3982ecda2", + "namingEvidenceSha256": "68b0e9ce7be2f62dfc39825e7f6ba15c3186ca90805f1a12ecdc600c153e858c", + "namingSemanticSha256": "49d4bc54ac38259b2dc8f4b6e912a9b206290e4628f81c99c0ecfaa45743ce3e" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->mirrored", + "phases": { + "initial": { + "namingEvidenceBytes": 7528, + "namingEvidenceSha256": "6b0164c93a2c50fd56b88db2100a4799ada690b101122217c758f286c48684bd", + "pair": "common->mirrored", + "shape": { + "area": 210, + "bounds": [ + 1, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 28, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 200 + } + }, + "reopened": { + "namingEvidenceBytes": 7528, + "namingEvidenceSha256": "6b0164c93a2c50fd56b88db2100a4799ada690b101122217c758f286c48684bd", + "pair": "common->mirrored", + "shape": { + "area": 210, + "bounds": [ + 1, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 28, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 200 + } + }, + "resaved": { + "namingEvidenceBytes": 7528, + "namingEvidenceSha256": "6b0164c93a2c50fd56b88db2100a4799ada690b101122217c758f286c48684bd", + "pair": "common->mirrored", + "shape": { + "area": 210, + "bounds": [ + 1, + 0, + 0, + 9, + 5, + 5 + ], + "edges": 28, + "faces": 14, + "solids": 1, + "valid": true, + "vertices": 16, + "volume": 200 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-common-multi-transform", + "pair": "common->multi-transform", + "classification": "accepted", + "reasonCode": "native-builders-mutation-naming-and-fcstd-resave-pass", + "nativeDecision": "accepted", + "first": { + "operation": "common", + "builder": "BRepAlgoAPI_Common", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 125, + "area": 150, + "bounds": [ + 3.9999999, + -1e-7, + -1e-7, + 9.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 94, + "selectedRecords": 0, + "ambiguousResults": 9, + "historySha256": "f8c467f04e10852717143c8f3fb2302b0c4d51df6adcc6d9142fff1fc7495655", + "namingEvidenceSha256": "c2192ad2c731991fcdd1ad65def37d01df866652e336ca42a3cb389bf41acd20", + "namingSemanticSha256": "957c8d37557a4c53a6d3398eca21633d51289740663a056fef69c6cae6dce49e" + }, + "second": { + "operation": "multi-transform", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 30, + "edges": 60, + "vertices": 32, + "volume": 400, + "area": 370, + "bounds": [ + -3.0000001, + -1e-7, + -1e-7, + 13.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 367, + "selectedRecords": 16, + "ambiguousResults": 106, + "historySha256": "1f491fe07aa7343e1872d1c00ea6ee6241b5128ac0c7fcddb7c0e0627774478a", + "namingEvidenceSha256": "c6e7b8a54318401321c5381f3772b1df8cac678e6feccc97963afbd08096e906", + "namingSemanticSha256": "c9bdb4a86f99cdea83bcb08fba7088c27424d444ac5f554289417f2944195b53" + }, + "mutation": { + "scope": "second-operation-only", + "parameter": "multiTranslationX", + "trajectory": [ + 4, + 3, + 4 + ], + "beforeValue": 4, + "editedValue": 3, + "restoredValue": 4, + "changed": true, + "restoredExactly": true, + "editedEvidence": { + "operation": "multi-transform", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 30, + "edges": 60, + "vertices": 32, + "volume": 350, + "area": 330, + "bounds": [ + -2.0000001, + -1e-7, + -1e-7, + 12.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 367, + "selectedRecords": 16, + "ambiguousResults": 106, + "historySha256": "1f491fe07aa7343e1872d1c00ea6ee6241b5128ac0c7fcddb7c0e0627774478a", + "namingEvidenceSha256": "66c2a2015b152039988102e651cbca144e7563730d736ef0f078b4e19780f8ec", + "namingSemanticSha256": "c9bdb4a86f99cdea83bcb08fba7088c27424d444ac5f554289417f2944195b53" + }, + "restoredEvidence": { + "operation": "multi-transform", + "builder": "BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)", + "inputCount": 1, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 30, + "edges": 60, + "vertices": 32, + "volume": 400, + "area": 370, + "bounds": [ + -3.0000001, + -1e-7, + -1e-7, + 13.0000001, + 5.0000001, + 5.0000001 + ] + }, + "historyRecords": 367, + "selectedRecords": 16, + "ambiguousResults": 106, + "historySha256": "1f491fe07aa7343e1872d1c00ea6ee6241b5128ac0c7fcddb7c0e0627774478a", + "namingEvidenceSha256": "d4ecdd5815733e486e12b4250d6f442205246ff0b57ec83c39481a699d2b951c", + "namingSemanticSha256": "c9bdb4a86f99cdea83bcb08fba7088c27424d444ac5f554289417f2944195b53" + } + }, + "naming": { + "upstreamEvidenceRestored": true, + "downstreamEvidence": true, + "jsonRoundtripStable": true + }, + "persistence": { + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "checks": { + "namingEvidenceStable": true, + "shapeStable": true + }, + "decision": "accepted", + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "pair": "common->multi-transform", + "phases": { + "initial": { + "namingEvidenceBytes": 53369, + "namingEvidenceSha256": "c6e7b8a54318401321c5381f3772b1df8cac678e6feccc97963afbd08096e906", + "pair": "common->multi-transform", + "shape": { + "area": 370, + "bounds": [ + -3, + 0, + 0, + 13, + 5, + 5 + ], + "edges": 60, + "faces": 30, + "solids": 1, + "valid": true, + "vertices": 32, + "volume": 400 + } + }, + "reopened": { + "namingEvidenceBytes": 53369, + "namingEvidenceSha256": "c6e7b8a54318401321c5381f3772b1df8cac678e6feccc97963afbd08096e906", + "pair": "common->multi-transform", + "shape": { + "area": 370, + "bounds": [ + -3, + 0, + 0, + 13, + 5, + 5 + ], + "edges": 60, + "faces": 30, + "solids": 1, + "valid": true, + "vertices": 32, + "volume": 400 + } + }, + "resaved": { + "namingEvidenceBytes": 53369, + "namingEvidenceSha256": "c6e7b8a54318401321c5381f3772b1df8cac678e6feccc97963afbd08096e906", + "pair": "common->multi-transform", + "shape": { + "area": 370, + "bounds": [ + -3, + 0, + 0, + 13, + 5, + 5 + ], + "edges": 60, + "faces": 30, + "solids": 1, + "valid": true, + "vertices": 32, + "volume": 400 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } } ], "summary": { "registeredOperations": 19, "orderedPairs": 361, - "classifiedPairs": 8, - "accepted": 5, - "rejected": 3, - "unknown": 353 + "classifiedPairs": 56, + "accepted": 44, + "rejected": 12, + "unknown": 305 } } diff --git a/docs/freecad-active-work-status.generated.zh-CN.md b/docs/freecad-active-work-status.generated.zh-CN.md index ce1d87d..e21c957 100644 --- a/docs/freecad-active-work-status.generated.zh-CN.md +++ b/docs/freecad-active-work-status.generated.zh-CN.md @@ -3,9 +3,9 @@ 生成日期:2026-08-15。基线:FreeCAD 1.1.1 / `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d`。 -- 唯一活动任务:`TSN-PAIR-fuse-revolution` -- 微任务:1756 total / 138 completed / 1 in_progress / 1617 pending -- 有序操作对:12/361 classified / 349 unknown +- 唯一活动任务:`TSN-PAIR-rotate-fuse` +- 微任务:1756 total / 186 completed / 1 in_progress / 1569 pending +- 有序操作对:60/361 classified / 301 unknown - Property:27/85 native types / 58 opaque types - exact 任务:5/52 completed - 模块能力:0 exact / 26 compatible / 5 proxy / 3 development @@ -15,7 +15,7 @@ | `ORA-GUI-BASELINE` | 106 | 106 | 0 | 0 | `-` | | `ORA-GUI-WORKFLOWS` | 7 | 7 | 0 | 0 | `-` | | `TSN-RECOVERY-DRIFT` | 13 | 13 | 0 | 0 | `-` | -| `TSN-ORDERED-PAIRS` | 361 | 12 | 1 | 348 | `TSN-PAIR-fuse-revolution` | +| `TSN-ORDERED-PAIRS` | 361 | 60 | 1 | 300 | `TSN-PAIR-rotate-fuse` | | `PROPERTY-CODECS` | 522 | 0 | 0 | 522 | `-` | | `DOCUMENT-SEMANTICS` | 90 | 0 | 0 | 90 | `-` | | `CORE-MODELING` | 171 | 0 | 0 | 171 | `-` | diff --git a/scripts/check-freecad-ordered-operation-pair-classification.mjs b/scripts/check-freecad-ordered-operation-pair-classification.mjs index 7c5adc4..b689f1b 100644 --- a/scripts/check-freecad-ordered-operation-pair-classification.mjs +++ b/scripts/check-freecad-ordered-operation-pair-classification.mjs @@ -22,16 +22,66 @@ const expectedPairs = [ { pair: 'fuse->cut', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepAlgoAPI_Cut', secondInputCount: 2, mutationParameter: 'toolSize', mutationTrajectory: [4, 3, 4] }, { pair: 'fuse->common', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepAlgoAPI_Common', secondInputCount: 2, mutationParameter: 'toolOffsetX', mutationTrajectory: [10, 9, 10] }, { pair: 'fuse->rotate', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepBuilderAPI_Transform', secondInputCount: 1, mutationParameter: 'angle', mutationTrajectory: [15, 22.5, 15] }, - { pair: 'fuse->pad', decision: 'rejected', reasonCode: 'native-builder-and-freecad-profile-reject-with-clean-resave', rejectionAuthority: 'occt-builder', secondBuilder: 'BRepPrimAPI_MakePrism', secondInputCount: 1, mutationParameter: 'length', mutationTrajectory: [5, 7.5, 5], nativeTypeId: 'PartDesign::Pad' }, + { pair: 'fuse->pad', decision: 'rejected', reasonCode: 'native-builder-and-freecad-profile-reject-with-clean-resave', rejectionAuthority: 'occt-builder', secondBuilder: 'BRepPrimAPI_MakePrism', secondInputCount: 1, mutationParameter: 'length', mutationTrajectory: [5, 7.5, 5], nativeTypeId: 'PartDesign::Pad', freeCadDiagnostic: 'FeatureExtrusion: Length: Could not extrude the sketch!' }, { pair: 'fuse->pocket', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut', secondInputCount: 2, mutationParameter: 'length', mutationTrajectory: [5, 4, 5] }, { pair: 'fuse->loft', decision: 'rejected', reasonCode: 'freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave', rejectionAuthority: 'freecad-document', kernelOutcome: 'accepted', secondBuilder: 'BRepOffsetAPI_ThruSections', secondInputCount: 2, mutationParameter: 'ruled', mutationTrajectory: [false, true, false], nativeTypeId: 'Part::Loft', freeCadDiagnostic: 'Profile shape is not a single vertex, edge, wire nor face.' }, { pair: 'fuse->pipe', decision: 'rejected', reasonCode: 'freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave', rejectionAuthority: 'freecad-document', kernelOutcome: 'invalid-result', secondBuilder: 'BRepOffsetAPI_MakePipe', secondInputCount: 2, mutationParameter: 'spineLength', mutationTrajectory: [15, 12, 15], nativeTypeId: 'Part::Sweep', freeCadDiagnostic: 'A fatal error occurred when making the sweep' }, + { pair: 'fuse->revolution', decision: 'rejected', reasonCode: 'native-builder-and-freecad-profile-reject-with-clean-resave', rejectionAuthority: 'occt-builder', secondBuilder: 'BRepPrimAPI_MakeRevol', secondInputCount: 1, mutationParameter: 'angle', mutationTrajectory: [360, 270, 360], nativeTypeId: 'Part::Revolution', freeCadDiagnostic: 'Solids are not Processed' }, + { pair: 'fuse->groove', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut', secondInputCount: 2, mutationParameter: 'angle', mutationTrajectory: [360, 180, 360] }, + { pair: 'fuse->fillet', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepFilletAPI_MakeFillet', secondInputCount: 1, mutationParameter: 'radius', mutationTrajectory: [0.4, 0.6, 0.4] }, + { pair: 'fuse->chamfer', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepFilletAPI_MakeChamfer', secondInputCount: 1, mutationParameter: 'distance', mutationTrajectory: [0.4, 0.6, 0.4] }, + { pair: 'fuse->hole', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut', secondInputCount: 1, mutationParameter: 'radius', mutationTrajectory: [1, 1.5, 1] }, + { pair: 'fuse->draft', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepOffsetAPI_DraftAngle', secondInputCount: 1, mutationParameter: 'angle', mutationTrajectory: [5, 8, 5] }, + { pair: 'fuse->thickness', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepOffsetAPI_MakeThickSolid', secondInputCount: 1, mutationParameter: 'offset', mutationTrajectory: [-0.4, -0.6, -0.4] }, + { pair: 'fuse->linear-pattern', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse', secondInputCount: 1, mutationParameter: 'translationX', mutationTrajectory: [8, 9, 8] }, + { pair: 'fuse->polar-pattern', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse', secondInputCount: 1, mutationParameter: 'angle', mutationTrajectory: [30, 45, 30] }, + { pair: 'fuse->mirrored', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse', secondInputCount: 1, mutationParameter: 'planeOriginX', mutationTrajectory: [5, 6, 5] }, + { pair: 'fuse->multi-transform', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)', secondInputCount: 1, mutationParameter: 'multiTranslationX', mutationTrajectory: [8, 9, 8] }, + { pair: 'cut->fuse', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepAlgoAPI_Fuse', secondInputCount: 2, mutationParameter: 'toolOffsetX', mutationTrajectory: [8, 9, 8] }, + { pair: 'cut->cut', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepAlgoAPI_Cut', secondInputCount: 2, mutationParameter: 'toolSize', mutationTrajectory: [3, 4, 3] }, + { pair: 'cut->common', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepAlgoAPI_Common', secondInputCount: 2, mutationParameter: 'toolOffsetX', mutationTrajectory: [4, 5, 4] }, + { pair: 'cut->pad', decision: 'rejected', reasonCode: 'native-builder-and-freecad-profile-reject-with-clean-resave', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, rejectionAuthority: 'occt-builder', secondBuilder: 'BRepPrimAPI_MakePrism', secondInputCount: 1, mutationParameter: 'length', mutationTrajectory: [5, 7.5, 5], nativeTypeId: 'PartDesign::Pad', freeCadDiagnostic: 'FeatureExtrusion: Length: Could not extrude the sketch!' }, + { pair: 'cut->pocket', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut', secondInputCount: 2, mutationParameter: 'length', mutationTrajectory: [5, 4, 5] }, + { pair: 'cut->loft', decision: 'rejected', reasonCode: 'freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, rejectionAuthority: 'freecad-document', kernelOutcome: 'accepted', secondBuilder: 'BRepOffsetAPI_ThruSections', secondInputCount: 2, mutationParameter: 'ruled', mutationTrajectory: [false, true, false], nativeTypeId: 'Part::Loft', freeCadDiagnostic: 'Profile shape is not a single vertex, edge, wire nor face.' }, + { pair: 'cut->pipe', decision: 'rejected', reasonCode: 'freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, rejectionAuthority: 'freecad-document', kernelOutcome: 'invalid-result', secondBuilder: 'BRepOffsetAPI_MakePipe', secondInputCount: 2, mutationParameter: 'spineLength', mutationTrajectory: [15, 12, 15], nativeTypeId: 'Part::Sweep', freeCadDiagnostic: 'A fatal error occurred when making the sweep' }, + { pair: 'cut->revolution', decision: 'rejected', reasonCode: 'native-builder-and-freecad-profile-reject-with-clean-resave', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, rejectionAuthority: 'occt-builder', secondBuilder: 'BRepPrimAPI_MakeRevol', secondInputCount: 1, mutationParameter: 'angle', mutationTrajectory: [360, 270, 360], nativeTypeId: 'Part::Revolution', freeCadDiagnostic: 'Solids are not Processed' }, + { pair: 'cut->groove', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut', secondInputCount: 2, mutationParameter: 'angle', mutationTrajectory: [360, 180, 360] }, + { pair: 'cut->fillet', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepFilletAPI_MakeFillet', secondInputCount: 1, mutationParameter: 'radius', mutationTrajectory: [0.4, 0.6, 0.4] }, + { pair: 'cut->chamfer', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepFilletAPI_MakeChamfer', secondInputCount: 1, mutationParameter: 'distance', mutationTrajectory: [0.4, 0.6, 0.4] }, + { pair: 'cut->hole', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut', secondInputCount: 1, mutationParameter: 'radius', mutationTrajectory: [1, 1.5, 1] }, + { pair: 'cut->draft', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepOffsetAPI_DraftAngle', secondInputCount: 1, mutationParameter: 'angle', mutationTrajectory: [5, 8, 5] }, + { pair: 'cut->thickness', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepOffsetAPI_MakeThickSolid', secondInputCount: 1, mutationParameter: 'offset', mutationTrajectory: [-0.4, -0.6, -0.4] }, + { pair: 'cut->linear-pattern', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse', secondInputCount: 1, mutationParameter: 'translationX', mutationTrajectory: [8, 9, 8] }, + { pair: 'cut->polar-pattern', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse', secondInputCount: 1, mutationParameter: 'angle', mutationTrajectory: [30, 45, 30] }, + { pair: 'cut->mirrored', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse', secondInputCount: 1, mutationParameter: 'planeOriginX', mutationTrajectory: [5, 6, 5] }, + { pair: 'cut->multi-transform', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Cut', firstInputCount: 2, secondBuilder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)', secondInputCount: 1, mutationParameter: 'multiTranslationX', mutationTrajectory: [8, 9, 8] }, + { pair: 'common->fuse', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepAlgoAPI_Fuse', secondInputCount: 2, mutationParameter: 'toolOffsetX', mutationTrajectory: [8, 7, 8] }, + { pair: 'common->cut', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepAlgoAPI_Cut', secondInputCount: 2, mutationParameter: 'toolSize', mutationTrajectory: [4, 3, 4] }, + { pair: 'common->common', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepAlgoAPI_Common', secondInputCount: 2, mutationParameter: 'toolOffsetX', mutationTrajectory: [7, 6, 7] }, + { pair: 'common->rotate', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepBuilderAPI_Transform', secondInputCount: 1, mutationParameter: 'angle', mutationTrajectory: [15, 22.5, 15] }, + { pair: 'common->pad', decision: 'rejected', reasonCode: 'native-builder-and-freecad-profile-reject-with-clean-resave', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, rejectionAuthority: 'occt-builder', secondBuilder: 'BRepPrimAPI_MakePrism', secondInputCount: 1, mutationParameter: 'length', mutationTrajectory: [5, 7.5, 5], nativeTypeId: 'PartDesign::Pad', freeCadDiagnostic: 'FeatureExtrusion: Length: Could not extrude the sketch!' }, + { pair: 'common->pocket', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut', secondInputCount: 2, mutationParameter: 'length', mutationTrajectory: [5, 4, 5] }, + { pair: 'common->loft', decision: 'rejected', reasonCode: 'freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, rejectionAuthority: 'freecad-document', kernelOutcome: 'accepted', secondBuilder: 'BRepOffsetAPI_ThruSections', secondInputCount: 2, mutationParameter: 'ruled', mutationTrajectory: [false, true, false], nativeTypeId: 'Part::Loft', freeCadDiagnostic: 'Profile shape is not a single vertex, edge, wire nor face.' }, + { pair: 'common->pipe', decision: 'rejected', reasonCode: 'freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, rejectionAuthority: 'freecad-document', kernelOutcome: 'invalid-result', secondBuilder: 'BRepOffsetAPI_MakePipe', secondInputCount: 2, mutationParameter: 'spineLength', mutationTrajectory: [15, 12, 15], nativeTypeId: 'Part::Sweep', freeCadDiagnostic: 'A fatal error occurred when making the sweep' }, + { pair: 'common->revolution', decision: 'rejected', reasonCode: 'native-builder-and-freecad-profile-reject-with-clean-resave', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, rejectionAuthority: 'occt-builder', secondBuilder: 'BRepPrimAPI_MakeRevol', secondInputCount: 1, mutationParameter: 'angle', mutationTrajectory: [360, 270, 360], nativeTypeId: 'Part::Revolution', freeCadDiagnostic: 'Solids are not Processed' }, + { pair: 'common->groove', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut', secondInputCount: 2, mutationParameter: 'angle', mutationTrajectory: [360, 180, 360] }, + { pair: 'common->fillet', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepFilletAPI_MakeFillet', secondInputCount: 1, mutationParameter: 'radius', mutationTrajectory: [0.4, 0.6, 0.4] }, + { pair: 'common->chamfer', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepFilletAPI_MakeChamfer', secondInputCount: 1, mutationParameter: 'distance', mutationTrajectory: [0.4, 0.6, 0.4] }, + { pair: 'common->hole', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut', secondInputCount: 1, mutationParameter: 'radius', mutationTrajectory: [1, 1.5, 1] }, + { pair: 'common->draft', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepOffsetAPI_DraftAngle', secondInputCount: 1, mutationParameter: 'angle', mutationTrajectory: [5, 8, 5] }, + { pair: 'common->thickness', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepOffsetAPI_MakeThickSolid', secondInputCount: 1, mutationParameter: 'offset', mutationTrajectory: [-0.4, -0.6, -0.4] }, + { pair: 'common->linear-pattern', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse', secondInputCount: 1, mutationParameter: 'translationX', mutationTrajectory: [4, 3, 4] }, + { pair: 'common->polar-pattern', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse', secondInputCount: 1, mutationParameter: 'angle', mutationTrajectory: [30, 45, 30] }, + { pair: 'common->mirrored', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse', secondInputCount: 1, mutationParameter: 'planeOriginX', mutationTrajectory: [5, 6, 5] }, + { pair: 'common->multi-transform', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', firstBuilder: 'BRepAlgoAPI_Common', firstInputCount: 2, secondBuilder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)', secondInputCount: 1, mutationParameter: 'multiTranslationX', mutationTrajectory: [4, 3, 4] }, ] if (report.nativeProbe?.artifacts?.length !== 3 || report.classifications?.length !== expectedPairs.length) fail('native artifacts or classification prefix is incomplete.') for (const [index, entry] of report.classifications.entries()) { const expected = expectedPairs[index] - const secondOperation = expected.pair.split('->')[1] - if (entry.taskId !== `TSN-PAIR-${expected.pair.replace('->', '-')}` || entry.pair !== expected.pair || entry.classification !== expected.decision || entry.reasonCode !== expected.reasonCode || entry.nativeDecision !== expected.decision || entry.first?.operation !== 'fuse' || entry.first.builder !== 'BRepAlgoAPI_Fuse' || entry.first.inputCount !== 2 || entry.first.historyProvider !== 'occt-native' || entry.first.summary?.isValid !== true || entry.first.historyRecords < 1) fail(`${expected.pair} decision contract is invalid.`) + const [firstOperation, secondOperation] = expected.pair.split('->') + const firstBuilder = expected.firstBuilder ?? 'BRepAlgoAPI_Fuse' + const firstInputCount = expected.firstInputCount ?? 2 + if (entry.taskId !== `TSN-PAIR-${expected.pair.replace('->', '-')}` || entry.pair !== expected.pair || entry.classification !== expected.decision || entry.reasonCode !== expected.reasonCode || entry.nativeDecision !== expected.decision || entry.first?.operation !== firstOperation || entry.first.builder !== firstBuilder || entry.first.inputCount !== firstInputCount || entry.first.historyProvider !== 'occt-native' || entry.first.summary?.isValid !== true || entry.first.historyRecords < 1) fail(`${expected.pair} decision contract is invalid.`) if (expected.decision === 'rejected') { if ('second' in entry || 'mutation' in entry || 'naming' in entry) fail(`${expected.pair} fabricates evidence for a result that FreeCAD rejected.`) const rejection = entry.rejection @@ -50,10 +100,10 @@ for (const [index, entry] of report.classifications.entries()) { const diagnostic = persistence?.diagnostic if (persistence?.status !== 'pass' || persistence.decision !== 'rejected' || persistence.pair !== entry.pair || persistence.operation !== secondOperation || persistence.nativeTypeId !== expected.nativeTypeId || persistence.freecadVersion !== '1.1.1' || !Object.values(persistence.checks ?? {}).every(Boolean)) fail(`${expected.pair} FCStd rejection evidence is incomplete.`) if (diagnostic?.nativeTypeId !== expected.nativeTypeId || diagnostic.parameter?.name !== expected.mutationParameter || diagnostic.parameter.value !== expected.mutationTrajectory[0] || diagnostic.inputShape?.solids !== 1 || diagnostic.recomputeResult !== true || diagnostic.shapeNull !== true || diagnostic.shapeValid !== false || !diagnostic.state?.includes('Invalid') || diagnostic.statusString === 'Valid' || !diagnostic.objects?.some(({ name, typeId }) => name === 'PairResult' && typeId === expected.nativeTypeId)) fail(`${expected.pair} did not capture a real rejected FreeCAD recompute.`) - if (expected.rejectionAuthority === 'freecad-document' && diagnostic.statusString !== expected.freeCadDiagnostic) fail(`${expected.pair} FreeCAD profile diagnostic changed.`) + if (expected.freeCadDiagnostic && diagnostic.statusString !== expected.freeCadDiagnostic) fail(`${expected.pair} FreeCAD profile diagnostic changed.`) if (persistence.source?.shape?.solids !== 1 || !persistence.source.shape.brepSha256 || JSON.stringify(persistence.rollback?.before) !== JSON.stringify(persistence.rollback?.after)) fail(`${expected.pair} abort did not restore the source object set and Shape.`) const phases = persistence.phases - if (JSON.stringify(phases?.initial) !== JSON.stringify(phases?.reopened) || JSON.stringify(phases?.initial) !== JSON.stringify(phases?.resaved) || phases.initial.objects?.length !== persistence.rollback.before.objects.length || phases.initial.objects?.some(({ typeId }) => typeId === 'PartDesign::Body' || typeId === 'PartDesign::Pad' || typeId === 'Part::Loft')) fail(`${expected.pair} polluted the clean FCStd save/reopen/resave chain.`) + if (JSON.stringify(phases?.initial) !== JSON.stringify(phases?.reopened) || JSON.stringify(phases?.initial) !== JSON.stringify(phases?.resaved) || phases.initial.objects?.length !== persistence.rollback.before.objects.length || phases.initial.objects?.some(({ typeId }) => typeId === 'PartDesign::Body' || typeId === 'PartDesign::Pad' || typeId === 'Part::Loft' || typeId === 'Part::Revolution')) fail(`${expected.pair} polluted the clean FCStd save/reopen/resave chain.`) continue } if (entry.second?.operation !== secondOperation || entry.second.builder !== expected.secondBuilder || entry.second.inputCount !== expected.secondInputCount || entry.second.historyProvider !== 'occt-native') fail(`${expected.pair} accepted second operation is invalid.`) @@ -66,6 +116,6 @@ for (const [index, entry] of report.classifications.entries()) { const phases = entry.persistence.phases if (JSON.stringify(phases?.initial) !== JSON.stringify(phases?.reopened) || JSON.stringify(phases?.initial) !== JSON.stringify(phases?.resaved) || phases.initial.namingEvidenceSha256 !== entry.second.namingEvidenceSha256) fail(`${expected.pair} FCStd phases changed Shape or naming evidence.`) } -const expectedSummary = { registeredOperations: 19, orderedPairs: 361, classifiedPairs: 8, accepted: 5, rejected: 3, unknown: 353 } +const expectedSummary = { registeredOperations: 19, orderedPairs: 361, classifiedPairs: 56, accepted: 44, rejected: 12, unknown: 305 } if (JSON.stringify(report.summary) !== JSON.stringify(expectedSummary)) fail('summary is inconsistent.') console.log(JSON.stringify({ status: 'freecad-ordered-operation-pair-classification-pass', completedTasks: report.classifications.map(({ taskId }) => taskId), pairs: report.classifications.map(({ pair, classification }) => ({ pair, classification })), nativeBuilderRuns: report.classifications.length * 4, fcstdPhases: report.classifications.length * 3, remainingPairs: report.summary.unknown }, null, 2)) diff --git a/scripts/freecad-ordered-operation-pair-resave.py b/scripts/freecad-ordered-operation-pair-resave.py index 5331871..16e2575 100644 --- a/scripts/freecad-ordered-operation-pair-resave.py +++ b/scripts/freecad-ordered-operation-pair-resave.py @@ -205,6 +205,15 @@ def collect_rejected(): "sections": [{"name": item.Name, "typeId": item.TypeId} for item in feature.Sections], "spine": link_snapshot(feature.Spine), } + elif operation == "revolution": + feature = document.addObject("Part::Revolution", "PairResult") + feature.Source = source + feature.Axis = App.Vector(0.0, 1.0, 0.0) + feature.Base = App.Vector(-1.0, 0.0, 0.0) + feature.Angle = 360.0 + feature.Solid = True + diagnostic["parameter"] = {"name": "angle", "value": round(float(feature.Angle), 7)} + diagnostic["input"] = link_snapshot(feature.Source) else: raise RuntimeError("Unsupported rejected ordered-pair operation: " + operation) diagnostic["nativeTypeId"] = feature.TypeId @@ -248,8 +257,8 @@ def collect_rejected(): or "Error" in diagnostic["state"] or "Invalid" in diagnostic["state"] ) - expected_type_id = {"pad": "PartDesign::Pad", "loft": "Part::Loft", "pipe": "Part::Sweep"}[operation] - input_names = [diagnostic.get("input", {}).get("name")] if operation == "pad" else [item["name"] for item in diagnostic.get("input", {}).get("sections", [])] + expected_type_id = {"pad": "PartDesign::Pad", "loft": "Part::Loft", "pipe": "Part::Sweep", "revolution": "Part::Revolution"}[operation] + input_names = [diagnostic.get("input", {}).get("name")] if operation in ("pad", "revolution") else [item["name"] for item in diagnostic.get("input", {}).get("sections", [])] checks = { "nativeFeatureConstructed": diagnostic.get("nativeTypeId") == expected_type_id, "fuseSolidUsedAsInput": source_name in input_names and diagnostic.get("inputShape", {}).get("solids") == 1, diff --git a/scripts/run-freecad-ordered-operation-pair-classification.mjs b/scripts/run-freecad-ordered-operation-pair-classification.mjs index ee9d3d5..ce2835b 100644 --- a/scripts/run-freecad-ordered-operation-pair-classification.mjs +++ b/scripts/run-freecad-ordered-operation-pair-classification.mjs @@ -54,12 +54,55 @@ const operationSpecs = { pocket: { builder: 'BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut', nominal: { length: 5 }, edited: { length: 4 }, parameter: 'length', beforeValue: 5, editedValue: 4 }, loft: { builder: 'BRepOffsetAPI_ThruSections', nominal: { ruled: false }, edited: { ruled: true }, parameter: 'ruled', beforeValue: false, editedValue: true, decision: 'rejected', rejectionAuthority: 'freecad-document', kernelOutcome: 'accepted' }, pipe: { builder: 'BRepOffsetAPI_MakePipe', nominal: { spineLength: 15 }, edited: { spineLength: 12 }, parameter: 'spineLength', beforeValue: 15, editedValue: 12, decision: 'rejected', rejectionAuthority: 'freecad-document', kernelOutcome: 'invalid-result' }, + revolution: { builder: 'BRepPrimAPI_MakeRevol', nominal: { angle: 360 }, edited: { angle: 270 }, parameter: 'angle', beforeValue: 360, editedValue: 270, decision: 'rejected' }, + groove: { builder: 'BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut', nominal: { angle: 360 }, edited: { angle: 180 }, parameter: 'angle', beforeValue: 360, editedValue: 180 }, + fillet: { builder: 'BRepFilletAPI_MakeFillet', nominal: { radius: 0.4 }, edited: { radius: 0.6 }, parameter: 'radius', beforeValue: 0.4, editedValue: 0.6 }, + chamfer: { builder: 'BRepFilletAPI_MakeChamfer', nominal: { distance: 0.4 }, edited: { distance: 0.6 }, parameter: 'distance', beforeValue: 0.4, editedValue: 0.6 }, + hole: { builder: 'BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut', nominal: { radius: 1, depth: 14, position: [5, 5, -2], direction: [0, 0, 1] }, edited: { radius: 1.5 }, parameter: 'radius', beforeValue: 1, editedValue: 1.5 }, + draft: { builder: 'BRepOffsetAPI_DraftAngle', nominal: { faceIndex: 0, angle: 5, direction: [0, 0, 1], axisOrigin: [0, 0, 0], neutralPlaneDirection: [0, 0, 1], reversed: false }, edited: { angle: 8 }, parameter: 'angle', beforeValue: 5, editedValue: 8 }, + thickness: { builder: 'BRepOffsetAPI_MakeThickSolid', nominal: { faceIndex: 1, offset: -0.4, intersectionJoin: false }, edited: { offset: -0.6 }, parameter: 'offset', beforeValue: -0.4, editedValue: -0.6 }, + 'linear-pattern': { builder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse', nominal: { translationX: 8 }, edited: { translationX: 9 }, parameter: 'translationX', beforeValue: 8, editedValue: 9 }, + 'polar-pattern': { builder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse', nominal: { angle: 30, axisOrigin: [0, 0, 0], direction: [0, 0, 1] }, edited: { angle: 45 }, parameter: 'angle', beforeValue: 30, editedValue: 45 }, + mirrored: { builder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse', nominal: { planeOriginX: 5 }, edited: { planeOriginX: 6 }, parameter: 'planeOriginX', beforeValue: 5, editedValue: 6 }, + 'multi-transform': { builder: 'BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)', nominal: { multiTranslationX: 8 }, edited: { multiTranslationX: 9 }, parameter: 'multiTranslationX', beforeValue: 8, editedValue: 9 }, +} +const pairSpecOverrides = { + 'cut->fuse': { ...operationSpecs.fuse, nominal: { toolSize: 5, toolOffset: 8 }, edited: { toolSize: 5, toolOffset: 9 }, beforeValue: 8, editedValue: 9 }, + 'cut->cut': { ...operationSpecs.cut, nominal: { toolSize: 3, toolOffset: 6 }, edited: { toolSize: 4, toolOffset: 6 }, beforeValue: 3, editedValue: 4 }, + 'cut->common': { ...operationSpecs.common, nominal: { toolSize: 5, toolOffset: 4 }, edited: { toolSize: 5, toolOffset: 5 }, beforeValue: 4, editedValue: 5 }, + 'common->fuse': { ...operationSpecs.fuse, nominal: { toolSize: 5, toolOffset: 8 }, edited: { toolSize: 5, toolOffset: 7 }, beforeValue: 8, editedValue: 7 }, + 'common->common': { ...operationSpecs.common, nominal: { toolSize: 4, toolOffset: 7 }, edited: { toolSize: 4, toolOffset: 6 }, beforeValue: 7, editedValue: 6 }, + 'common->linear-pattern': { ...operationSpecs['linear-pattern'], nominal: { translationX: 4 }, edited: { translationX: 3 }, beforeValue: 4, editedValue: 3 }, + 'common->multi-transform': { ...operationSpecs['multi-transform'], nominal: { multiTranslationX: 4 }, edited: { multiTranslationX: 3 }, beforeValue: 4, editedValue: 3 }, } -const createOperation = (module, { operation, objectStep, toolSize, toolOffset, angle, length, ruled, spineLength, stage }) => { +const createOperation = (module, { operation, objectStep, toolSize, toolOffset, angle, length, ruled, spineLength, radius, distance, depth, position, direction, faceIndex, axisOrigin, neutralPlaneDirection, reversed, offset, intersectionJoin, translationX, planeOriginX, multiTranslationX, stage }) => { const baseStep = objectStep ?? shapeStep(module, 'makeBox', 10, 10, 10) const objectInput = input('object', 'object', stage.objectId, stage.objectTag, baseStep, stage.namingEvidence) if (operation === 'rotate') return { response: module.rotateHistoryFromStep(baseStep, 0, 0, 0, 0, 0, 1, angle), inputs: [objectInput] } + if (operation === 'revolution') return { response: module.revolutionHistoryFromStep(baseStep, -1, 0, 0, 0, 1, 0, angle), inputs: [objectInput] } + if (operation === 'fillet') return { response: module.filletHistoryFromStep(baseStep, radius), inputs: [objectInput] } + if (operation === 'chamfer') return { response: module.chamferHistoryFromStep(baseStep, distance), inputs: [objectInput] } + if (operation === 'hole') return { response: module.holeHistoryFromStep(baseStep, radius, depth, ...position, ...direction), inputs: [objectInput] } + if (operation === 'draft') return { response: module.draftHistoryFromStep(baseStep, faceIndex, angle, ...direction, ...axisOrigin, ...neutralPlaneDirection, reversed), inputs: [objectInput] } + if (operation === 'thickness') return { response: module.thicknessHistoryFromStep(baseStep, faceIndex, offset, intersectionJoin), inputs: [objectInput] } + if (operation === 'linear-pattern') return { response: module.linearPatternHistoryFromStep(baseStep, translationX, 0, 0), inputs: [objectInput] } + if (operation === 'polar-pattern') return { response: module.polarPatternHistoryFromStep(baseStep, ...axisOrigin, ...direction, angle), inputs: [objectInput] } + if (operation === 'mirrored') return { response: module.mirroredHistoryFromStep(baseStep, planeOriginX, 0, 0, 1, 0, 0), inputs: [objectInput] } + if (operation === 'multi-transform') return { + response: module.multiTransformHistoryFromStep(baseStep, [ + { type: 'linear', direction: [multiTranslationX, 0, 0] }, + { type: 'mirrored', axisOrigin: [5, 0, 0], direction: [1, 0, 0] }, + ]), + inputs: [objectInput], + } + if (operation === 'groove') { + const profileStep = shapeStep(module, 'makeRectangleFacePlaced', 1, 3, 0.5, 2, 0) + return { + response: module.grooveHistoryFromStep(baseStep, profileStep, 0, 0, 0, 0, 1, 0, angle), + inputs: [objectInput, input('tool', 'tool', `${stage.resultObjectId}:profile`, stage.objectTag + 1, profileStep)], + } + } if (operation === 'pad') return { response: module.prismHistoryFromStep(baseStep, 0, 0, length), inputs: [objectInput] } if (operation === 'pocket') { const profileStep = shapeStep(module, 'makeRectangleFace', 2, 3) @@ -91,16 +134,17 @@ const createOperation = (module, { operation, objectStep, toolSize, toolOffset, } const captureRejectedStage = (module, definition) => { + const spec = operationSpecs[definition.operation] let capture try { capture = createOperation(module, definition) } catch (error) { return { operation: definition.operation, - builder: operationSpecs[definition.operation].builder, + builder: spec.builder, inputCount: 1, - parameter: operationSpecs[definition.operation].parameter, - parameterValue: definition.length, + parameter: spec.parameter, + parameterValue: definition[spec.parameter], runtime: 'occt-native', outcome: 'rejected', resultProduced: false, @@ -232,14 +276,27 @@ const persistPair = async (pair, step, namingEvidence, decision) => { } } -const classifyFusePair = async (toOperation, pairIndex) => { - const pair = `fuse->${toOperation}` +const classifyPair = async (fromOperation, toOperation, pairIndex) => { + const pair = `${fromOperation}->${toOperation}` const pairId = pair.replace('->', '-') + const firstParameters = pair === 'cut->thickness' + ? { toolSize: 10, toolOffset: 5 } + : ['common->pocket', 'common->groove'].includes(pair) + ? { toolSize: 5, toolOffset: 0 } + : fromOperation === 'fuse' + ? toOperation === 'thickness' + ? { toolSize: 10, toolOffset: 0 } + : ['fillet', 'chamfer'].includes(toOperation) + ? { toolSize: 10, toolOffset: 5 } + : { toolSize: 5, toolOffset: 8 } + : fromOperation === 'common' + ? { toolSize: 5, toolOffset: 4 } + : operationSpecs[fromOperation].nominal const first = captureStage(module, { - operation: 'fuse', toolSize: 5, toolOffset: 8, + operation: fromOperation, ...firstParameters, stage: { stageId: `pair:${pairId}:first`, ordinal: 0, objectId: `pair:${pairId}:base`, objectTag: 1001 + pairIndex * 100, resultObjectId: `pair:${pairId}:first`, resultObjectTag: 1101 + pairIndex * 100 }, }) - const spec = operationSpecs[toOperation] + const spec = pairSpecOverrides[pair] ?? operationSpecs[toOperation] const secondDefinition = { operation: toOperation, objectStep: first.response.resultStep, @@ -255,7 +312,7 @@ const classifyFusePair = async (toOperation, pairIndex) => { if (!kernelRestoredExactly) fail(`${pair} OCCT diagnostic probe did not restore exactly.`) const persistence = await persistPair(pair, first.response.resultStep, first.namingEvidence, 'rejected') return { - taskId: `TSN-PAIR-fuse-${toOperation}`, + taskId: `TSN-PAIR-${pairId}`, pair, classification: 'rejected', reasonCode: 'freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave', @@ -264,12 +321,12 @@ const classifyFusePair = async (toOperation, pairIndex) => { rejection: { scope: 'second-operation-only', authority: 'freecad-document', parameter: spec.parameter, trajectory, kernelAttempts, kernelRestoredExactly, persistence }, } } - const attempts = trajectory.map((length) => captureRejectedStage(module, { ...secondDefinition, length })) + const attempts = trajectory.map((value) => captureRejectedStage(module, { ...secondDefinition, [spec.parameter]: value })) const stableRejection = attempts.every((attempt) => rejectionSignature(attempt) === rejectionSignature(attempts[0])) if (!stableRejection) fail(`${pair} rejection changed across its parameter trajectory.`) const persistence = await persistPair(pair, first.response.resultStep, first.namingEvidence, 'rejected') return { - taskId: `TSN-PAIR-fuse-${toOperation}`, + taskId: `TSN-PAIR-${pairId}`, pair, classification: 'rejected', reasonCode: 'native-builder-and-freecad-profile-reject-with-clean-resave', @@ -290,7 +347,7 @@ const classifyFusePair = async (toOperation, pairIndex) => { if (!mutationChanged || !restoredExactly) fail(`${pair} mutation did not change and restore native geometry/history.`) const persistence = await persistPair(pair, second.response.resultStep, second.namingEvidence, 'accepted') return { - taskId: `TSN-PAIR-fuse-${toOperation}`, + taskId: `TSN-PAIR-${pairId}`, pair, classification: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', @@ -306,8 +363,10 @@ const classifyFusePair = async (toOperation, pairIndex) => { } } +const operations = ['fuse', 'cut', 'common', 'rotate', 'pad', 'pocket', 'loft', 'pipe', 'revolution', 'groove', 'fillet', 'chamfer', 'hole', 'draft', 'thickness', 'linear-pattern', 'polar-pattern', 'mirrored', 'multi-transform'] +const orderedPairPrefix = [...operations.map((toOperation) => ['fuse', toOperation]), ['cut', 'fuse'], ['cut', 'cut'], ['cut', 'common'], ['cut', 'pad'], ['cut', 'pocket'], ['cut', 'loft'], ['cut', 'pipe'], ['cut', 'revolution'], ['cut', 'groove'], ['cut', 'fillet'], ['cut', 'chamfer'], ['cut', 'hole'], ['cut', 'draft'], ['cut', 'thickness'], ['cut', 'linear-pattern'], ['cut', 'polar-pattern'], ['cut', 'mirrored'], ['cut', 'multi-transform'], ['common', 'fuse'], ['common', 'cut'], ['common', 'common'], ['common', 'rotate'], ['common', 'pad'], ['common', 'pocket'], ['common', 'loft'], ['common', 'pipe'], ['common', 'revolution'], ['common', 'groove'], ['common', 'fillet'], ['common', 'chamfer'], ['common', 'hole'], ['common', 'draft'], ['common', 'thickness'], ['common', 'linear-pattern'], ['common', 'polar-pattern'], ['common', 'mirrored'], ['common', 'multi-transform']] const classifications = [] -for (const [index, operation] of ['fuse', 'cut', 'common', 'rotate', 'pad', 'pocket', 'loft', 'pipe'].entries()) classifications.push(await classifyFusePair(operation, index)) +for (const [index, [fromOperation, toOperation]] of orderedPairPrefix.entries()) classifications.push(await classifyPair(fromOperation, toOperation, index)) const [artifacts, executorHarness, matrixHarness, resaveHarness] = await Promise.all([ Promise.all(artifactNames.map(async (name) => { diff --git a/后续工作.txt b/后续工作.txt index 9c4971a..2be306e 100644 --- a/后续工作.txt +++ b/后续工作.txt @@ -1,132 +1,653 @@ -• 本项目应继续以锁定的 FreeCAD 1.1.1 为基线。当前已有可运行的 Web CAD 兼 - 容基线,但距离“全部功能对标”仍较远:exact 任务为 5/52 completed,34 个 - 模块中 0 exact / 26 compatible / 5 proxy / 3 development。 +# FreeCAD 后续工作 - 详细机器账本见 config/freecad-web-exact-parity-plan.json:1,当前执行总 - 览见 docs/freecad-web-execution-master-plan.zh-CN.md:194。 +## 1. 文档定位 - 需要完善的工作 +本文是后续工作的人工入口,不维护会随任务推进变化的统计数字。执行时以下列机器产物为准: - 工作域 当前主要缺口 完成标准 - ━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━ - 原生 Oracle 1111 个命令已完成三态 每个 TypeId、Property、 - 清册,但只有 Pad 命令 Command、Task 和对话框 - 族完成成功、禁用、失 都有原生成功与负向证据 - 败、取消、恢复全流程 - ───────────────── ──────────────────────── ───────────────────────── - OCCT 几何内核 部分 builder 参数、容 每个操作的 Shape、质量 - 差、校验和失败诊断未穷 属性、拓扑、容差、错误 - 尽;原生 history 和资源释放与 FreeCAD 一 - provider 尚未成为完整 致 - 默认链路 - ───────────────── ──────────────────────── ───────────────────────── - 拓扑命名 仍有 7 个 PartDesign 零错绑、零未知漂移、 - case/20 个恢复阶段未分 361/361 组合分类、允许 - 类;五阶段链存在 3 个 组合全部使用真实 - 通用 Shape 代理;361 builder - 个有序操作对只完成 4 - 个 - ───────────────── ──────────────────────── ───────────────────────── - Property 系统 85 种 Property 中仍有 默认值、边界值、状态、 - 58 种/523 条记录只能 编辑器、Undo/Redo、 - opaque 保存 FCStd、Chrome 回放全部 - 闭合 - ───────────────── ──────────────────────── ───────────────────────── - Document/App observer 顺序、嵌套事 事务、DAG、失败恢复、链 - 务、局部重算、 接和对象生命周期与原生 - Extension、 事件序列一致 - FeaturePython、多文档 - 和合并恢复不完整 - ───────────────── ──────────────────────── ───────────────────────── - Sketcher 几何与约束已有较强基 每种几何/约束/工具均通 - 线,但全部 overload、 过求解、编辑、取消、撤 - 失败消息、编辑工具、自 销、FCStd 和浏览器回放 - 动约束、虚拟空间和焦点 - 矩阵未闭合 - ───────────────── ──────────────────────── ───────────────────────── - Part 基本体和代表性 builder 所有注册 Part 命令、选 - 已实现,但全部参数、 项和 TypeId 均有原生差 - Refine、Section/ 分证据 - Slice、Healing、检查和 - 失败分支未穷尽 - ───────────────── ──────────────────────── ───────────────────────── - PartDesign Attachment 等独立切片 Pad 到 MultiTransform - 已 exact;其余特征的全 的每种模式、失败、Body - 部模式组合仍未完成 Tip、Support、命名和 - FCStd 均一致 - ───────────────── ──────────────────────── ───────────────────────── - FCStd 当前支持 23 个往返场景 FreeCAD→Web 修改 - 和未知资源保留,但未完 →FreeCAD 重开/再保存后 - 成所有对象、Property、 零未知语义差异 - Extension、Shape 的可 - 编辑往返 - ───────────────── ──────────────────────── ───────────────────────── - 数据格式 STEP/IGES 高级元数据、 15 种格式分别具备单位、 - 装配、颜色层级不完整; 元数据、失败、取消、大 - 部分 STL/OBJ/PLY/DXF/ 文件和往返报告 - SVG/PDF 只读;JT/IDF/ - OpenSCAD 为代理 - ───────────────── ──────────────────────── ───────────────────────── - GUI 应用壳可用,但完整 每个工作台端到端流程与 - MDI、动态命令状态、所 原生 GUI oracle 一致 - 有 Task/属性编辑器/对 - 话框、快捷键和焦点行为 - 未闭合 - ───────────────── ──────────────────────── ───────────────────────── - 文档工作台 Draft、TechDraw、 对象、命令、表达式、 - Spreadsheet、Plot 目前 TopoRef、导出和跨工作台 - 是兼容子集 引用全部往返 - ───────────────── ──────────────────────── ───────────────────────── - 工程工作台 Assembly、BIM、 装配求解、IFC、曲面修 - Surface、Mesh、 复、网格分析和材料继承 - Material 均缺高级算法 全部闭合 - 和完整对象语义 - ───────────────── ──────────────────────── ───────────────────────── - 分析与制造 FEM、CAM、Robot、 完整求解器/刀路/运动学/ - Inspection、Points/RE 点云算法、结果对象、失 - 只有代表性实现 败与导出闭合 - ───────────────── ──────────────────────── ───────────────────────── - Python 与 Addon 当前沙箱不能运行完整 受控 Python API、宏、权 - FreeCAD Python API,桌 限、依赖隔离、签名、回 - 面插件无法原样运行 滚和资源配额完成 - ───────────────── ──────────────────────── ───────────────────────── - QA 与发布 Chrome 基线较完整,但 52/52 exact、34/34 - 跨 OS/GPU、长期运行、 exact、零未知指标、签名 - 全 locale 和完整无障碍 发布和回滚演练通过 - 认证未完成 +1. `config/freecad-active-work-queue.json` + - 全部微任务、依赖、状态、退出条件和唯一 `nextTask` 的机器真值。 +2. `docs/freecad-active-work-status.generated.zh-CN.md` + - 当前完成数、剩余数、里程碑状态和唯一活动任务的生成摘要。 +3. `docs/freecad-follow-up-execution-plan.zh-CN.md` + - 后续里程碑顺序、A-I 九阶段完成定义和单轮执行协议。 +4. `config/freecad-follow-up-task-progress.json` + - A-I 后续任务的完成证据账本;完成项必须形成连续前缀。 +5. `config/freecad-ordered-operation-pair-classification.json` + - 19x19 有序操作对的原生接受/拒绝、builder、变异、诊断和 FCStd 证据。 - 各工作台的细分任务范围已列在 docs/freecad-complete-parity-backlog.zh- - CN.md:88 和 docs/freecad-full-parity-execution-wbs.zh-CN.md:55。 +禁止在本文复制实时完成数或手工指定下一任务。需要查看状态时运行: - 建议执行顺序 +```bash +node -e "const q=require('./config/freecad-active-work-queue.json'); console.log(q.nextTask, q.summary)" +``` - 1. 先关闭 EX-ORA-01 和 EX-TSN-04,不要继续横向增加工作台。 - 2. 完成 7 个剩余命名漂移 case、生产 Cut/Rotate 漂移和 361 个有序操作 - 对。 +## 2. 当前执行原则 - 3. 按类型逐项完成 58 种 opaque Property。 - 4. 关闭事务、observer、DAG、Extension、FeaturePython 和多文档语义。 - 5. 按单特征纵向完成 Kernel、Sketcher、Part、PartDesign。 - 6. 完成 FCStd 和 STEP/IGES/BREP 双向往返。 - 7. 完成 GUI 全量工作流。 - 8. 依次关闭文档、工程、分析制造和数据工作台。 - 9. 最后处理 Python、Addon、代理模块和跨平台发布。 +- 基线固定为 FreeCAD 1.1.1 和仓库已锁定的原生提交。 +- 任意时刻只能有一个 `in_progress` 任务。 +- 每轮只处理 `config/freecad-active-work-queue.json` 中的 `nextTask`。 +- 前一里程碑未闭合时,后一里程碑保持 `pending`。 +- 原生拒绝是有效分类,不得为了 Web 侧接受而伪造通用 Shape 或隐藏 fallback。 +- 原生接受必须使用真实 builder,并具备参数变异、恢复、history、naming 和 FCStd 往返证据。 +- 失败路径必须锁定失败阶段、精确诊断、空/无效 Shape 状态、事务回滚和文档无污染。 +- 动态状态只能由 `scripts/generate-freecad-active-work-queue.mjs` 生成。 - 立即执行入口 +## 3. 后续里程碑顺序 - 当前唯一机器任务是 config/freecad-active-work-queue.json:1563。完成后 - 依次处理剩余 Pocket 系列、生产 Cut、生产 Rotate,再进入 357 个未分类操 - 作对。 +1. 完成 `TSN-ORDERED-PAIRS` 的全部 19x19 操作对。 +2. 为所有 opaque Property 类型补齐原生 codec 与往返证据。 +3. 闭合 Document observer、事务、DAG、重算失败恢复、Extension、FeaturePython 和多文档语义。 +4. 逐个闭合核心建模操作的 A-I 九阶段证据。 +5. 闭合 FCStd、STEP、IGES、BREP 和其他格式的双向往返。 +6. 完成 GUI、文档工作台、工程工作台、分析制造、脚本与代理边界。 +7. 完成跨浏览器、跨 OS/GPU、无障碍、locale、fuzz、长稳、签名发布和 exact promotion。 - 此外需要修复规划治理本身: +详细拆分和依赖关系只在机器队列与执行计划中维护。 - - EX-TSN-04 的 blocker 文本仍写着旧的 1/11,实际已经是 4/11。 - - 早期 Backlog/WBS 仍包含过期完成度描述。 - - 当前 487 项队列只细化了 GUI Oracle 和 TSN,尚未为 Property、 - Document、核心建模及 M10-M14 生成同等粒度的机器任务。 +## 4. 单轮执行流程 - - 必须让状态摘要由机器报告自动生成,禁止手工维护重复数字。 +1. 读取唯一 `nextTask`,确认依赖、输入 artifact 和退出条件。 +2. 只修改该任务所需的 oracle、实现、检查器和锁定报告。 +3. 先运行真实 FreeCAD/OCCT/Chrome probe,再运行只读 focused check。 +4. 验证 Shape、Worker、OPFS、事务和文档对象集回到预期状态。 +5. 运行相关 Facade、FCStd、TSN 和 execution-plan 门禁。 +6. 所有退出条件通过后,重新生成 active-work queue 与状态页。 +7. 确认队列恰好推进一个任务,没有跳号或第二个活动任务。 +8. 运行 `git diff --check`、JSON/脚本校验和与风险相称的回归。 +9. 发布点运行完整 `./npmw run verify`,再提交并推送。 - 每个能力应统一采用“原生清册、成功、失败/取消、参数变异、Facade 实现、 - 事务恢复、FCStd 往返、真实浏览器、能力提升”九步完成定义;缺任何一步只 - 能保持 compatible。 +常用命令: + +```bash +./npmw run probe:freecad-ordered-operation-pairs +./npmw run check:freecad-ordered-operation-pairs +./npmw run generate:freecad-active-work-queue +./npmw run check:execution-plan +git diff --check +``` + +## 5. A-I 完成定义 + +| 阶段 | 交付物 | 最低退出条件 | +| --- | --- | --- | +| A | 原生清册与前置 | TypeId、输入、默认值、依赖和适用性机器可读 | +| B | 原生成功证据 | 名义值和边界值的 Shape、拓扑、状态与诊断齐全 | +| C | 原生失败/取消证据 | 无效输入、禁用、取消和文档无污染可复现 | +| D | 参数变异/恢复 | 编辑、重算和恢复返回已分类的原生状态 | +| E | Facade 实现 | 生产路径无隐藏 fallback,UI 不直连内核 | +| F | 事务恢复 | abort、undo、redo、stale、失败和资源所有权闭合 | +| G | FCStd 往返 | FreeCAD-Web-FreeCAD 没有未知语义漂移 | +| H | 真实浏览器 | Chrome Worker、OPFS、UI 状态和资源释放通过 | +| I | 能力提升 | A-H 全过,focused gate 与 exact blocker 同步 | + +缺少任一阶段时,能力最多保持 `compatible` 或既有的显式 `proxy` 等级。 + +## 6. 最近完成证据 + +### `TSN-PAIR-cut-thickness` + +`cut->thickness` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,以贯穿半体工具生成体积 `500` 的有效单 Solid 和 98 条原生 history。 +- 下游使用真实 `BRepOffsetAPI_MakeThickSolid` builder,对锁定的原生 Face 执行厚壳。 +- 原凹腔 Cut 的非平凡厚壳轨迹存在原生 history 内容漂移,未被误记为恢复;任务改用仍由真实 Cut 产生的稳定单 Solid。 +- `-0.4 -> -0.6 -> -0.4` offset 轨迹改变体积与面积,并精确恢复名义摘要、原始 history 哈希和语义 naming。 +- 名义结果为有效 1 Solid,体积 `129.056`,包含 38 条原生 history 记录。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-cut-draft` + +`cut->draft` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- 下游使用真实 `BRepOffsetAPI_DraftAngle` builder,对锁定的原生 Face、中性面和拉伸方向执行拔模。 +- `5 -> 8 -> 5` 角度轨迹改变体积与面积,并精确恢复名义摘要和语义 naming。 +- 名义结果为有效 1 Solid,体积 `892.2556682`,包含 5 条原生 history 记录。 +- 下游获得唯一 `native-evidence` naming,且上游 Cut 证据在恢复态保持一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-cut-hole` + +`cut->hole` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder,对 Cut 结果执行中心贯穿孔。 +- `1 -> 1.5 -> 1` 半径轨迹改变体积、拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `904.5840735`,包含 34 条原生 history 记录。 +- 上游 Cut naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-cut-chamfer` + +`cut->chamfer` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- 下游使用真实 `BRepFilletAPI_MakeChamfer` builder,对 Cut 结果执行全边倒角。 +- `0.4 -> 0.6 -> 0.4` 距离轨迹改变体积与面积,并精确恢复名义摘要和语义 naming。 +- 名义结果为有效 1 Solid,体积 `926.8266667`,包含 298 条原生 history 记录。 +- 上游 Cut naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-cut-fillet` + +`cut->fillet` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- 下游使用真实 `BRepFilletAPI_MakeFillet` builder,对 Cut 结果执行全边圆角。 +- `0.4 -> 0.6 -> 0.4` 半径轨迹改变体积与面积,并精确恢复名义摘要和语义 naming。 +- 名义结果为有效 1 Solid,体积 `931.9696595`,包含 298 条原生 history 记录。 +- 上游 Cut naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-cut-groove` + +`cut->groove` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- 下游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder,对 Cut 结果执行旋转减料。 +- `360 -> 180 -> 360` 角度轨迹改变拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `931.287611`,包含 18 条原生 history 记录。 +- 上游 Cut naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-cut-revolution` + +`cut->revolution` 已完成原生拒绝分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- OCCT `BRepPrimAPI_MakeRevol` 在 `360 -> 270 -> 360` 角度轨迹中稳定拒绝 Cut Solid 输入,且不产生结果 Shape 或 history。 +- FreeCAD `Part::Revolution` 使用同一 Cut Solid 作为 Source,返回 `Solids are not Processed`。 +- FreeCAD 结果 Shape 为空、状态包含 `Invalid`,拒绝任务没有伪造下游 naming 或变异证据。 +- transaction abort 后对象集与 Cut 源 Shape 完整恢复,干净 FCStd save/reopen/resave 三阶段一致。 +- focused ordered-pair gate 已锁定两阶段 builder、异常传输、精确诊断、回滚和持久化证据。 + +### `TSN-PAIR-cut-pipe` + +`cut->pipe` 已完成原生拒绝分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- OCCT `BRepOffsetAPI_MakePipe` 在 `15 -> 12 -> 15` spine 长度轨迹中只生成无效 Shape,该结果仅记为 kernel-invalid-result 诊断。 +- FreeCAD `Part::Sweep` 对 Cut Solid section 返回 `A fatal error occurred when making the sweep`。 +- FreeCAD 结果 Shape 为空、状态包含 `Invalid`,拒绝任务没有伪造下游 naming 或变异证据。 +- transaction abort 后对象集与 Cut 源 Shape 完整恢复,干净 FCStd save/reopen/resave 三阶段一致。 +- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 无效结果、精确失败信息、回滚和持久化证据。 + +### `TSN-PAIR-cut-loft` + +`cut->loft` 已完成原生拒绝分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- OCCT `BRepOffsetAPI_ThruSections` 在 `false -> true -> false` ruled 轨迹中生成有效 Shape,但该结果仅记为 kernel-superset 诊断。 +- FreeCAD `Part::Loft` 对 Cut Solid section 返回 `Profile shape is not a single vertex, edge, wire nor face.`。 +- FreeCAD 结果 Shape 为空、状态包含 `Invalid`,拒绝任务没有伪造下游 naming 或变异证据。 +- transaction abort 后对象集与 Cut 源 Shape 完整恢复,干净 FCStd save/reopen/resave 三阶段一致。 +- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 诊断、精确失败信息、回滚和持久化证据。 + +### `TSN-PAIR-cut-pocket` + +`cut->pocket` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- 下游使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder,对 Cut 结果执行减料拉伸。 +- `5 -> 4 -> 5` 深度轨迹改变体积、拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `906`,包含 70 条原生 history 记录。 +- 上游 Cut naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-cut-pad` + +`cut->pad` 已完成原生拒绝分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- OCCT `BRepPrimAPI_MakePrism` 在 `5 -> 7.5 -> 5` 长度轨迹中稳定拒绝 Cut Solid 输入,且不产生结果 Shape 或 history。 +- FreeCAD `PartDesign::Pad` 使用同一 Cut Solid 作为 Profile,返回 `FeatureExtrusion: Length: Could not extrude the sketch!`。 +- FreeCAD 结果 Shape 为空、状态包含 `Invalid`,拒绝任务没有伪造下游 naming 或变异证据。 +- transaction abort 后对象集与 Cut 源 Shape 完整恢复,干净 FCStd save/reopen/resave 三阶段一致。 +- focused ordered-pair gate 已锁定两阶段 builder、异常传输、精确诊断、回滚和持久化证据。 + +### `TSN-PAIR-cut-common` + +`cut->common` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- 下游使用真实 `BRepAlgoAPI_Common` 双输入 builder,对 Cut 结果执行布尔交集。 +- `4 -> 5 -> 4` 工具 X 偏移轨迹改变体积、拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `93`,包含 148 条原生 history 记录。 +- 上游 Cut naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-cut-cut` + +`cut->cut` 已完成原生接受分类: + +- 第一、第二阶段均使用真实 `BRepAlgoAPI_Cut` 双输入 builder。 +- 上游 Cut 结果为有效 1 Solid,体积 `936`,包含 22 条原生 history 记录。 +- `3 -> 4 -> 3` 工具尺寸轨迹改变体积、拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义下游结果为有效 1 Solid,体积 `909`,包含 42 条原生 history 记录。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 锁定两阶段 builder、变异和恢复,偏移后摘要不变的弱轨迹未被采用。 + +### `TSN-PAIR-cut-fuse` + +`cut->fuse` 已完成原生接受分类,并验证分类器可跨起始操作保持连续前缀: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- 下游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder,对 Cut 结果执行布尔并集。 +- `8 -> 9 -> 8` 工具 X 偏移轨迹改变几何,并精确恢复名义摘要、history 和语义 naming。 +- 名义结果为有效 1 Solid,体积 `1011`,包含 52 条原生 history 记录。 +- 上游 Cut naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 同时锁定第一、第二 builder,防止跨行后仍误报 Fuse 起点。 + +### `TSN-PAIR-fuse-multi-transform` + +`fuse->multi-transform` 已完成原生接受分类,并闭合 Fuse 起始行的全部 19 个有序操作对: + +- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder,并生成有效单 Solid。 +- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder,组合平移和镜像两步生成 4 个可追踪实例。 +- `8 -> 9 -> 8` 首步 X 平移轨迹改变几何、拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `2750`,包含 769 条原生 history 记录。 +- 上游 Fuse naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。 +- 机器队列已从 Fuse 行末严格推进到下一行首项,没有跳号或第二个活动任务。 + +### `TSN-PAIR-fuse-mirrored` + +`fuse->mirrored` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder,并生成有效单 Solid。 +- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 生成内部平面镜像副本。 +- `5 -> 6 -> 5` 镜像平面 X 原点轨迹改变几何、拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `1150`,包含 224 条原生 history 记录。 +- 上游 Fuse naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-fuse-polar-pattern` + +`fuse->polar-pattern` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder,并生成有效单 Solid。 +- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 生成绕 Z 轴的旋转副本阵列。 +- `30 -> 45 -> 30` 角度轨迹改变几何、拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `1510.7700496`,包含 178 条原生 history 记录。 +- 上游 Fuse naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-fuse-linear-pattern` + +`fuse->linear-pattern` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder,并生成有效单 Solid。 +- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 生成重叠平移副本阵列。 +- `8 -> 9 -> 8` X 平移轨迹改变几何、拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `1875`,包含 141 条原生 history 记录。 +- 完全分离时的 0-history 结果未被误记为接受;focused gate 强制原生 source history 非空。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-fuse-thickness` + +`fuse->thickness` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Fuse` 同形双输入 builder,生成有效 6 面单 Solid 和 156 条原生 history。 +- 下游使用真实 `BRepOffsetAPI_MakeThickSolid` builder,对锁定的原生 Face 执行厚壳。 +- `-0.4 -> -0.6 -> -0.4` offset 轨迹改变几何,并精确恢复名义摘要、history 和语义 naming。 +- 名义结果为有效 1 Solid,体积 `187.456`,包含 38 条原生 history 记录。 +- 原始部分重叠 Fuse 的 no-op 结果未被误记为接受;focused gate 强制变异必须改变 Shape 摘要。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-fuse-draft` + +`fuse->draft` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder,并生成有效单 Solid。 +- 下游使用真实 `BRepOffsetAPI_DraftAngle` builder,对锁定的原生 Face、中性面和拉伸方向执行拔模。 +- `5 -> 8 -> 5` 角度轨迹改变几何,并精确恢复名义摘要、history 和语义 naming。 +- 名义结果为有效 1 Solid,体积 `1031.2556682`,包含 5 条原生 history 记录。 +- 下游获得唯一 `native-evidence` naming,且上游 Fuse 证据在恢复态保持一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-fuse-hole` + +`fuse->hole` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder,并生成有效单 Solid。 +- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder 执行中心贯穿孔。 +- `1 -> 1.5 -> 1` 半径轨迹改变几何,并精确恢复名义摘要、history 和语义 naming。 +- 名义结果为有效 1 Solid,体积 `1043.5840735`,包含 23 条原生 history 记录。 +- 下游获得唯一 `native-evidence` naming,且上游 Fuse 证据在恢复态保持一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-fuse-chamfer` + +`fuse->chamfer` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder,并生成有效单 Solid。 +- 下游使用真实 `BRepFilletAPI_MakeChamfer` builder 对 Fuse 结果执行全边倒角。 +- `0.4 -> 0.6 -> 0.4` 距离轨迹改变几何,并精确恢复名义摘要、history 和语义 naming。 +- 名义结果为有效 1 Solid,体积 `1489.1413333`,包含 270 条原生 history 记录。 +- 上游 Fuse naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-fuse-fillet` + +`fuse->fillet` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder,并生成有效单 Solid。 +- 下游使用真实 `BRepFilletAPI_MakeFillet` builder 对 Fuse 结果执行全边圆角。 +- `0.4 -> 0.6 -> 0.4` 半径轨迹改变几何,并精确恢复名义摘要、history 和语义 naming。 +- 名义结果为有效 1 Solid,体积 `1495.2786299`,包含 270 条原生 history 记录。 +- 上游 Fuse naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-fuse-groove` + +`fuse->groove` 已完成原生接受分类: + +- 生产路径使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder。 +- `360 -> 180 -> 360` 角度轨迹改变几何与 history,并精确恢复名义摘要和语义 naming。 +- 名义结果为有效 1 Solid,体积 `1070.287611`,包含 18 条原生 history 记录。 +- 上游 Fuse naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-fuse-revolution` + +`TSN-PAIR-fuse-revolution` 已完成原生分类: + +- OCCT `BRepPrimAPI_MakeRevol` 在 `360 -> 270 -> 360` 参数轨迹中稳定拒绝 Fuse Solid 输入。 +- FreeCAD `Part::Revolution` 返回 `Solids are not Processed`。 +- FreeCAD 结果 Shape 为空、状态包含 `Invalid`。 +- transaction abort 后对象集与源 Shape 完整恢复。 +- 干净 FCStd save/reopen/resave 三阶段一致。 +- focused ordered-pair gate 已锁定 builder、异常传输、诊断和回滚证据。 + +### `TSN-PAIR-cut-linear-pattern` + +`cut->linear-pattern` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 生成重叠平移副本阵列。 +- `8 -> 9 -> 8` X 平移轨迹改变几何、拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `1672`,包含 89 条原生 history 记录。 +- 上游 Cut naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据,机器队列严格推进一项。 + +### `TSN-PAIR-cut-polar-pattern` + +`cut->polar-pattern` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 生成绕 Z 轴的旋转副本阵列。 +- `30 -> 45 -> 30` 角度轨迹改变几何、拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `1361.9420727`,包含 160 条原生 history 记录。 +- 上游 Cut naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据,机器队列严格推进一项。 + +### `TSN-PAIR-cut-mirrored` + +`cut->mirrored` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 生成内部平面镜像副本。 +- `5 -> 6 -> 5` 镜像平面 X 原点轨迹改变几何、拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `968`,包含 230 条原生 history 记录。 +- 上游 Cut naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据,机器队列严格推进一项。 + +### `TSN-PAIR-cut-multi-transform` + +`cut->multi-transform` 已完成原生接受分类,并闭合 Cut 起始行的全部 19 个有序操作对: + +- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,生成有效单 Solid 和 22 条原生 history。 +- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder,组合平移和镜像两步生成 4 个可追踪实例。 +- `8 -> 9 -> 8` 首步 X 平移轨迹改变几何、拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `2440`,包含 670 条原生 history 记录。 +- 上游 Cut naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据,机器队列已从 Cut 行末严格推进到 Common 行首项。 + +### `TSN-PAIR-common-fuse` + +`common->fuse` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,以体积交叠生成有效 1 Solid,体积 `125`,并包含 94 条原生 history。 +- 下游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder,重叠合并 Common 结果与工具体。 +- `8 -> 7 -> 8` 工具 X 偏移轨迹改变体积与边界,并精确恢复名义摘要、history 与语义 naming。 +- 名义下游结果为有效 1 Solid,体积 `225`,包含 66 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定 Common 上游构造、两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-cut` + +`common->cut` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- 下游使用真实 `BRepAlgoAPI_Cut` 双输入 builder,对 Common 结果执行布尔减料。 +- `4 -> 3 -> 4` 工具尺寸轨迹改变体积与 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `93`,包含 64 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-common` + +`common->common` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- 下游再次使用真实 `BRepAlgoAPI_Common` 双输入 builder,两个锁定工具位置都与上游 Solid 存在体积交叠。 +- `7 -> 6 -> 7` 工具 X 偏移轨迹使体积从 `32` 变为 `48`,并精确恢复名义摘要、history 与语义 naming。 +- 名义结果为有效 1 Solid,包含 121 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-rotate` + +`common->rotate` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- 下游使用真实 `BRepBuilderAPI_Transform` 单输入 builder,对 Common 结果执行绕 Z 轴旋转。 +- `15 -> 22.5 -> 15` 角度轨迹在保持体积 `125` 的同时改变包围盒,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,包含 78 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-pad` + +`common->pad` 已完成原生拒绝分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- OCCT `BRepPrimAPI_MakePrism` 在 `5 -> 7.5 -> 5` 长度轨迹中稳定拒绝 Common Solid 输入,且不产生结果 Shape 或 history。 +- FreeCAD `PartDesign::Pad` 使用同一 Common Solid 作为 Profile,返回 `FeatureExtrusion: Length: Could not extrude the sketch!`。 +- FreeCAD 结果 Shape 为空、状态包含 `Invalid`,拒绝任务没有伪造下游 naming 或变异证据。 +- transaction abort 后对象集与 Common 源 Shape 完整恢复,干净 FCStd save/reopen/resave 三阶段一致。 +- focused ordered-pair gate 已锁定两阶段 builder、异常传输、精确诊断、回滚和持久化证据。 + +### `TSN-PAIR-common-pocket` + +`common->pocket` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,在原点处生成体积 `125` 的有效单 Solid 和 105 条原生 history。 +- 下游使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder,对 Common 结果执行减料拉伸。 +- `5 -> 4 -> 5` 深度轨迹改变体积、拓扑和 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `95`,包含 64 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定上游实体交叠、两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-loft` + +`common->loft` 已完成原生拒绝分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- OCCT `BRepOffsetAPI_ThruSections` 在 `false -> true -> false` ruled 轨迹中生成有效 Shape,但该结果仅记为 kernel-superset 诊断。 +- FreeCAD `Part::Loft` 对 Common Solid section 返回 `Profile shape is not a single vertex, edge, wire nor face.`。 +- FreeCAD 结果 Shape 为空、状态包含 `Invalid`,拒绝任务没有伪造下游 naming 或变异证据。 +- transaction abort 后对象集与 Common 源 Shape 完整恢复,干净 FCStd save/reopen/resave 三阶段一致。 +- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 诊断、精确失败信息、回滚和持久化证据。 + +### `TSN-PAIR-common-pipe` + +`common->pipe` 已完成原生拒绝分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- OCCT `BRepOffsetAPI_MakePipe` 在 `15 -> 12 -> 15` spine 长度轨迹中只生成无效 Shape,该结果仅记为 kernel-invalid-result 诊断。 +- FreeCAD `Part::Sweep` 对 Common Solid section 返回 `A fatal error occurred when making the sweep`。 +- FreeCAD 结果 Shape 为空、状态包含 `Invalid`,拒绝任务没有伪造下游 naming 或变异证据。 +- transaction abort 后对象集与 Common 源 Shape 完整恢复,干净 FCStd save/reopen/resave 三阶段一致。 +- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 无效结果、精确失败信息、回滚和持久化证据。 + +### `TSN-PAIR-common-revolution` + +`common->revolution` 已完成原生拒绝分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- OCCT `BRepPrimAPI_MakeRevol` 在 `360 -> 270 -> 360` 角度轨迹中稳定拒绝 Common Solid 输入,且不产生结果 Shape 或 history。 +- FreeCAD `Part::Revolution` 使用同一 Common Solid 作为 Source,返回 `Solids are not Processed`。 +- FreeCAD 结果 Shape 为空、状态包含 `Invalid`,拒绝任务没有伪造下游 naming 或变异证据。 +- transaction abort 后对象集与 Common 源 Shape 完整恢复,干净 FCStd save/reopen/resave 三阶段一致。 +- focused ordered-pair gate 已锁定两阶段 builder、异常传输、精确诊断、回滚和持久化证据。 + +### `TSN-PAIR-common-groove` + +`common->groove` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,在原点处生成体积 `125` 的有效单 Solid 和 105 条原生 history。 +- 下游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder,对 Common 结果执行旋转减料。 +- `360 -> 180 -> 360` 角度轨迹改变拓扑与 history,并精确恢复名义摘要与语义 naming。 +- 名义结果为有效 1 Solid,体积 `120.287611`,包含 28 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定上游实体交叠、两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-fillet` + +`common->fillet` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- 下游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder,对 Common 结果执行全边圆角。 +- `0.4 -> 0.6 -> 0.4` 半径轨迹改变体积与面积,并精确恢复名义摘要、history 与语义 naming。 +- 名义结果为有效 1 Solid,体积 `123.0255334`,包含 150 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-chamfer` + +`common->chamfer` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- 下游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder,对 Common 结果执行全边倒角。 +- `0.4 -> 0.6 -> 0.4` 距离轨迹改变体积与面积,并精确恢复名义摘要、history 与语义 naming。 +- 名义结果为有效 1 Solid,体积 `120.5413333`,包含 150 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-hole` + +`common->hole` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder,对 Common 结果执行边界角贯穿孔。 +- `1 -> 1.5 -> 1` 半径轨迹改变体积与面积,并精确恢复名义摘要、history 与语义 naming。 +- 名义结果为有效 1 Solid,体积 `117.1460184`,包含 30 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-draft` + +`common->draft` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- 下游使用真实 `BRepOffsetAPI_DraftAngle` 单输入 builder,对 Common 结果的锁定原生 Face 执行拔模。 +- `5 -> 8 -> 5` 角度轨迹改变体积与面积,并精确恢复名义摘要、history 与语义 naming。 +- 名义结果为有效 1 Solid,体积 `119.5319585`,包含 5 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-thickness` + +`common->thickness` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- 下游使用真实 `BRepOffsetAPI_MakeThickSolid` 单输入 builder,对 Common 结果的锁定原生 Face 执行厚壳。 +- `-0.4 -> -0.6 -> -0.4` offset 轨迹改变体积与面积,并精确恢复名义摘要、history 与语义 naming。 +- 名义结果为有效 1 Solid,体积 `43.856`,包含 38 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-linear-pattern` + +`common->linear-pattern` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder,将 Common 结果平移复制并融合为一个可追踪 Solid。 +- 原 `8` 单位平移会产生两个分离 Solid 且无可用 history,未被误记为接受;改用保持实体交叠的 `4 -> 3 -> 4` 轨迹。 +- 专用平移轨迹使体积在 `225 -> 200 -> 225` 间变化,并精确恢复名义摘要、history 与语义 naming。 +- 名义结果为有效 1 Solid,包含 66 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定专用变异轨迹、两阶段 builder、输入数、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-polar-pattern` + +`common->polar-pattern` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder,将 Common 结果绕锁定原生轴旋转复制并融合。 +- `30 -> 45 -> 30` 角度轨迹改变体积、拓扑与边界,体积在 `220.0961894 -> 247.5 -> 220.0961894` 间变化,并精确恢复原生摘要与语义 naming。 +- 名义结果为有效 1 Solid,包含 48 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-mirrored` + +`common->mirrored` 已完成原生接受分类: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder,将 Common 结果绕锁定平面镜像复制并融合。 +- `5 -> 6 -> 5` 镜像面 X 原点轨迹改变体积与边界,体积在 `200 -> 150 -> 200` 间变化,并精确恢复原生摘要与语义 naming。 +- 名义结果为有效 1 Solid,包含 66 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,恢复态语义摘要与名义态一致。 +- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。 + +### `TSN-PAIR-common-multi-transform` + +`common->multi-transform` 已完成原生接受分类,并闭合 Common 起始行的全部 19 个有序操作对: + +- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder,生成体积 `125` 的有效单 Solid 和 94 条原生 history。 +- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder,组合平移和镜像两步并保留每个实例的原生追踪关系。 +- 默认 `8` 单位首步平移会形成 3 个分离 Solid,未被误用;改用保持全部实例连通的 `4 -> 3 -> 4` 专用轨迹。 +- 首步 X 平移轨迹使体积在 `400 -> 350 -> 400` 间变化,并精确恢复名义摘要、history 与语义 naming。 +- 名义结果为有效 1 Solid,名义与恢复态均包含 367 条原生 history 记录。 +- 上游 Common naming 证据向下游传播,FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。 +- focused ordered-pair gate 已锁定 ordered builder、专用变异轨迹、输入数、恢复、history、naming 和持久化证据。 + +后续任务必须从机器队列的最新 `nextTask` 继续,不在本文手工维护任务名称。