diff --git a/config/freecad-active-work-queue.json b/config/freecad-active-work-queue.json index 267773f..583953f 100644 --- a/config/freecad-active-work-queue.json +++ b/config/freecad-active-work-queue.json @@ -10,14 +10,26 @@ "maxInProgress": 1, "unit": "one artifact, one focused check, one explicit exit condition", "transitionUnit": "one ordered operation pair", - "driftUnit": "one native case" + "driftUnit": "one native case", + "capabilityDefinition": [ + "A: Lock native inventory and preconditions", + "B: Capture native success evidence", + "C: Capture native failure and cancel evidence", + "D: Capture parameter mutation and restore evidence", + "E: Implement the Facade capability", + "F: Close transaction and recovery behavior", + "G: Close FCStd save, reopen and resave", + "H: Replay in a real browser", + "I: Promote capability and synchronize blockers" + ], + "followUpProgress": "config/freecad-follow-up-task-progress.json" }, - "nextTask": "TSN-PAIR-fuse-pad", + "nextTask": "TSN-PAIR-fuse-revolution", "summary": { - "tasks": 487, - "completed": 134, + "tasks": 1756, + "completed": 138, "inProgress": 1, - "pending": 352 + "pending": 1617 }, "milestones": [ { @@ -1799,47 +1811,59 @@ { "id": "TSN-PAIR-fuse-pad", "title": "Classify ordered operation pair fuse->pad", - "status": "in_progress", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->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-fuse-pocket", "title": "Classify ordered operation pair fuse->pocket", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->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-fuse-loft", "title": "Classify ordered operation pair fuse->loft", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->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-fuse-pipe", "title": "Classify ordered operation pair fuse->pipe", - "status": "pending", - "dependencies": [ - "TSN-PROD-DRIFT-001" - ], + "status": "completed", + "dependencies": [], "pair": "fuse->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-fuse-revolution", "title": "Classify ordered operation pair fuse->revolution", - "status": "pending", + "status": "in_progress", "dependencies": [ "TSN-PROD-DRIFT-001" ], @@ -5359,6 +5383,19814 @@ "exit": "native acceptance or rejection is recorded; accepted pairs include builder, mutation, naming, and resave evidence" } ] + }, + { + "id": "PROPERTY-CODECS", + "title": "Close every opaque Property type", + "exactTasks": [ + "EX-DOC-01" + ], + "status": "pending", + "tasks": [ + { + "id": "PROP-app-propertyacceleration-A", + "title": "Lock native inventory and preconditions: App::PropertyAcceleration", + "status": "pending", + "dependencies": [ + "TSN-PAIR-multi-transform-multi-transform" + ], + "capability": "App::PropertyAcceleration", + "phase": "A", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyacceleration-B", + "title": "Capture native success evidence: App::PropertyAcceleration", + "status": "pending", + "dependencies": [ + "PROP-app-propertyacceleration-A" + ], + "capability": "App::PropertyAcceleration", + "phase": "B", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyacceleration-C", + "title": "Capture native failure and cancel evidence: App::PropertyAcceleration", + "status": "pending", + "dependencies": [ + "PROP-app-propertyacceleration-B" + ], + "capability": "App::PropertyAcceleration", + "phase": "C", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyacceleration-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyAcceleration", + "status": "pending", + "dependencies": [ + "PROP-app-propertyacceleration-C" + ], + "capability": "App::PropertyAcceleration", + "phase": "D", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyacceleration-E", + "title": "Implement the Facade capability: App::PropertyAcceleration", + "status": "pending", + "dependencies": [ + "PROP-app-propertyacceleration-D" + ], + "capability": "App::PropertyAcceleration", + "phase": "E", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyacceleration-F", + "title": "Close transaction and recovery behavior: App::PropertyAcceleration", + "status": "pending", + "dependencies": [ + "PROP-app-propertyacceleration-E" + ], + "capability": "App::PropertyAcceleration", + "phase": "F", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyacceleration-G", + "title": "Close FCStd save, reopen and resave: App::PropertyAcceleration", + "status": "pending", + "dependencies": [ + "PROP-app-propertyacceleration-F" + ], + "capability": "App::PropertyAcceleration", + "phase": "G", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyacceleration-H", + "title": "Replay in a real browser: App::PropertyAcceleration", + "status": "pending", + "dependencies": [ + "PROP-app-propertyacceleration-G" + ], + "capability": "App::PropertyAcceleration", + "phase": "H", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyacceleration-I", + "title": "Promote capability and synchronize blockers: App::PropertyAcceleration", + "status": "pending", + "dependencies": [ + "PROP-app-propertyacceleration-H" + ], + "capability": "App::PropertyAcceleration", + "phase": "I", + "recordCount": 1, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyarea-A", + "title": "Lock native inventory and preconditions: App::PropertyArea", + "status": "pending", + "dependencies": [ + "PROP-app-propertyacceleration-I" + ], + "capability": "App::PropertyArea", + "phase": "A", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyarea-B", + "title": "Capture native success evidence: App::PropertyArea", + "status": "pending", + "dependencies": [ + "PROP-app-propertyarea-A" + ], + "capability": "App::PropertyArea", + "phase": "B", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyarea-C", + "title": "Capture native failure and cancel evidence: App::PropertyArea", + "status": "pending", + "dependencies": [ + "PROP-app-propertyarea-B" + ], + "capability": "App::PropertyArea", + "phase": "C", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyarea-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyArea", + "status": "pending", + "dependencies": [ + "PROP-app-propertyarea-C" + ], + "capability": "App::PropertyArea", + "phase": "D", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyarea-E", + "title": "Implement the Facade capability: App::PropertyArea", + "status": "pending", + "dependencies": [ + "PROP-app-propertyarea-D" + ], + "capability": "App::PropertyArea", + "phase": "E", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyarea-F", + "title": "Close transaction and recovery behavior: App::PropertyArea", + "status": "pending", + "dependencies": [ + "PROP-app-propertyarea-E" + ], + "capability": "App::PropertyArea", + "phase": "F", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyarea-G", + "title": "Close FCStd save, reopen and resave: App::PropertyArea", + "status": "pending", + "dependencies": [ + "PROP-app-propertyarea-F" + ], + "capability": "App::PropertyArea", + "phase": "G", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyarea-H", + "title": "Replay in a real browser: App::PropertyArea", + "status": "pending", + "dependencies": [ + "PROP-app-propertyarea-G" + ], + "capability": "App::PropertyArea", + "phase": "H", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyarea-I", + "title": "Promote capability and synchronize blockers: App::PropertyArea", + "status": "pending", + "dependencies": [ + "PROP-app-propertyarea-H" + ], + "capability": "App::PropertyArea", + "phase": "I", + "recordCount": 1, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyboollist-A", + "title": "Lock native inventory and preconditions: App::PropertyBoolList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyarea-I" + ], + "capability": "App::PropertyBoolList", + "phase": "A", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyboollist-B", + "title": "Capture native success evidence: App::PropertyBoolList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyboollist-A" + ], + "capability": "App::PropertyBoolList", + "phase": "B", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyboollist-C", + "title": "Capture native failure and cancel evidence: App::PropertyBoolList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyboollist-B" + ], + "capability": "App::PropertyBoolList", + "phase": "C", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyboollist-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyBoolList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyboollist-C" + ], + "capability": "App::PropertyBoolList", + "phase": "D", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyboollist-E", + "title": "Implement the Facade capability: App::PropertyBoolList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyboollist-D" + ], + "capability": "App::PropertyBoolList", + "phase": "E", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyboollist-F", + "title": "Close transaction and recovery behavior: App::PropertyBoolList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyboollist-E" + ], + "capability": "App::PropertyBoolList", + "phase": "F", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyboollist-G", + "title": "Close FCStd save, reopen and resave: App::PropertyBoolList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyboollist-F" + ], + "capability": "App::PropertyBoolList", + "phase": "G", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyboollist-H", + "title": "Replay in a real browser: App::PropertyBoolList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyboollist-G" + ], + "capability": "App::PropertyBoolList", + "phase": "H", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyboollist-I", + "title": "Promote capability and synchronize blockers: App::PropertyBoolList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyboollist-H" + ], + "capability": "App::PropertyBoolList", + "phase": "I", + "recordCount": 7, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertycolor-A", + "title": "Lock native inventory and preconditions: App::PropertyColor", + "status": "pending", + "dependencies": [ + "PROP-app-propertyboollist-I" + ], + "capability": "App::PropertyColor", + "phase": "A", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertycolor-B", + "title": "Capture native success evidence: App::PropertyColor", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolor-A" + ], + "capability": "App::PropertyColor", + "phase": "B", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertycolor-C", + "title": "Capture native failure and cancel evidence: App::PropertyColor", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolor-B" + ], + "capability": "App::PropertyColor", + "phase": "C", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertycolor-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyColor", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolor-C" + ], + "capability": "App::PropertyColor", + "phase": "D", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertycolor-E", + "title": "Implement the Facade capability: App::PropertyColor", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolor-D" + ], + "capability": "App::PropertyColor", + "phase": "E", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertycolor-F", + "title": "Close transaction and recovery behavior: App::PropertyColor", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolor-E" + ], + "capability": "App::PropertyColor", + "phase": "F", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertycolor-G", + "title": "Close FCStd save, reopen and resave: App::PropertyColor", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolor-F" + ], + "capability": "App::PropertyColor", + "phase": "G", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertycolor-H", + "title": "Replay in a real browser: App::PropertyColor", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolor-G" + ], + "capability": "App::PropertyColor", + "phase": "H", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertycolor-I", + "title": "Promote capability and synchronize blockers: App::PropertyColor", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolor-H" + ], + "capability": "App::PropertyColor", + "phase": "I", + "recordCount": 8, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertycolorlist-A", + "title": "Lock native inventory and preconditions: App::PropertyColorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolor-I" + ], + "capability": "App::PropertyColorList", + "phase": "A", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertycolorlist-B", + "title": "Capture native success evidence: App::PropertyColorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolorlist-A" + ], + "capability": "App::PropertyColorList", + "phase": "B", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertycolorlist-C", + "title": "Capture native failure and cancel evidence: App::PropertyColorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolorlist-B" + ], + "capability": "App::PropertyColorList", + "phase": "C", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertycolorlist-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyColorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolorlist-C" + ], + "capability": "App::PropertyColorList", + "phase": "D", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertycolorlist-E", + "title": "Implement the Facade capability: App::PropertyColorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolorlist-D" + ], + "capability": "App::PropertyColorList", + "phase": "E", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertycolorlist-F", + "title": "Close transaction and recovery behavior: App::PropertyColorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolorlist-E" + ], + "capability": "App::PropertyColorList", + "phase": "F", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertycolorlist-G", + "title": "Close FCStd save, reopen and resave: App::PropertyColorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolorlist-F" + ], + "capability": "App::PropertyColorList", + "phase": "G", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertycolorlist-H", + "title": "Replay in a real browser: App::PropertyColorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolorlist-G" + ], + "capability": "App::PropertyColorList", + "phase": "H", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertycolorlist-I", + "title": "Promote capability and synchronize blockers: App::PropertyColorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolorlist-H" + ], + "capability": "App::PropertyColorList", + "phase": "I", + "recordCount": 2, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertydirection-A", + "title": "Lock native inventory and preconditions: App::PropertyDirection", + "status": "pending", + "dependencies": [ + "PROP-app-propertycolorlist-I" + ], + "capability": "App::PropertyDirection", + "phase": "A", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertydirection-B", + "title": "Capture native success evidence: App::PropertyDirection", + "status": "pending", + "dependencies": [ + "PROP-app-propertydirection-A" + ], + "capability": "App::PropertyDirection", + "phase": "B", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertydirection-C", + "title": "Capture native failure and cancel evidence: App::PropertyDirection", + "status": "pending", + "dependencies": [ + "PROP-app-propertydirection-B" + ], + "capability": "App::PropertyDirection", + "phase": "C", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertydirection-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyDirection", + "status": "pending", + "dependencies": [ + "PROP-app-propertydirection-C" + ], + "capability": "App::PropertyDirection", + "phase": "D", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertydirection-E", + "title": "Implement the Facade capability: App::PropertyDirection", + "status": "pending", + "dependencies": [ + "PROP-app-propertydirection-D" + ], + "capability": "App::PropertyDirection", + "phase": "E", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertydirection-F", + "title": "Close transaction and recovery behavior: App::PropertyDirection", + "status": "pending", + "dependencies": [ + "PROP-app-propertydirection-E" + ], + "capability": "App::PropertyDirection", + "phase": "F", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertydirection-G", + "title": "Close FCStd save, reopen and resave: App::PropertyDirection", + "status": "pending", + "dependencies": [ + "PROP-app-propertydirection-F" + ], + "capability": "App::PropertyDirection", + "phase": "G", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertydirection-H", + "title": "Replay in a real browser: App::PropertyDirection", + "status": "pending", + "dependencies": [ + "PROP-app-propertydirection-G" + ], + "capability": "App::PropertyDirection", + "phase": "H", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertydirection-I", + "title": "Promote capability and synchronize blockers: App::PropertyDirection", + "status": "pending", + "dependencies": [ + "PROP-app-propertydirection-H" + ], + "capability": "App::PropertyDirection", + "phase": "I", + "recordCount": 2, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyfile-A", + "title": "Lock native inventory and preconditions: App::PropertyFile", + "status": "pending", + "dependencies": [ + "PROP-app-propertydirection-I" + ], + "capability": "App::PropertyFile", + "phase": "A", + "recordCount": 16, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyfile-B", + "title": "Capture native success evidence: App::PropertyFile", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfile-A" + ], + "capability": "App::PropertyFile", + "phase": "B", + "recordCount": 16, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyfile-C", + "title": "Capture native failure and cancel evidence: App::PropertyFile", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfile-B" + ], + "capability": "App::PropertyFile", + "phase": "C", + "recordCount": 16, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyfile-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyFile", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfile-C" + ], + "capability": "App::PropertyFile", + "phase": "D", + "recordCount": 16, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyfile-E", + "title": "Implement the Facade capability: App::PropertyFile", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfile-D" + ], + "capability": "App::PropertyFile", + "phase": "E", + "recordCount": 16, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyfile-F", + "title": "Close transaction and recovery behavior: App::PropertyFile", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfile-E" + ], + "capability": "App::PropertyFile", + "phase": "F", + "recordCount": 16, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyfile-G", + "title": "Close FCStd save, reopen and resave: App::PropertyFile", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfile-F" + ], + "capability": "App::PropertyFile", + "phase": "G", + "recordCount": 16, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyfile-H", + "title": "Replay in a real browser: App::PropertyFile", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfile-G" + ], + "capability": "App::PropertyFile", + "phase": "H", + "recordCount": 16, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyfile-I", + "title": "Promote capability and synchronize blockers: App::PropertyFile", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfile-H" + ], + "capability": "App::PropertyFile", + "phase": "I", + "recordCount": 16, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyfileincluded-A", + "title": "Lock native inventory and preconditions: App::PropertyFileIncluded", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfile-I" + ], + "capability": "App::PropertyFileIncluded", + "phase": "A", + "recordCount": 20, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyfileincluded-B", + "title": "Capture native success evidence: App::PropertyFileIncluded", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfileincluded-A" + ], + "capability": "App::PropertyFileIncluded", + "phase": "B", + "recordCount": 20, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyfileincluded-C", + "title": "Capture native failure and cancel evidence: App::PropertyFileIncluded", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfileincluded-B" + ], + "capability": "App::PropertyFileIncluded", + "phase": "C", + "recordCount": 20, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyfileincluded-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyFileIncluded", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfileincluded-C" + ], + "capability": "App::PropertyFileIncluded", + "phase": "D", + "recordCount": 20, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyfileincluded-E", + "title": "Implement the Facade capability: App::PropertyFileIncluded", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfileincluded-D" + ], + "capability": "App::PropertyFileIncluded", + "phase": "E", + "recordCount": 20, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyfileincluded-F", + "title": "Close transaction and recovery behavior: App::PropertyFileIncluded", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfileincluded-E" + ], + "capability": "App::PropertyFileIncluded", + "phase": "F", + "recordCount": 20, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyfileincluded-G", + "title": "Close FCStd save, reopen and resave: App::PropertyFileIncluded", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfileincluded-F" + ], + "capability": "App::PropertyFileIncluded", + "phase": "G", + "recordCount": 20, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyfileincluded-H", + "title": "Replay in a real browser: App::PropertyFileIncluded", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfileincluded-G" + ], + "capability": "App::PropertyFileIncluded", + "phase": "H", + "recordCount": 20, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyfileincluded-I", + "title": "Promote capability and synchronize blockers: App::PropertyFileIncluded", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfileincluded-H" + ], + "capability": "App::PropertyFileIncluded", + "phase": "I", + "recordCount": 20, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyfont-A", + "title": "Lock native inventory and preconditions: App::PropertyFont", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfileincluded-I" + ], + "capability": "App::PropertyFont", + "phase": "A", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyfont-B", + "title": "Capture native success evidence: App::PropertyFont", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfont-A" + ], + "capability": "App::PropertyFont", + "phase": "B", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyfont-C", + "title": "Capture native failure and cancel evidence: App::PropertyFont", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfont-B" + ], + "capability": "App::PropertyFont", + "phase": "C", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyfont-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyFont", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfont-C" + ], + "capability": "App::PropertyFont", + "phase": "D", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyfont-E", + "title": "Implement the Facade capability: App::PropertyFont", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfont-D" + ], + "capability": "App::PropertyFont", + "phase": "E", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyfont-F", + "title": "Close transaction and recovery behavior: App::PropertyFont", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfont-E" + ], + "capability": "App::PropertyFont", + "phase": "F", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyfont-G", + "title": "Close FCStd save, reopen and resave: App::PropertyFont", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfont-F" + ], + "capability": "App::PropertyFont", + "phase": "G", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyfont-H", + "title": "Replay in a real browser: App::PropertyFont", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfont-G" + ], + "capability": "App::PropertyFont", + "phase": "H", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyfont-I", + "title": "Promote capability and synchronize blockers: App::PropertyFont", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfont-H" + ], + "capability": "App::PropertyFont", + "phase": "I", + "recordCount": 2, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyforce-A", + "title": "Lock native inventory and preconditions: App::PropertyForce", + "status": "pending", + "dependencies": [ + "PROP-app-propertyfont-I" + ], + "capability": "App::PropertyForce", + "phase": "A", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyforce-B", + "title": "Capture native success evidence: App::PropertyForce", + "status": "pending", + "dependencies": [ + "PROP-app-propertyforce-A" + ], + "capability": "App::PropertyForce", + "phase": "B", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyforce-C", + "title": "Capture native failure and cancel evidence: App::PropertyForce", + "status": "pending", + "dependencies": [ + "PROP-app-propertyforce-B" + ], + "capability": "App::PropertyForce", + "phase": "C", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyforce-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyForce", + "status": "pending", + "dependencies": [ + "PROP-app-propertyforce-C" + ], + "capability": "App::PropertyForce", + "phase": "D", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyforce-E", + "title": "Implement the Facade capability: App::PropertyForce", + "status": "pending", + "dependencies": [ + "PROP-app-propertyforce-D" + ], + "capability": "App::PropertyForce", + "phase": "E", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyforce-F", + "title": "Close transaction and recovery behavior: App::PropertyForce", + "status": "pending", + "dependencies": [ + "PROP-app-propertyforce-E" + ], + "capability": "App::PropertyForce", + "phase": "F", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyforce-G", + "title": "Close FCStd save, reopen and resave: App::PropertyForce", + "status": "pending", + "dependencies": [ + "PROP-app-propertyforce-F" + ], + "capability": "App::PropertyForce", + "phase": "G", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyforce-H", + "title": "Replay in a real browser: App::PropertyForce", + "status": "pending", + "dependencies": [ + "PROP-app-propertyforce-G" + ], + "capability": "App::PropertyForce", + "phase": "H", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyforce-I", + "title": "Promote capability and synchronize blockers: App::PropertyForce", + "status": "pending", + "dependencies": [ + "PROP-app-propertyforce-H" + ], + "capability": "App::PropertyForce", + "phase": "I", + "recordCount": 4, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyheatflux-A", + "title": "Lock native inventory and preconditions: App::PropertyHeatFlux", + "status": "pending", + "dependencies": [ + "PROP-app-propertyforce-I" + ], + "capability": "App::PropertyHeatFlux", + "phase": "A", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyheatflux-B", + "title": "Capture native success evidence: App::PropertyHeatFlux", + "status": "pending", + "dependencies": [ + "PROP-app-propertyheatflux-A" + ], + "capability": "App::PropertyHeatFlux", + "phase": "B", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyheatflux-C", + "title": "Capture native failure and cancel evidence: App::PropertyHeatFlux", + "status": "pending", + "dependencies": [ + "PROP-app-propertyheatflux-B" + ], + "capability": "App::PropertyHeatFlux", + "phase": "C", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyheatflux-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyHeatFlux", + "status": "pending", + "dependencies": [ + "PROP-app-propertyheatflux-C" + ], + "capability": "App::PropertyHeatFlux", + "phase": "D", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyheatflux-E", + "title": "Implement the Facade capability: App::PropertyHeatFlux", + "status": "pending", + "dependencies": [ + "PROP-app-propertyheatflux-D" + ], + "capability": "App::PropertyHeatFlux", + "phase": "E", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyheatflux-F", + "title": "Close transaction and recovery behavior: App::PropertyHeatFlux", + "status": "pending", + "dependencies": [ + "PROP-app-propertyheatflux-E" + ], + "capability": "App::PropertyHeatFlux", + "phase": "F", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyheatflux-G", + "title": "Close FCStd save, reopen and resave: App::PropertyHeatFlux", + "status": "pending", + "dependencies": [ + "PROP-app-propertyheatflux-F" + ], + "capability": "App::PropertyHeatFlux", + "phase": "G", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyheatflux-H", + "title": "Replay in a real browser: App::PropertyHeatFlux", + "status": "pending", + "dependencies": [ + "PROP-app-propertyheatflux-G" + ], + "capability": "App::PropertyHeatFlux", + "phase": "H", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyheatflux-I", + "title": "Promote capability and synchronize blockers: App::PropertyHeatFlux", + "status": "pending", + "dependencies": [ + "PROP-app-propertyheatflux-H" + ], + "capability": "App::PropertyHeatFlux", + "phase": "I", + "recordCount": 1, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyintegerset-A", + "title": "Lock native inventory and preconditions: App::PropertyIntegerSet", + "status": "pending", + "dependencies": [ + "PROP-app-propertyheatflux-I" + ], + "capability": "App::PropertyIntegerSet", + "phase": "A", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyintegerset-B", + "title": "Capture native success evidence: App::PropertyIntegerSet", + "status": "pending", + "dependencies": [ + "PROP-app-propertyintegerset-A" + ], + "capability": "App::PropertyIntegerSet", + "phase": "B", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyintegerset-C", + "title": "Capture native failure and cancel evidence: App::PropertyIntegerSet", + "status": "pending", + "dependencies": [ + "PROP-app-propertyintegerset-B" + ], + "capability": "App::PropertyIntegerSet", + "phase": "C", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyintegerset-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyIntegerSet", + "status": "pending", + "dependencies": [ + "PROP-app-propertyintegerset-C" + ], + "capability": "App::PropertyIntegerSet", + "phase": "D", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyintegerset-E", + "title": "Implement the Facade capability: App::PropertyIntegerSet", + "status": "pending", + "dependencies": [ + "PROP-app-propertyintegerset-D" + ], + "capability": "App::PropertyIntegerSet", + "phase": "E", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyintegerset-F", + "title": "Close transaction and recovery behavior: App::PropertyIntegerSet", + "status": "pending", + "dependencies": [ + "PROP-app-propertyintegerset-E" + ], + "capability": "App::PropertyIntegerSet", + "phase": "F", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyintegerset-G", + "title": "Close FCStd save, reopen and resave: App::PropertyIntegerSet", + "status": "pending", + "dependencies": [ + "PROP-app-propertyintegerset-F" + ], + "capability": "App::PropertyIntegerSet", + "phase": "G", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyintegerset-H", + "title": "Replay in a real browser: App::PropertyIntegerSet", + "status": "pending", + "dependencies": [ + "PROP-app-propertyintegerset-G" + ], + "capability": "App::PropertyIntegerSet", + "phase": "H", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyintegerset-I", + "title": "Promote capability and synchronize blockers: App::PropertyIntegerSet", + "status": "pending", + "dependencies": [ + "PROP-app-propertyintegerset-H" + ], + "capability": "App::PropertyIntegerSet", + "phase": "I", + "recordCount": 2, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertylinklisthidden-A", + "title": "Lock native inventory and preconditions: App::PropertyLinkListHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertyintegerset-I" + ], + "capability": "App::PropertyLinkListHidden", + "phase": "A", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertylinklisthidden-B", + "title": "Capture native success evidence: App::PropertyLinkListHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinklisthidden-A" + ], + "capability": "App::PropertyLinkListHidden", + "phase": "B", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertylinklisthidden-C", + "title": "Capture native failure and cancel evidence: App::PropertyLinkListHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinklisthidden-B" + ], + "capability": "App::PropertyLinkListHidden", + "phase": "C", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertylinklisthidden-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyLinkListHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinklisthidden-C" + ], + "capability": "App::PropertyLinkListHidden", + "phase": "D", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertylinklisthidden-E", + "title": "Implement the Facade capability: App::PropertyLinkListHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinklisthidden-D" + ], + "capability": "App::PropertyLinkListHidden", + "phase": "E", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertylinklisthidden-F", + "title": "Close transaction and recovery behavior: App::PropertyLinkListHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinklisthidden-E" + ], + "capability": "App::PropertyLinkListHidden", + "phase": "F", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertylinklisthidden-G", + "title": "Close FCStd save, reopen and resave: App::PropertyLinkListHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinklisthidden-F" + ], + "capability": "App::PropertyLinkListHidden", + "phase": "G", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertylinklisthidden-H", + "title": "Replay in a real browser: App::PropertyLinkListHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinklisthidden-G" + ], + "capability": "App::PropertyLinkListHidden", + "phase": "H", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertylinklisthidden-I", + "title": "Promote capability and synchronize blockers: App::PropertyLinkListHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinklisthidden-H" + ], + "capability": "App::PropertyLinkListHidden", + "phase": "I", + "recordCount": 2, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertylinksubhidden-A", + "title": "Lock native inventory and preconditions: App::PropertyLinkSubHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinklisthidden-I" + ], + "capability": "App::PropertyLinkSubHidden", + "phase": "A", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertylinksubhidden-B", + "title": "Capture native success evidence: App::PropertyLinkSubHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksubhidden-A" + ], + "capability": "App::PropertyLinkSubHidden", + "phase": "B", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertylinksubhidden-C", + "title": "Capture native failure and cancel evidence: App::PropertyLinkSubHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksubhidden-B" + ], + "capability": "App::PropertyLinkSubHidden", + "phase": "C", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertylinksubhidden-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyLinkSubHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksubhidden-C" + ], + "capability": "App::PropertyLinkSubHidden", + "phase": "D", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertylinksubhidden-E", + "title": "Implement the Facade capability: App::PropertyLinkSubHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksubhidden-D" + ], + "capability": "App::PropertyLinkSubHidden", + "phase": "E", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertylinksubhidden-F", + "title": "Close transaction and recovery behavior: App::PropertyLinkSubHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksubhidden-E" + ], + "capability": "App::PropertyLinkSubHidden", + "phase": "F", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertylinksubhidden-G", + "title": "Close FCStd save, reopen and resave: App::PropertyLinkSubHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksubhidden-F" + ], + "capability": "App::PropertyLinkSubHidden", + "phase": "G", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertylinksubhidden-H", + "title": "Replay in a real browser: App::PropertyLinkSubHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksubhidden-G" + ], + "capability": "App::PropertyLinkSubHidden", + "phase": "H", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertylinksubhidden-I", + "title": "Promote capability and synchronize blockers: App::PropertyLinkSubHidden", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksubhidden-H" + ], + "capability": "App::PropertyLinkSubHidden", + "phase": "I", + "recordCount": 4, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertylinksublistglobal-A", + "title": "Lock native inventory and preconditions: App::PropertyLinkSubListGlobal", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksubhidden-I" + ], + "capability": "App::PropertyLinkSubListGlobal", + "phase": "A", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertylinksublistglobal-B", + "title": "Capture native success evidence: App::PropertyLinkSubListGlobal", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksublistglobal-A" + ], + "capability": "App::PropertyLinkSubListGlobal", + "phase": "B", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertylinksublistglobal-C", + "title": "Capture native failure and cancel evidence: App::PropertyLinkSubListGlobal", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksublistglobal-B" + ], + "capability": "App::PropertyLinkSubListGlobal", + "phase": "C", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertylinksublistglobal-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyLinkSubListGlobal", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksublistglobal-C" + ], + "capability": "App::PropertyLinkSubListGlobal", + "phase": "D", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertylinksublistglobal-E", + "title": "Implement the Facade capability: App::PropertyLinkSubListGlobal", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksublistglobal-D" + ], + "capability": "App::PropertyLinkSubListGlobal", + "phase": "E", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertylinksublistglobal-F", + "title": "Close transaction and recovery behavior: App::PropertyLinkSubListGlobal", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksublistglobal-E" + ], + "capability": "App::PropertyLinkSubListGlobal", + "phase": "F", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertylinksublistglobal-G", + "title": "Close FCStd save, reopen and resave: App::PropertyLinkSubListGlobal", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksublistglobal-F" + ], + "capability": "App::PropertyLinkSubListGlobal", + "phase": "G", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertylinksublistglobal-H", + "title": "Replay in a real browser: App::PropertyLinkSubListGlobal", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksublistglobal-G" + ], + "capability": "App::PropertyLinkSubListGlobal", + "phase": "H", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertylinksublistglobal-I", + "title": "Promote capability and synchronize blockers: App::PropertyLinkSubListGlobal", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksublistglobal-H" + ], + "capability": "App::PropertyLinkSubListGlobal", + "phase": "I", + "recordCount": 1, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertymap-A", + "title": "Lock native inventory and preconditions: App::PropertyMap", + "status": "pending", + "dependencies": [ + "PROP-app-propertylinksublistglobal-I" + ], + "capability": "App::PropertyMap", + "phase": "A", + "recordCount": 9, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertymap-B", + "title": "Capture native success evidence: App::PropertyMap", + "status": "pending", + "dependencies": [ + "PROP-app-propertymap-A" + ], + "capability": "App::PropertyMap", + "phase": "B", + "recordCount": 9, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertymap-C", + "title": "Capture native failure and cancel evidence: App::PropertyMap", + "status": "pending", + "dependencies": [ + "PROP-app-propertymap-B" + ], + "capability": "App::PropertyMap", + "phase": "C", + "recordCount": 9, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertymap-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyMap", + "status": "pending", + "dependencies": [ + "PROP-app-propertymap-C" + ], + "capability": "App::PropertyMap", + "phase": "D", + "recordCount": 9, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertymap-E", + "title": "Implement the Facade capability: App::PropertyMap", + "status": "pending", + "dependencies": [ + "PROP-app-propertymap-D" + ], + "capability": "App::PropertyMap", + "phase": "E", + "recordCount": 9, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertymap-F", + "title": "Close transaction and recovery behavior: App::PropertyMap", + "status": "pending", + "dependencies": [ + "PROP-app-propertymap-E" + ], + "capability": "App::PropertyMap", + "phase": "F", + "recordCount": 9, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertymap-G", + "title": "Close FCStd save, reopen and resave: App::PropertyMap", + "status": "pending", + "dependencies": [ + "PROP-app-propertymap-F" + ], + "capability": "App::PropertyMap", + "phase": "G", + "recordCount": 9, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertymap-H", + "title": "Replay in a real browser: App::PropertyMap", + "status": "pending", + "dependencies": [ + "PROP-app-propertymap-G" + ], + "capability": "App::PropertyMap", + "phase": "H", + "recordCount": 9, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertymap-I", + "title": "Promote capability and synchronize blockers: App::PropertyMap", + "status": "pending", + "dependencies": [ + "PROP-app-propertymap-H" + ], + "capability": "App::PropertyMap", + "phase": "I", + "recordCount": 9, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertymaterial-A", + "title": "Lock native inventory and preconditions: App::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-app-propertymap-I" + ], + "capability": "App::PropertyMaterial", + "phase": "A", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertymaterial-B", + "title": "Capture native success evidence: App::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-app-propertymaterial-A" + ], + "capability": "App::PropertyMaterial", + "phase": "B", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertymaterial-C", + "title": "Capture native failure and cancel evidence: App::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-app-propertymaterial-B" + ], + "capability": "App::PropertyMaterial", + "phase": "C", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertymaterial-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-app-propertymaterial-C" + ], + "capability": "App::PropertyMaterial", + "phase": "D", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertymaterial-E", + "title": "Implement the Facade capability: App::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-app-propertymaterial-D" + ], + "capability": "App::PropertyMaterial", + "phase": "E", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertymaterial-F", + "title": "Close transaction and recovery behavior: App::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-app-propertymaterial-E" + ], + "capability": "App::PropertyMaterial", + "phase": "F", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertymaterial-G", + "title": "Close FCStd save, reopen and resave: App::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-app-propertymaterial-F" + ], + "capability": "App::PropertyMaterial", + "phase": "G", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertymaterial-H", + "title": "Replay in a real browser: App::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-app-propertymaterial-G" + ], + "capability": "App::PropertyMaterial", + "phase": "H", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertymaterial-I", + "title": "Promote capability and synchronize blockers: App::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-app-propertymaterial-H" + ], + "capability": "App::PropertyMaterial", + "phase": "I", + "recordCount": 2, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertymateriallist-A", + "title": "Lock native inventory and preconditions: App::PropertyMaterialList", + "status": "pending", + "dependencies": [ + "PROP-app-propertymaterial-I" + ], + "capability": "App::PropertyMaterialList", + "phase": "A", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertymateriallist-B", + "title": "Capture native success evidence: App::PropertyMaterialList", + "status": "pending", + "dependencies": [ + "PROP-app-propertymateriallist-A" + ], + "capability": "App::PropertyMaterialList", + "phase": "B", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertymateriallist-C", + "title": "Capture native failure and cancel evidence: App::PropertyMaterialList", + "status": "pending", + "dependencies": [ + "PROP-app-propertymateriallist-B" + ], + "capability": "App::PropertyMaterialList", + "phase": "C", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertymateriallist-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyMaterialList", + "status": "pending", + "dependencies": [ + "PROP-app-propertymateriallist-C" + ], + "capability": "App::PropertyMaterialList", + "phase": "D", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertymateriallist-E", + "title": "Implement the Facade capability: App::PropertyMaterialList", + "status": "pending", + "dependencies": [ + "PROP-app-propertymateriallist-D" + ], + "capability": "App::PropertyMaterialList", + "phase": "E", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertymateriallist-F", + "title": "Close transaction and recovery behavior: App::PropertyMaterialList", + "status": "pending", + "dependencies": [ + "PROP-app-propertymateriallist-E" + ], + "capability": "App::PropertyMaterialList", + "phase": "F", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertymateriallist-G", + "title": "Close FCStd save, reopen and resave: App::PropertyMaterialList", + "status": "pending", + "dependencies": [ + "PROP-app-propertymateriallist-F" + ], + "capability": "App::PropertyMaterialList", + "phase": "G", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertymateriallist-H", + "title": "Replay in a real browser: App::PropertyMaterialList", + "status": "pending", + "dependencies": [ + "PROP-app-propertymateriallist-G" + ], + "capability": "App::PropertyMaterialList", + "phase": "H", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertymateriallist-I", + "title": "Promote capability and synchronize blockers: App::PropertyMaterialList", + "status": "pending", + "dependencies": [ + "PROP-app-propertymateriallist-H" + ], + "capability": "App::PropertyMaterialList", + "phase": "I", + "recordCount": 2, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertymatrix-A", + "title": "Lock native inventory and preconditions: App::PropertyMatrix", + "status": "pending", + "dependencies": [ + "PROP-app-propertymateriallist-I" + ], + "capability": "App::PropertyMatrix", + "phase": "A", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertymatrix-B", + "title": "Capture native success evidence: App::PropertyMatrix", + "status": "pending", + "dependencies": [ + "PROP-app-propertymatrix-A" + ], + "capability": "App::PropertyMatrix", + "phase": "B", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertymatrix-C", + "title": "Capture native failure and cancel evidence: App::PropertyMatrix", + "status": "pending", + "dependencies": [ + "PROP-app-propertymatrix-B" + ], + "capability": "App::PropertyMatrix", + "phase": "C", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertymatrix-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyMatrix", + "status": "pending", + "dependencies": [ + "PROP-app-propertymatrix-C" + ], + "capability": "App::PropertyMatrix", + "phase": "D", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertymatrix-E", + "title": "Implement the Facade capability: App::PropertyMatrix", + "status": "pending", + "dependencies": [ + "PROP-app-propertymatrix-D" + ], + "capability": "App::PropertyMatrix", + "phase": "E", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertymatrix-F", + "title": "Close transaction and recovery behavior: App::PropertyMatrix", + "status": "pending", + "dependencies": [ + "PROP-app-propertymatrix-E" + ], + "capability": "App::PropertyMatrix", + "phase": "F", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertymatrix-G", + "title": "Close FCStd save, reopen and resave: App::PropertyMatrix", + "status": "pending", + "dependencies": [ + "PROP-app-propertymatrix-F" + ], + "capability": "App::PropertyMatrix", + "phase": "G", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertymatrix-H", + "title": "Replay in a real browser: App::PropertyMatrix", + "status": "pending", + "dependencies": [ + "PROP-app-propertymatrix-G" + ], + "capability": "App::PropertyMatrix", + "phase": "H", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertymatrix-I", + "title": "Promote capability and synchronize blockers: App::PropertyMatrix", + "status": "pending", + "dependencies": [ + "PROP-app-propertymatrix-H" + ], + "capability": "App::PropertyMatrix", + "phase": "I", + "recordCount": 4, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertymoment-A", + "title": "Lock native inventory and preconditions: App::PropertyMoment", + "status": "pending", + "dependencies": [ + "PROP-app-propertymatrix-I" + ], + "capability": "App::PropertyMoment", + "phase": "A", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertymoment-B", + "title": "Capture native success evidence: App::PropertyMoment", + "status": "pending", + "dependencies": [ + "PROP-app-propertymoment-A" + ], + "capability": "App::PropertyMoment", + "phase": "B", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertymoment-C", + "title": "Capture native failure and cancel evidence: App::PropertyMoment", + "status": "pending", + "dependencies": [ + "PROP-app-propertymoment-B" + ], + "capability": "App::PropertyMoment", + "phase": "C", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertymoment-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyMoment", + "status": "pending", + "dependencies": [ + "PROP-app-propertymoment-C" + ], + "capability": "App::PropertyMoment", + "phase": "D", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertymoment-E", + "title": "Implement the Facade capability: App::PropertyMoment", + "status": "pending", + "dependencies": [ + "PROP-app-propertymoment-D" + ], + "capability": "App::PropertyMoment", + "phase": "E", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertymoment-F", + "title": "Close transaction and recovery behavior: App::PropertyMoment", + "status": "pending", + "dependencies": [ + "PROP-app-propertymoment-E" + ], + "capability": "App::PropertyMoment", + "phase": "F", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertymoment-G", + "title": "Close FCStd save, reopen and resave: App::PropertyMoment", + "status": "pending", + "dependencies": [ + "PROP-app-propertymoment-F" + ], + "capability": "App::PropertyMoment", + "phase": "G", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertymoment-H", + "title": "Replay in a real browser: App::PropertyMoment", + "status": "pending", + "dependencies": [ + "PROP-app-propertymoment-G" + ], + "capability": "App::PropertyMoment", + "phase": "H", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertymoment-I", + "title": "Promote capability and synchronize blockers: App::PropertyMoment", + "status": "pending", + "dependencies": [ + "PROP-app-propertymoment-H" + ], + "capability": "App::PropertyMoment", + "phase": "I", + "recordCount": 3, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertypath-A", + "title": "Lock native inventory and preconditions: App::PropertyPath", + "status": "pending", + "dependencies": [ + "PROP-app-propertymoment-I" + ], + "capability": "App::PropertyPath", + "phase": "A", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertypath-B", + "title": "Capture native success evidence: App::PropertyPath", + "status": "pending", + "dependencies": [ + "PROP-app-propertypath-A" + ], + "capability": "App::PropertyPath", + "phase": "B", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertypath-C", + "title": "Capture native failure and cancel evidence: App::PropertyPath", + "status": "pending", + "dependencies": [ + "PROP-app-propertypath-B" + ], + "capability": "App::PropertyPath", + "phase": "C", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertypath-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyPath", + "status": "pending", + "dependencies": [ + "PROP-app-propertypath-C" + ], + "capability": "App::PropertyPath", + "phase": "D", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertypath-E", + "title": "Implement the Facade capability: App::PropertyPath", + "status": "pending", + "dependencies": [ + "PROP-app-propertypath-D" + ], + "capability": "App::PropertyPath", + "phase": "E", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertypath-F", + "title": "Close transaction and recovery behavior: App::PropertyPath", + "status": "pending", + "dependencies": [ + "PROP-app-propertypath-E" + ], + "capability": "App::PropertyPath", + "phase": "F", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertypath-G", + "title": "Close FCStd save, reopen and resave: App::PropertyPath", + "status": "pending", + "dependencies": [ + "PROP-app-propertypath-F" + ], + "capability": "App::PropertyPath", + "phase": "G", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertypath-H", + "title": "Replay in a real browser: App::PropertyPath", + "status": "pending", + "dependencies": [ + "PROP-app-propertypath-G" + ], + "capability": "App::PropertyPath", + "phase": "H", + "recordCount": 8, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertypath-I", + "title": "Promote capability and synchronize blockers: App::PropertyPath", + "status": "pending", + "dependencies": [ + "PROP-app-propertypath-H" + ], + "capability": "App::PropertyPath", + "phase": "I", + "recordCount": 8, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyplacementlist-A", + "title": "Lock native inventory and preconditions: App::PropertyPlacementList", + "status": "pending", + "dependencies": [ + "PROP-app-propertypath-I" + ], + "capability": "App::PropertyPlacementList", + "phase": "A", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyplacementlist-B", + "title": "Capture native success evidence: App::PropertyPlacementList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyplacementlist-A" + ], + "capability": "App::PropertyPlacementList", + "phase": "B", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyplacementlist-C", + "title": "Capture native failure and cancel evidence: App::PropertyPlacementList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyplacementlist-B" + ], + "capability": "App::PropertyPlacementList", + "phase": "C", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyplacementlist-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyPlacementList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyplacementlist-C" + ], + "capability": "App::PropertyPlacementList", + "phase": "D", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyplacementlist-E", + "title": "Implement the Facade capability: App::PropertyPlacementList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyplacementlist-D" + ], + "capability": "App::PropertyPlacementList", + "phase": "E", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyplacementlist-F", + "title": "Close transaction and recovery behavior: App::PropertyPlacementList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyplacementlist-E" + ], + "capability": "App::PropertyPlacementList", + "phase": "F", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyplacementlist-G", + "title": "Close FCStd save, reopen and resave: App::PropertyPlacementList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyplacementlist-F" + ], + "capability": "App::PropertyPlacementList", + "phase": "G", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyplacementlist-H", + "title": "Replay in a real browser: App::PropertyPlacementList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyplacementlist-G" + ], + "capability": "App::PropertyPlacementList", + "phase": "H", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyplacementlist-I", + "title": "Promote capability and synchronize blockers: App::PropertyPlacementList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyplacementlist-H" + ], + "capability": "App::PropertyPlacementList", + "phase": "I", + "recordCount": 2, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyposition-A", + "title": "Lock native inventory and preconditions: App::PropertyPosition", + "status": "pending", + "dependencies": [ + "PROP-app-propertyplacementlist-I" + ], + "capability": "App::PropertyPosition", + "phase": "A", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyposition-B", + "title": "Capture native success evidence: App::PropertyPosition", + "status": "pending", + "dependencies": [ + "PROP-app-propertyposition-A" + ], + "capability": "App::PropertyPosition", + "phase": "B", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyposition-C", + "title": "Capture native failure and cancel evidence: App::PropertyPosition", + "status": "pending", + "dependencies": [ + "PROP-app-propertyposition-B" + ], + "capability": "App::PropertyPosition", + "phase": "C", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyposition-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyPosition", + "status": "pending", + "dependencies": [ + "PROP-app-propertyposition-C" + ], + "capability": "App::PropertyPosition", + "phase": "D", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyposition-E", + "title": "Implement the Facade capability: App::PropertyPosition", + "status": "pending", + "dependencies": [ + "PROP-app-propertyposition-D" + ], + "capability": "App::PropertyPosition", + "phase": "E", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyposition-F", + "title": "Close transaction and recovery behavior: App::PropertyPosition", + "status": "pending", + "dependencies": [ + "PROP-app-propertyposition-E" + ], + "capability": "App::PropertyPosition", + "phase": "F", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyposition-G", + "title": "Close FCStd save, reopen and resave: App::PropertyPosition", + "status": "pending", + "dependencies": [ + "PROP-app-propertyposition-F" + ], + "capability": "App::PropertyPosition", + "phase": "G", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyposition-H", + "title": "Replay in a real browser: App::PropertyPosition", + "status": "pending", + "dependencies": [ + "PROP-app-propertyposition-G" + ], + "capability": "App::PropertyPosition", + "phase": "H", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyposition-I", + "title": "Promote capability and synchronize blockers: App::PropertyPosition", + "status": "pending", + "dependencies": [ + "PROP-app-propertyposition-H" + ], + "capability": "App::PropertyPosition", + "phase": "I", + "recordCount": 4, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertypower-A", + "title": "Lock native inventory and preconditions: App::PropertyPower", + "status": "pending", + "dependencies": [ + "PROP-app-propertyposition-I" + ], + "capability": "App::PropertyPower", + "phase": "A", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertypower-B", + "title": "Capture native success evidence: App::PropertyPower", + "status": "pending", + "dependencies": [ + "PROP-app-propertypower-A" + ], + "capability": "App::PropertyPower", + "phase": "B", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertypower-C", + "title": "Capture native failure and cancel evidence: App::PropertyPower", + "status": "pending", + "dependencies": [ + "PROP-app-propertypower-B" + ], + "capability": "App::PropertyPower", + "phase": "C", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertypower-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyPower", + "status": "pending", + "dependencies": [ + "PROP-app-propertypower-C" + ], + "capability": "App::PropertyPower", + "phase": "D", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertypower-E", + "title": "Implement the Facade capability: App::PropertyPower", + "status": "pending", + "dependencies": [ + "PROP-app-propertypower-D" + ], + "capability": "App::PropertyPower", + "phase": "E", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertypower-F", + "title": "Close transaction and recovery behavior: App::PropertyPower", + "status": "pending", + "dependencies": [ + "PROP-app-propertypower-E" + ], + "capability": "App::PropertyPower", + "phase": "F", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertypower-G", + "title": "Close FCStd save, reopen and resave: App::PropertyPower", + "status": "pending", + "dependencies": [ + "PROP-app-propertypower-F" + ], + "capability": "App::PropertyPower", + "phase": "G", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertypower-H", + "title": "Replay in a real browser: App::PropertyPower", + "status": "pending", + "dependencies": [ + "PROP-app-propertypower-G" + ], + "capability": "App::PropertyPower", + "phase": "H", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertypower-I", + "title": "Promote capability and synchronize blockers: App::PropertyPower", + "status": "pending", + "dependencies": [ + "PROP-app-propertypower-H" + ], + "capability": "App::PropertyPower", + "phase": "I", + "recordCount": 1, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertypressure-A", + "title": "Lock native inventory and preconditions: App::PropertyPressure", + "status": "pending", + "dependencies": [ + "PROP-app-propertypower-I" + ], + "capability": "App::PropertyPressure", + "phase": "A", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertypressure-B", + "title": "Capture native success evidence: App::PropertyPressure", + "status": "pending", + "dependencies": [ + "PROP-app-propertypressure-A" + ], + "capability": "App::PropertyPressure", + "phase": "B", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertypressure-C", + "title": "Capture native failure and cancel evidence: App::PropertyPressure", + "status": "pending", + "dependencies": [ + "PROP-app-propertypressure-B" + ], + "capability": "App::PropertyPressure", + "phase": "C", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertypressure-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyPressure", + "status": "pending", + "dependencies": [ + "PROP-app-propertypressure-C" + ], + "capability": "App::PropertyPressure", + "phase": "D", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertypressure-E", + "title": "Implement the Facade capability: App::PropertyPressure", + "status": "pending", + "dependencies": [ + "PROP-app-propertypressure-D" + ], + "capability": "App::PropertyPressure", + "phase": "E", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertypressure-F", + "title": "Close transaction and recovery behavior: App::PropertyPressure", + "status": "pending", + "dependencies": [ + "PROP-app-propertypressure-E" + ], + "capability": "App::PropertyPressure", + "phase": "F", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertypressure-G", + "title": "Close FCStd save, reopen and resave: App::PropertyPressure", + "status": "pending", + "dependencies": [ + "PROP-app-propertypressure-F" + ], + "capability": "App::PropertyPressure", + "phase": "G", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertypressure-H", + "title": "Replay in a real browser: App::PropertyPressure", + "status": "pending", + "dependencies": [ + "PROP-app-propertypressure-G" + ], + "capability": "App::PropertyPressure", + "phase": "H", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertypressure-I", + "title": "Promote capability and synchronize blockers: App::PropertyPressure", + "status": "pending", + "dependencies": [ + "PROP-app-propertypressure-H" + ], + "capability": "App::PropertyPressure", + "phase": "I", + "recordCount": 1, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertypythonobject-A", + "title": "Lock native inventory and preconditions: App::PropertyPythonObject", + "status": "pending", + "dependencies": [ + "PROP-app-propertypressure-I" + ], + "capability": "App::PropertyPythonObject", + "phase": "A", + "recordCount": 55, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertypythonobject-B", + "title": "Capture native success evidence: App::PropertyPythonObject", + "status": "pending", + "dependencies": [ + "PROP-app-propertypythonobject-A" + ], + "capability": "App::PropertyPythonObject", + "phase": "B", + "recordCount": 55, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertypythonobject-C", + "title": "Capture native failure and cancel evidence: App::PropertyPythonObject", + "status": "pending", + "dependencies": [ + "PROP-app-propertypythonobject-B" + ], + "capability": "App::PropertyPythonObject", + "phase": "C", + "recordCount": 55, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertypythonobject-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyPythonObject", + "status": "pending", + "dependencies": [ + "PROP-app-propertypythonobject-C" + ], + "capability": "App::PropertyPythonObject", + "phase": "D", + "recordCount": 55, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertypythonobject-E", + "title": "Implement the Facade capability: App::PropertyPythonObject", + "status": "pending", + "dependencies": [ + "PROP-app-propertypythonobject-D" + ], + "capability": "App::PropertyPythonObject", + "phase": "E", + "recordCount": 55, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertypythonobject-F", + "title": "Close transaction and recovery behavior: App::PropertyPythonObject", + "status": "pending", + "dependencies": [ + "PROP-app-propertypythonobject-E" + ], + "capability": "App::PropertyPythonObject", + "phase": "F", + "recordCount": 55, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertypythonobject-G", + "title": "Close FCStd save, reopen and resave: App::PropertyPythonObject", + "status": "pending", + "dependencies": [ + "PROP-app-propertypythonobject-F" + ], + "capability": "App::PropertyPythonObject", + "phase": "G", + "recordCount": 55, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertypythonobject-H", + "title": "Replay in a real browser: App::PropertyPythonObject", + "status": "pending", + "dependencies": [ + "PROP-app-propertypythonobject-G" + ], + "capability": "App::PropertyPythonObject", + "phase": "H", + "recordCount": 55, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertypythonobject-I", + "title": "Promote capability and synchronize blockers: App::PropertyPythonObject", + "status": "pending", + "dependencies": [ + "PROP-app-propertypythonobject-H" + ], + "capability": "App::PropertyPythonObject", + "phase": "I", + "recordCount": 55, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyquantity-A", + "title": "Lock native inventory and preconditions: App::PropertyQuantity", + "status": "pending", + "dependencies": [ + "PROP-app-propertypythonobject-I" + ], + "capability": "App::PropertyQuantity", + "phase": "A", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyquantity-B", + "title": "Capture native success evidence: App::PropertyQuantity", + "status": "pending", + "dependencies": [ + "PROP-app-propertyquantity-A" + ], + "capability": "App::PropertyQuantity", + "phase": "B", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyquantity-C", + "title": "Capture native failure and cancel evidence: App::PropertyQuantity", + "status": "pending", + "dependencies": [ + "PROP-app-propertyquantity-B" + ], + "capability": "App::PropertyQuantity", + "phase": "C", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyquantity-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyQuantity", + "status": "pending", + "dependencies": [ + "PROP-app-propertyquantity-C" + ], + "capability": "App::PropertyQuantity", + "phase": "D", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyquantity-E", + "title": "Implement the Facade capability: App::PropertyQuantity", + "status": "pending", + "dependencies": [ + "PROP-app-propertyquantity-D" + ], + "capability": "App::PropertyQuantity", + "phase": "E", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyquantity-F", + "title": "Close transaction and recovery behavior: App::PropertyQuantity", + "status": "pending", + "dependencies": [ + "PROP-app-propertyquantity-E" + ], + "capability": "App::PropertyQuantity", + "phase": "F", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyquantity-G", + "title": "Close FCStd save, reopen and resave: App::PropertyQuantity", + "status": "pending", + "dependencies": [ + "PROP-app-propertyquantity-F" + ], + "capability": "App::PropertyQuantity", + "phase": "G", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyquantity-H", + "title": "Replay in a real browser: App::PropertyQuantity", + "status": "pending", + "dependencies": [ + "PROP-app-propertyquantity-G" + ], + "capability": "App::PropertyQuantity", + "phase": "H", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyquantity-I", + "title": "Promote capability and synchronize blockers: App::PropertyQuantity", + "status": "pending", + "dependencies": [ + "PROP-app-propertyquantity-H" + ], + "capability": "App::PropertyQuantity", + "phase": "I", + "recordCount": 5, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyrotation-A", + "title": "Lock native inventory and preconditions: App::PropertyRotation", + "status": "pending", + "dependencies": [ + "PROP-app-propertyquantity-I" + ], + "capability": "App::PropertyRotation", + "phase": "A", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyrotation-B", + "title": "Capture native success evidence: App::PropertyRotation", + "status": "pending", + "dependencies": [ + "PROP-app-propertyrotation-A" + ], + "capability": "App::PropertyRotation", + "phase": "B", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyrotation-C", + "title": "Capture native failure and cancel evidence: App::PropertyRotation", + "status": "pending", + "dependencies": [ + "PROP-app-propertyrotation-B" + ], + "capability": "App::PropertyRotation", + "phase": "C", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyrotation-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyRotation", + "status": "pending", + "dependencies": [ + "PROP-app-propertyrotation-C" + ], + "capability": "App::PropertyRotation", + "phase": "D", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyrotation-E", + "title": "Implement the Facade capability: App::PropertyRotation", + "status": "pending", + "dependencies": [ + "PROP-app-propertyrotation-D" + ], + "capability": "App::PropertyRotation", + "phase": "E", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyrotation-F", + "title": "Close transaction and recovery behavior: App::PropertyRotation", + "status": "pending", + "dependencies": [ + "PROP-app-propertyrotation-E" + ], + "capability": "App::PropertyRotation", + "phase": "F", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyrotation-G", + "title": "Close FCStd save, reopen and resave: App::PropertyRotation", + "status": "pending", + "dependencies": [ + "PROP-app-propertyrotation-F" + ], + "capability": "App::PropertyRotation", + "phase": "G", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyrotation-H", + "title": "Replay in a real browser: App::PropertyRotation", + "status": "pending", + "dependencies": [ + "PROP-app-propertyrotation-G" + ], + "capability": "App::PropertyRotation", + "phase": "H", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyrotation-I", + "title": "Promote capability and synchronize blockers: App::PropertyRotation", + "status": "pending", + "dependencies": [ + "PROP-app-propertyrotation-H" + ], + "capability": "App::PropertyRotation", + "phase": "I", + "recordCount": 2, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyspeed-A", + "title": "Lock native inventory and preconditions: App::PropertySpeed", + "status": "pending", + "dependencies": [ + "PROP-app-propertyrotation-I" + ], + "capability": "App::PropertySpeed", + "phase": "A", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyspeed-B", + "title": "Capture native success evidence: App::PropertySpeed", + "status": "pending", + "dependencies": [ + "PROP-app-propertyspeed-A" + ], + "capability": "App::PropertySpeed", + "phase": "B", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyspeed-C", + "title": "Capture native failure and cancel evidence: App::PropertySpeed", + "status": "pending", + "dependencies": [ + "PROP-app-propertyspeed-B" + ], + "capability": "App::PropertySpeed", + "phase": "C", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyspeed-D", + "title": "Capture parameter mutation and restore evidence: App::PropertySpeed", + "status": "pending", + "dependencies": [ + "PROP-app-propertyspeed-C" + ], + "capability": "App::PropertySpeed", + "phase": "D", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyspeed-E", + "title": "Implement the Facade capability: App::PropertySpeed", + "status": "pending", + "dependencies": [ + "PROP-app-propertyspeed-D" + ], + "capability": "App::PropertySpeed", + "phase": "E", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyspeed-F", + "title": "Close transaction and recovery behavior: App::PropertySpeed", + "status": "pending", + "dependencies": [ + "PROP-app-propertyspeed-E" + ], + "capability": "App::PropertySpeed", + "phase": "F", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyspeed-G", + "title": "Close FCStd save, reopen and resave: App::PropertySpeed", + "status": "pending", + "dependencies": [ + "PROP-app-propertyspeed-F" + ], + "capability": "App::PropertySpeed", + "phase": "G", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyspeed-H", + "title": "Replay in a real browser: App::PropertySpeed", + "status": "pending", + "dependencies": [ + "PROP-app-propertyspeed-G" + ], + "capability": "App::PropertySpeed", + "phase": "H", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyspeed-I", + "title": "Promote capability and synchronize blockers: App::PropertySpeed", + "status": "pending", + "dependencies": [ + "PROP-app-propertyspeed-H" + ], + "capability": "App::PropertySpeed", + "phase": "I", + "recordCount": 1, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertystiffness-A", + "title": "Lock native inventory and preconditions: App::PropertyStiffness", + "status": "pending", + "dependencies": [ + "PROP-app-propertyspeed-I" + ], + "capability": "App::PropertyStiffness", + "phase": "A", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertystiffness-B", + "title": "Capture native success evidence: App::PropertyStiffness", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffness-A" + ], + "capability": "App::PropertyStiffness", + "phase": "B", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertystiffness-C", + "title": "Capture native failure and cancel evidence: App::PropertyStiffness", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffness-B" + ], + "capability": "App::PropertyStiffness", + "phase": "C", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertystiffness-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyStiffness", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffness-C" + ], + "capability": "App::PropertyStiffness", + "phase": "D", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertystiffness-E", + "title": "Implement the Facade capability: App::PropertyStiffness", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffness-D" + ], + "capability": "App::PropertyStiffness", + "phase": "E", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertystiffness-F", + "title": "Close transaction and recovery behavior: App::PropertyStiffness", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffness-E" + ], + "capability": "App::PropertyStiffness", + "phase": "F", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertystiffness-G", + "title": "Close FCStd save, reopen and resave: App::PropertyStiffness", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffness-F" + ], + "capability": "App::PropertyStiffness", + "phase": "G", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertystiffness-H", + "title": "Replay in a real browser: App::PropertyStiffness", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffness-G" + ], + "capability": "App::PropertyStiffness", + "phase": "H", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertystiffness-I", + "title": "Promote capability and synchronize blockers: App::PropertyStiffness", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffness-H" + ], + "capability": "App::PropertyStiffness", + "phase": "I", + "recordCount": 2, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertystiffnessdensity-A", + "title": "Lock native inventory and preconditions: App::PropertyStiffnessDensity", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffness-I" + ], + "capability": "App::PropertyStiffnessDensity", + "phase": "A", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertystiffnessdensity-B", + "title": "Capture native success evidence: App::PropertyStiffnessDensity", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffnessdensity-A" + ], + "capability": "App::PropertyStiffnessDensity", + "phase": "B", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertystiffnessdensity-C", + "title": "Capture native failure and cancel evidence: App::PropertyStiffnessDensity", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffnessdensity-B" + ], + "capability": "App::PropertyStiffnessDensity", + "phase": "C", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertystiffnessdensity-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyStiffnessDensity", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffnessdensity-C" + ], + "capability": "App::PropertyStiffnessDensity", + "phase": "D", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertystiffnessdensity-E", + "title": "Implement the Facade capability: App::PropertyStiffnessDensity", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffnessdensity-D" + ], + "capability": "App::PropertyStiffnessDensity", + "phase": "E", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertystiffnessdensity-F", + "title": "Close transaction and recovery behavior: App::PropertyStiffnessDensity", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffnessdensity-E" + ], + "capability": "App::PropertyStiffnessDensity", + "phase": "F", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertystiffnessdensity-G", + "title": "Close FCStd save, reopen and resave: App::PropertyStiffnessDensity", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffnessdensity-F" + ], + "capability": "App::PropertyStiffnessDensity", + "phase": "G", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertystiffnessdensity-H", + "title": "Replay in a real browser: App::PropertyStiffnessDensity", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffnessdensity-G" + ], + "capability": "App::PropertyStiffnessDensity", + "phase": "H", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertystiffnessdensity-I", + "title": "Promote capability and synchronize blockers: App::PropertyStiffnessDensity", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffnessdensity-H" + ], + "capability": "App::PropertyStiffnessDensity", + "phase": "I", + "recordCount": 2, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertytemperature-A", + "title": "Lock native inventory and preconditions: App::PropertyTemperature", + "status": "pending", + "dependencies": [ + "PROP-app-propertystiffnessdensity-I" + ], + "capability": "App::PropertyTemperature", + "phase": "A", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertytemperature-B", + "title": "Capture native success evidence: App::PropertyTemperature", + "status": "pending", + "dependencies": [ + "PROP-app-propertytemperature-A" + ], + "capability": "App::PropertyTemperature", + "phase": "B", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertytemperature-C", + "title": "Capture native failure and cancel evidence: App::PropertyTemperature", + "status": "pending", + "dependencies": [ + "PROP-app-propertytemperature-B" + ], + "capability": "App::PropertyTemperature", + "phase": "C", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertytemperature-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyTemperature", + "status": "pending", + "dependencies": [ + "PROP-app-propertytemperature-C" + ], + "capability": "App::PropertyTemperature", + "phase": "D", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertytemperature-E", + "title": "Implement the Facade capability: App::PropertyTemperature", + "status": "pending", + "dependencies": [ + "PROP-app-propertytemperature-D" + ], + "capability": "App::PropertyTemperature", + "phase": "E", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertytemperature-F", + "title": "Close transaction and recovery behavior: App::PropertyTemperature", + "status": "pending", + "dependencies": [ + "PROP-app-propertytemperature-E" + ], + "capability": "App::PropertyTemperature", + "phase": "F", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertytemperature-G", + "title": "Close FCStd save, reopen and resave: App::PropertyTemperature", + "status": "pending", + "dependencies": [ + "PROP-app-propertytemperature-F" + ], + "capability": "App::PropertyTemperature", + "phase": "G", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertytemperature-H", + "title": "Replay in a real browser: App::PropertyTemperature", + "status": "pending", + "dependencies": [ + "PROP-app-propertytemperature-G" + ], + "capability": "App::PropertyTemperature", + "phase": "H", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertytemperature-I", + "title": "Promote capability and synchronize blockers: App::PropertyTemperature", + "status": "pending", + "dependencies": [ + "PROP-app-propertytemperature-H" + ], + "capability": "App::PropertyTemperature", + "phase": "I", + "recordCount": 4, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertythermaltransfercoefficient-A", + "title": "Lock native inventory and preconditions: App::PropertyThermalTransferCoefficient", + "status": "pending", + "dependencies": [ + "PROP-app-propertytemperature-I" + ], + "capability": "App::PropertyThermalTransferCoefficient", + "phase": "A", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertythermaltransfercoefficient-B", + "title": "Capture native success evidence: App::PropertyThermalTransferCoefficient", + "status": "pending", + "dependencies": [ + "PROP-app-propertythermaltransfercoefficient-A" + ], + "capability": "App::PropertyThermalTransferCoefficient", + "phase": "B", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertythermaltransfercoefficient-C", + "title": "Capture native failure and cancel evidence: App::PropertyThermalTransferCoefficient", + "status": "pending", + "dependencies": [ + "PROP-app-propertythermaltransfercoefficient-B" + ], + "capability": "App::PropertyThermalTransferCoefficient", + "phase": "C", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertythermaltransfercoefficient-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyThermalTransferCoefficient", + "status": "pending", + "dependencies": [ + "PROP-app-propertythermaltransfercoefficient-C" + ], + "capability": "App::PropertyThermalTransferCoefficient", + "phase": "D", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertythermaltransfercoefficient-E", + "title": "Implement the Facade capability: App::PropertyThermalTransferCoefficient", + "status": "pending", + "dependencies": [ + "PROP-app-propertythermaltransfercoefficient-D" + ], + "capability": "App::PropertyThermalTransferCoefficient", + "phase": "E", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertythermaltransfercoefficient-F", + "title": "Close transaction and recovery behavior: App::PropertyThermalTransferCoefficient", + "status": "pending", + "dependencies": [ + "PROP-app-propertythermaltransfercoefficient-E" + ], + "capability": "App::PropertyThermalTransferCoefficient", + "phase": "F", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertythermaltransfercoefficient-G", + "title": "Close FCStd save, reopen and resave: App::PropertyThermalTransferCoefficient", + "status": "pending", + "dependencies": [ + "PROP-app-propertythermaltransfercoefficient-F" + ], + "capability": "App::PropertyThermalTransferCoefficient", + "phase": "G", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertythermaltransfercoefficient-H", + "title": "Replay in a real browser: App::PropertyThermalTransferCoefficient", + "status": "pending", + "dependencies": [ + "PROP-app-propertythermaltransfercoefficient-G" + ], + "capability": "App::PropertyThermalTransferCoefficient", + "phase": "H", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertythermaltransfercoefficient-I", + "title": "Promote capability and synchronize blockers: App::PropertyThermalTransferCoefficient", + "status": "pending", + "dependencies": [ + "PROP-app-propertythermaltransfercoefficient-H" + ], + "capability": "App::PropertyThermalTransferCoefficient", + "phase": "I", + "recordCount": 1, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyuuid-A", + "title": "Lock native inventory and preconditions: App::PropertyUUID", + "status": "pending", + "dependencies": [ + "PROP-app-propertythermaltransfercoefficient-I" + ], + "capability": "App::PropertyUUID", + "phase": "A", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyuuid-B", + "title": "Capture native success evidence: App::PropertyUUID", + "status": "pending", + "dependencies": [ + "PROP-app-propertyuuid-A" + ], + "capability": "App::PropertyUUID", + "phase": "B", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyuuid-C", + "title": "Capture native failure and cancel evidence: App::PropertyUUID", + "status": "pending", + "dependencies": [ + "PROP-app-propertyuuid-B" + ], + "capability": "App::PropertyUUID", + "phase": "C", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyuuid-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyUUID", + "status": "pending", + "dependencies": [ + "PROP-app-propertyuuid-C" + ], + "capability": "App::PropertyUUID", + "phase": "D", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyuuid-E", + "title": "Implement the Facade capability: App::PropertyUUID", + "status": "pending", + "dependencies": [ + "PROP-app-propertyuuid-D" + ], + "capability": "App::PropertyUUID", + "phase": "E", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyuuid-F", + "title": "Close transaction and recovery behavior: App::PropertyUUID", + "status": "pending", + "dependencies": [ + "PROP-app-propertyuuid-E" + ], + "capability": "App::PropertyUUID", + "phase": "F", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyuuid-G", + "title": "Close FCStd save, reopen and resave: App::PropertyUUID", + "status": "pending", + "dependencies": [ + "PROP-app-propertyuuid-F" + ], + "capability": "App::PropertyUUID", + "phase": "G", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyuuid-H", + "title": "Replay in a real browser: App::PropertyUUID", + "status": "pending", + "dependencies": [ + "PROP-app-propertyuuid-G" + ], + "capability": "App::PropertyUUID", + "phase": "H", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyuuid-I", + "title": "Promote capability and synchronize blockers: App::PropertyUUID", + "status": "pending", + "dependencies": [ + "PROP-app-propertyuuid-H" + ], + "capability": "App::PropertyUUID", + "phase": "I", + "recordCount": 5, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyvectordistance-A", + "title": "Lock native inventory and preconditions: App::PropertyVectorDistance", + "status": "pending", + "dependencies": [ + "PROP-app-propertyuuid-I" + ], + "capability": "App::PropertyVectorDistance", + "phase": "A", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyvectordistance-B", + "title": "Capture native success evidence: App::PropertyVectorDistance", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectordistance-A" + ], + "capability": "App::PropertyVectorDistance", + "phase": "B", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyvectordistance-C", + "title": "Capture native failure and cancel evidence: App::PropertyVectorDistance", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectordistance-B" + ], + "capability": "App::PropertyVectorDistance", + "phase": "C", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyvectordistance-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyVectorDistance", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectordistance-C" + ], + "capability": "App::PropertyVectorDistance", + "phase": "D", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyvectordistance-E", + "title": "Implement the Facade capability: App::PropertyVectorDistance", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectordistance-D" + ], + "capability": "App::PropertyVectorDistance", + "phase": "E", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyvectordistance-F", + "title": "Close transaction and recovery behavior: App::PropertyVectorDistance", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectordistance-E" + ], + "capability": "App::PropertyVectorDistance", + "phase": "F", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyvectordistance-G", + "title": "Close FCStd save, reopen and resave: App::PropertyVectorDistance", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectordistance-F" + ], + "capability": "App::PropertyVectorDistance", + "phase": "G", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyvectordistance-H", + "title": "Replay in a real browser: App::PropertyVectorDistance", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectordistance-G" + ], + "capability": "App::PropertyVectorDistance", + "phase": "H", + "recordCount": 7, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyvectordistance-I", + "title": "Promote capability and synchronize blockers: App::PropertyVectorDistance", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectordistance-H" + ], + "capability": "App::PropertyVectorDistance", + "phase": "I", + "recordCount": 7, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyvectorlist-A", + "title": "Lock native inventory and preconditions: App::PropertyVectorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectordistance-I" + ], + "capability": "App::PropertyVectorList", + "phase": "A", + "recordCount": 46, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyvectorlist-B", + "title": "Capture native success evidence: App::PropertyVectorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectorlist-A" + ], + "capability": "App::PropertyVectorList", + "phase": "B", + "recordCount": 46, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyvectorlist-C", + "title": "Capture native failure and cancel evidence: App::PropertyVectorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectorlist-B" + ], + "capability": "App::PropertyVectorList", + "phase": "C", + "recordCount": 46, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyvectorlist-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyVectorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectorlist-C" + ], + "capability": "App::PropertyVectorList", + "phase": "D", + "recordCount": 46, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyvectorlist-E", + "title": "Implement the Facade capability: App::PropertyVectorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectorlist-D" + ], + "capability": "App::PropertyVectorList", + "phase": "E", + "recordCount": 46, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyvectorlist-F", + "title": "Close transaction and recovery behavior: App::PropertyVectorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectorlist-E" + ], + "capability": "App::PropertyVectorList", + "phase": "F", + "recordCount": 46, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyvectorlist-G", + "title": "Close FCStd save, reopen and resave: App::PropertyVectorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectorlist-F" + ], + "capability": "App::PropertyVectorList", + "phase": "G", + "recordCount": 46, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyvectorlist-H", + "title": "Replay in a real browser: App::PropertyVectorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectorlist-G" + ], + "capability": "App::PropertyVectorList", + "phase": "H", + "recordCount": 46, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyvectorlist-I", + "title": "Promote capability and synchronize blockers: App::PropertyVectorList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectorlist-H" + ], + "capability": "App::PropertyVectorList", + "phase": "I", + "recordCount": 46, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyxlink-A", + "title": "Lock native inventory and preconditions: App::PropertyXLink", + "status": "pending", + "dependencies": [ + "PROP-app-propertyvectorlist-I" + ], + "capability": "App::PropertyXLink", + "phase": "A", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyxlink-B", + "title": "Capture native success evidence: App::PropertyXLink", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlink-A" + ], + "capability": "App::PropertyXLink", + "phase": "B", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyxlink-C", + "title": "Capture native failure and cancel evidence: App::PropertyXLink", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlink-B" + ], + "capability": "App::PropertyXLink", + "phase": "C", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyxlink-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyXLink", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlink-C" + ], + "capability": "App::PropertyXLink", + "phase": "D", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyxlink-E", + "title": "Implement the Facade capability: App::PropertyXLink", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlink-D" + ], + "capability": "App::PropertyXLink", + "phase": "E", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyxlink-F", + "title": "Close transaction and recovery behavior: App::PropertyXLink", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlink-E" + ], + "capability": "App::PropertyXLink", + "phase": "F", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyxlink-G", + "title": "Close FCStd save, reopen and resave: App::PropertyXLink", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlink-F" + ], + "capability": "App::PropertyXLink", + "phase": "G", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyxlink-H", + "title": "Replay in a real browser: App::PropertyXLink", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlink-G" + ], + "capability": "App::PropertyXLink", + "phase": "H", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyxlink-I", + "title": "Promote capability and synchronize blockers: App::PropertyXLink", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlink-H" + ], + "capability": "App::PropertyXLink", + "phase": "I", + "recordCount": 11, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyxlinklist-A", + "title": "Lock native inventory and preconditions: App::PropertyXLinkList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlink-I" + ], + "capability": "App::PropertyXLinkList", + "phase": "A", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyxlinklist-B", + "title": "Capture native success evidence: App::PropertyXLinkList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinklist-A" + ], + "capability": "App::PropertyXLinkList", + "phase": "B", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyxlinklist-C", + "title": "Capture native failure and cancel evidence: App::PropertyXLinkList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinklist-B" + ], + "capability": "App::PropertyXLinkList", + "phase": "C", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyxlinklist-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyXLinkList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinklist-C" + ], + "capability": "App::PropertyXLinkList", + "phase": "D", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyxlinklist-E", + "title": "Implement the Facade capability: App::PropertyXLinkList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinklist-D" + ], + "capability": "App::PropertyXLinkList", + "phase": "E", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyxlinklist-F", + "title": "Close transaction and recovery behavior: App::PropertyXLinkList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinklist-E" + ], + "capability": "App::PropertyXLinkList", + "phase": "F", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyxlinklist-G", + "title": "Close FCStd save, reopen and resave: App::PropertyXLinkList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinklist-F" + ], + "capability": "App::PropertyXLinkList", + "phase": "G", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyxlinklist-H", + "title": "Replay in a real browser: App::PropertyXLinkList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinklist-G" + ], + "capability": "App::PropertyXLinkList", + "phase": "H", + "recordCount": 11, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyxlinklist-I", + "title": "Promote capability and synchronize blockers: App::PropertyXLinkList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinklist-H" + ], + "capability": "App::PropertyXLinkList", + "phase": "I", + "recordCount": 11, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyxlinksub-A", + "title": "Lock native inventory and preconditions: App::PropertyXLinkSub", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinklist-I" + ], + "capability": "App::PropertyXLinkSub", + "phase": "A", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyxlinksub-B", + "title": "Capture native success evidence: App::PropertyXLinkSub", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksub-A" + ], + "capability": "App::PropertyXLinkSub", + "phase": "B", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyxlinksub-C", + "title": "Capture native failure and cancel evidence: App::PropertyXLinkSub", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksub-B" + ], + "capability": "App::PropertyXLinkSub", + "phase": "C", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyxlinksub-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyXLinkSub", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksub-C" + ], + "capability": "App::PropertyXLinkSub", + "phase": "D", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyxlinksub-E", + "title": "Implement the Facade capability: App::PropertyXLinkSub", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksub-D" + ], + "capability": "App::PropertyXLinkSub", + "phase": "E", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyxlinksub-F", + "title": "Close transaction and recovery behavior: App::PropertyXLinkSub", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksub-E" + ], + "capability": "App::PropertyXLinkSub", + "phase": "F", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyxlinksub-G", + "title": "Close FCStd save, reopen and resave: App::PropertyXLinkSub", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksub-F" + ], + "capability": "App::PropertyXLinkSub", + "phase": "G", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyxlinksub-H", + "title": "Replay in a real browser: App::PropertyXLinkSub", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksub-G" + ], + "capability": "App::PropertyXLinkSub", + "phase": "H", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyxlinksub-I", + "title": "Promote capability and synchronize blockers: App::PropertyXLinkSub", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksub-H" + ], + "capability": "App::PropertyXLinkSub", + "phase": "I", + "recordCount": 2, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-app-propertyxlinksublist-A", + "title": "Lock native inventory and preconditions: App::PropertyXLinkSubList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksub-I" + ], + "capability": "App::PropertyXLinkSubList", + "phase": "A", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-app-propertyxlinksublist-B", + "title": "Capture native success evidence: App::PropertyXLinkSubList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksublist-A" + ], + "capability": "App::PropertyXLinkSubList", + "phase": "B", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-app-propertyxlinksublist-C", + "title": "Capture native failure and cancel evidence: App::PropertyXLinkSubList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksublist-B" + ], + "capability": "App::PropertyXLinkSubList", + "phase": "C", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-app-propertyxlinksublist-D", + "title": "Capture parameter mutation and restore evidence: App::PropertyXLinkSubList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksublist-C" + ], + "capability": "App::PropertyXLinkSubList", + "phase": "D", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-app-propertyxlinksublist-E", + "title": "Implement the Facade capability: App::PropertyXLinkSubList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksublist-D" + ], + "capability": "App::PropertyXLinkSubList", + "phase": "E", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-app-propertyxlinksublist-F", + "title": "Close transaction and recovery behavior: App::PropertyXLinkSubList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksublist-E" + ], + "capability": "App::PropertyXLinkSubList", + "phase": "F", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-app-propertyxlinksublist-G", + "title": "Close FCStd save, reopen and resave: App::PropertyXLinkSubList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksublist-F" + ], + "capability": "App::PropertyXLinkSubList", + "phase": "G", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-app-propertyxlinksublist-H", + "title": "Replay in a real browser: App::PropertyXLinkSubList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksublist-G" + ], + "capability": "App::PropertyXLinkSubList", + "phase": "H", + "recordCount": 2, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-app-propertyxlinksublist-I", + "title": "Promote capability and synchronize blockers: App::PropertyXLinkSubList", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksublist-H" + ], + "capability": "App::PropertyXLinkSubList", + "phase": "I", + "recordCount": 2, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-fem-propertyfemmesh-A", + "title": "Lock native inventory and preconditions: Fem::PropertyFemMesh", + "status": "pending", + "dependencies": [ + "PROP-app-propertyxlinksublist-I" + ], + "capability": "Fem::PropertyFemMesh", + "phase": "A", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-fem-propertyfemmesh-B", + "title": "Capture native success evidence: Fem::PropertyFemMesh", + "status": "pending", + "dependencies": [ + "PROP-fem-propertyfemmesh-A" + ], + "capability": "Fem::PropertyFemMesh", + "phase": "B", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-fem-propertyfemmesh-C", + "title": "Capture native failure and cancel evidence: Fem::PropertyFemMesh", + "status": "pending", + "dependencies": [ + "PROP-fem-propertyfemmesh-B" + ], + "capability": "Fem::PropertyFemMesh", + "phase": "C", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-fem-propertyfemmesh-D", + "title": "Capture parameter mutation and restore evidence: Fem::PropertyFemMesh", + "status": "pending", + "dependencies": [ + "PROP-fem-propertyfemmesh-C" + ], + "capability": "Fem::PropertyFemMesh", + "phase": "D", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-fem-propertyfemmesh-E", + "title": "Implement the Facade capability: Fem::PropertyFemMesh", + "status": "pending", + "dependencies": [ + "PROP-fem-propertyfemmesh-D" + ], + "capability": "Fem::PropertyFemMesh", + "phase": "E", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-fem-propertyfemmesh-F", + "title": "Close transaction and recovery behavior: Fem::PropertyFemMesh", + "status": "pending", + "dependencies": [ + "PROP-fem-propertyfemmesh-E" + ], + "capability": "Fem::PropertyFemMesh", + "phase": "F", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-fem-propertyfemmesh-G", + "title": "Close FCStd save, reopen and resave: Fem::PropertyFemMesh", + "status": "pending", + "dependencies": [ + "PROP-fem-propertyfemmesh-F" + ], + "capability": "Fem::PropertyFemMesh", + "phase": "G", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-fem-propertyfemmesh-H", + "title": "Replay in a real browser: Fem::PropertyFemMesh", + "status": "pending", + "dependencies": [ + "PROP-fem-propertyfemmesh-G" + ], + "capability": "Fem::PropertyFemMesh", + "phase": "H", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-fem-propertyfemmesh-I", + "title": "Promote capability and synchronize blockers: Fem::PropertyFemMesh", + "status": "pending", + "dependencies": [ + "PROP-fem-propertyfemmesh-H" + ], + "capability": "Fem::PropertyFemMesh", + "phase": "I", + "recordCount": 6, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-fem-propertypostdataobject-A", + "title": "Lock native inventory and preconditions: Fem::PropertyPostDataObject", + "status": "pending", + "dependencies": [ + "PROP-fem-propertyfemmesh-I" + ], + "capability": "Fem::PropertyPostDataObject", + "phase": "A", + "recordCount": 13, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-fem-propertypostdataobject-B", + "title": "Capture native success evidence: Fem::PropertyPostDataObject", + "status": "pending", + "dependencies": [ + "PROP-fem-propertypostdataobject-A" + ], + "capability": "Fem::PropertyPostDataObject", + "phase": "B", + "recordCount": 13, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-fem-propertypostdataobject-C", + "title": "Capture native failure and cancel evidence: Fem::PropertyPostDataObject", + "status": "pending", + "dependencies": [ + "PROP-fem-propertypostdataobject-B" + ], + "capability": "Fem::PropertyPostDataObject", + "phase": "C", + "recordCount": 13, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-fem-propertypostdataobject-D", + "title": "Capture parameter mutation and restore evidence: Fem::PropertyPostDataObject", + "status": "pending", + "dependencies": [ + "PROP-fem-propertypostdataobject-C" + ], + "capability": "Fem::PropertyPostDataObject", + "phase": "D", + "recordCount": 13, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-fem-propertypostdataobject-E", + "title": "Implement the Facade capability: Fem::PropertyPostDataObject", + "status": "pending", + "dependencies": [ + "PROP-fem-propertypostdataobject-D" + ], + "capability": "Fem::PropertyPostDataObject", + "phase": "E", + "recordCount": 13, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-fem-propertypostdataobject-F", + "title": "Close transaction and recovery behavior: Fem::PropertyPostDataObject", + "status": "pending", + "dependencies": [ + "PROP-fem-propertypostdataobject-E" + ], + "capability": "Fem::PropertyPostDataObject", + "phase": "F", + "recordCount": 13, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-fem-propertypostdataobject-G", + "title": "Close FCStd save, reopen and resave: Fem::PropertyPostDataObject", + "status": "pending", + "dependencies": [ + "PROP-fem-propertypostdataobject-F" + ], + "capability": "Fem::PropertyPostDataObject", + "phase": "G", + "recordCount": 13, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-fem-propertypostdataobject-H", + "title": "Replay in a real browser: Fem::PropertyPostDataObject", + "status": "pending", + "dependencies": [ + "PROP-fem-propertypostdataobject-G" + ], + "capability": "Fem::PropertyPostDataObject", + "phase": "H", + "recordCount": 13, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-fem-propertypostdataobject-I", + "title": "Promote capability and synchronize blockers: Fem::PropertyPostDataObject", + "status": "pending", + "dependencies": [ + "PROP-fem-propertypostdataobject-H" + ], + "capability": "Fem::PropertyPostDataObject", + "phase": "I", + "recordCount": 13, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-inspection-propertydistancelist-A", + "title": "Lock native inventory and preconditions: Inspection::PropertyDistanceList", + "status": "pending", + "dependencies": [ + "PROP-fem-propertypostdataobject-I" + ], + "capability": "Inspection::PropertyDistanceList", + "phase": "A", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-inspection-propertydistancelist-B", + "title": "Capture native success evidence: Inspection::PropertyDistanceList", + "status": "pending", + "dependencies": [ + "PROP-inspection-propertydistancelist-A" + ], + "capability": "Inspection::PropertyDistanceList", + "phase": "B", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-inspection-propertydistancelist-C", + "title": "Capture native failure and cancel evidence: Inspection::PropertyDistanceList", + "status": "pending", + "dependencies": [ + "PROP-inspection-propertydistancelist-B" + ], + "capability": "Inspection::PropertyDistanceList", + "phase": "C", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-inspection-propertydistancelist-D", + "title": "Capture parameter mutation and restore evidence: Inspection::PropertyDistanceList", + "status": "pending", + "dependencies": [ + "PROP-inspection-propertydistancelist-C" + ], + "capability": "Inspection::PropertyDistanceList", + "phase": "D", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-inspection-propertydistancelist-E", + "title": "Implement the Facade capability: Inspection::PropertyDistanceList", + "status": "pending", + "dependencies": [ + "PROP-inspection-propertydistancelist-D" + ], + "capability": "Inspection::PropertyDistanceList", + "phase": "E", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-inspection-propertydistancelist-F", + "title": "Close transaction and recovery behavior: Inspection::PropertyDistanceList", + "status": "pending", + "dependencies": [ + "PROP-inspection-propertydistancelist-E" + ], + "capability": "Inspection::PropertyDistanceList", + "phase": "F", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-inspection-propertydistancelist-G", + "title": "Close FCStd save, reopen and resave: Inspection::PropertyDistanceList", + "status": "pending", + "dependencies": [ + "PROP-inspection-propertydistancelist-F" + ], + "capability": "Inspection::PropertyDistanceList", + "phase": "G", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-inspection-propertydistancelist-H", + "title": "Replay in a real browser: Inspection::PropertyDistanceList", + "status": "pending", + "dependencies": [ + "PROP-inspection-propertydistancelist-G" + ], + "capability": "Inspection::PropertyDistanceList", + "phase": "H", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-inspection-propertydistancelist-I", + "title": "Promote capability and synchronize blockers: Inspection::PropertyDistanceList", + "status": "pending", + "dependencies": [ + "PROP-inspection-propertydistancelist-H" + ], + "capability": "Inspection::PropertyDistanceList", + "phase": "I", + "recordCount": 1, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-materials-propertymaterial-A", + "title": "Lock native inventory and preconditions: Materials::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-inspection-propertydistancelist-I" + ], + "capability": "Materials::PropertyMaterial", + "phase": "A", + "recordCount": 142, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-materials-propertymaterial-B", + "title": "Capture native success evidence: Materials::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-materials-propertymaterial-A" + ], + "capability": "Materials::PropertyMaterial", + "phase": "B", + "recordCount": 142, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-materials-propertymaterial-C", + "title": "Capture native failure and cancel evidence: Materials::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-materials-propertymaterial-B" + ], + "capability": "Materials::PropertyMaterial", + "phase": "C", + "recordCount": 142, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-materials-propertymaterial-D", + "title": "Capture parameter mutation and restore evidence: Materials::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-materials-propertymaterial-C" + ], + "capability": "Materials::PropertyMaterial", + "phase": "D", + "recordCount": 142, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-materials-propertymaterial-E", + "title": "Implement the Facade capability: Materials::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-materials-propertymaterial-D" + ], + "capability": "Materials::PropertyMaterial", + "phase": "E", + "recordCount": 142, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-materials-propertymaterial-F", + "title": "Close transaction and recovery behavior: Materials::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-materials-propertymaterial-E" + ], + "capability": "Materials::PropertyMaterial", + "phase": "F", + "recordCount": 142, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-materials-propertymaterial-G", + "title": "Close FCStd save, reopen and resave: Materials::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-materials-propertymaterial-F" + ], + "capability": "Materials::PropertyMaterial", + "phase": "G", + "recordCount": 142, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-materials-propertymaterial-H", + "title": "Replay in a real browser: Materials::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-materials-propertymaterial-G" + ], + "capability": "Materials::PropertyMaterial", + "phase": "H", + "recordCount": 142, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-materials-propertymaterial-I", + "title": "Promote capability and synchronize blockers: Materials::PropertyMaterial", + "status": "pending", + "dependencies": [ + "PROP-materials-propertymaterial-H" + ], + "capability": "Materials::PropertyMaterial", + "phase": "I", + "recordCount": 142, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-mesh-propertycurvaturelist-A", + "title": "Lock native inventory and preconditions: Mesh::PropertyCurvatureList", + "status": "pending", + "dependencies": [ + "PROP-materials-propertymaterial-I" + ], + "capability": "Mesh::PropertyCurvatureList", + "phase": "A", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-mesh-propertycurvaturelist-B", + "title": "Capture native success evidence: Mesh::PropertyCurvatureList", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertycurvaturelist-A" + ], + "capability": "Mesh::PropertyCurvatureList", + "phase": "B", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-mesh-propertycurvaturelist-C", + "title": "Capture native failure and cancel evidence: Mesh::PropertyCurvatureList", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertycurvaturelist-B" + ], + "capability": "Mesh::PropertyCurvatureList", + "phase": "C", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-mesh-propertycurvaturelist-D", + "title": "Capture parameter mutation and restore evidence: Mesh::PropertyCurvatureList", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertycurvaturelist-C" + ], + "capability": "Mesh::PropertyCurvatureList", + "phase": "D", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-mesh-propertycurvaturelist-E", + "title": "Implement the Facade capability: Mesh::PropertyCurvatureList", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertycurvaturelist-D" + ], + "capability": "Mesh::PropertyCurvatureList", + "phase": "E", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-mesh-propertycurvaturelist-F", + "title": "Close transaction and recovery behavior: Mesh::PropertyCurvatureList", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertycurvaturelist-E" + ], + "capability": "Mesh::PropertyCurvatureList", + "phase": "F", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-mesh-propertycurvaturelist-G", + "title": "Close FCStd save, reopen and resave: Mesh::PropertyCurvatureList", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertycurvaturelist-F" + ], + "capability": "Mesh::PropertyCurvatureList", + "phase": "G", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-mesh-propertycurvaturelist-H", + "title": "Replay in a real browser: Mesh::PropertyCurvatureList", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertycurvaturelist-G" + ], + "capability": "Mesh::PropertyCurvatureList", + "phase": "H", + "recordCount": 1, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-mesh-propertycurvaturelist-I", + "title": "Promote capability and synchronize blockers: Mesh::PropertyCurvatureList", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertycurvaturelist-H" + ], + "capability": "Mesh::PropertyCurvatureList", + "phase": "I", + "recordCount": 1, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-mesh-propertymeshkernel-A", + "title": "Lock native inventory and preconditions: Mesh::PropertyMeshKernel", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertycurvaturelist-I" + ], + "capability": "Mesh::PropertyMeshKernel", + "phase": "A", + "recordCount": 25, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-mesh-propertymeshkernel-B", + "title": "Capture native success evidence: Mesh::PropertyMeshKernel", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertymeshkernel-A" + ], + "capability": "Mesh::PropertyMeshKernel", + "phase": "B", + "recordCount": 25, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-mesh-propertymeshkernel-C", + "title": "Capture native failure and cancel evidence: Mesh::PropertyMeshKernel", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertymeshkernel-B" + ], + "capability": "Mesh::PropertyMeshKernel", + "phase": "C", + "recordCount": 25, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-mesh-propertymeshkernel-D", + "title": "Capture parameter mutation and restore evidence: Mesh::PropertyMeshKernel", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertymeshkernel-C" + ], + "capability": "Mesh::PropertyMeshKernel", + "phase": "D", + "recordCount": 25, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-mesh-propertymeshkernel-E", + "title": "Implement the Facade capability: Mesh::PropertyMeshKernel", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertymeshkernel-D" + ], + "capability": "Mesh::PropertyMeshKernel", + "phase": "E", + "recordCount": 25, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-mesh-propertymeshkernel-F", + "title": "Close transaction and recovery behavior: Mesh::PropertyMeshKernel", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertymeshkernel-E" + ], + "capability": "Mesh::PropertyMeshKernel", + "phase": "F", + "recordCount": 25, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-mesh-propertymeshkernel-G", + "title": "Close FCStd save, reopen and resave: Mesh::PropertyMeshKernel", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertymeshkernel-F" + ], + "capability": "Mesh::PropertyMeshKernel", + "phase": "G", + "recordCount": 25, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-mesh-propertymeshkernel-H", + "title": "Replay in a real browser: Mesh::PropertyMeshKernel", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertymeshkernel-G" + ], + "capability": "Mesh::PropertyMeshKernel", + "phase": "H", + "recordCount": 25, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-mesh-propertymeshkernel-I", + "title": "Promote capability and synchronize blockers: Mesh::PropertyMeshKernel", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertymeshkernel-H" + ], + "capability": "Mesh::PropertyMeshKernel", + "phase": "I", + "recordCount": 25, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-part-propertyfilletedges-A", + "title": "Lock native inventory and preconditions: Part::PropertyFilletEdges", + "status": "pending", + "dependencies": [ + "PROP-mesh-propertymeshkernel-I" + ], + "capability": "Part::PropertyFilletEdges", + "phase": "A", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-part-propertyfilletedges-B", + "title": "Capture native success evidence: Part::PropertyFilletEdges", + "status": "pending", + "dependencies": [ + "PROP-part-propertyfilletedges-A" + ], + "capability": "Part::PropertyFilletEdges", + "phase": "B", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-part-propertyfilletedges-C", + "title": "Capture native failure and cancel evidence: Part::PropertyFilletEdges", + "status": "pending", + "dependencies": [ + "PROP-part-propertyfilletedges-B" + ], + "capability": "Part::PropertyFilletEdges", + "phase": "C", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-part-propertyfilletedges-D", + "title": "Capture parameter mutation and restore evidence: Part::PropertyFilletEdges", + "status": "pending", + "dependencies": [ + "PROP-part-propertyfilletedges-C" + ], + "capability": "Part::PropertyFilletEdges", + "phase": "D", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-part-propertyfilletedges-E", + "title": "Implement the Facade capability: Part::PropertyFilletEdges", + "status": "pending", + "dependencies": [ + "PROP-part-propertyfilletedges-D" + ], + "capability": "Part::PropertyFilletEdges", + "phase": "E", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-part-propertyfilletedges-F", + "title": "Close transaction and recovery behavior: Part::PropertyFilletEdges", + "status": "pending", + "dependencies": [ + "PROP-part-propertyfilletedges-E" + ], + "capability": "Part::PropertyFilletEdges", + "phase": "F", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-part-propertyfilletedges-G", + "title": "Close FCStd save, reopen and resave: Part::PropertyFilletEdges", + "status": "pending", + "dependencies": [ + "PROP-part-propertyfilletedges-F" + ], + "capability": "Part::PropertyFilletEdges", + "phase": "G", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-part-propertyfilletedges-H", + "title": "Replay in a real browser: Part::PropertyFilletEdges", + "status": "pending", + "dependencies": [ + "PROP-part-propertyfilletedges-G" + ], + "capability": "Part::PropertyFilletEdges", + "phase": "H", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-part-propertyfilletedges-I", + "title": "Promote capability and synchronize blockers: Part::PropertyFilletEdges", + "status": "pending", + "dependencies": [ + "PROP-part-propertyfilletedges-H" + ], + "capability": "Part::PropertyFilletEdges", + "phase": "I", + "recordCount": 3, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-part-propertyshapehistory-A", + "title": "Lock native inventory and preconditions: Part::PropertyShapeHistory", + "status": "pending", + "dependencies": [ + "PROP-part-propertyfilletedges-I" + ], + "capability": "Part::PropertyShapeHistory", + "phase": "A", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-part-propertyshapehistory-B", + "title": "Capture native success evidence: Part::PropertyShapeHistory", + "status": "pending", + "dependencies": [ + "PROP-part-propertyshapehistory-A" + ], + "capability": "Part::PropertyShapeHistory", + "phase": "B", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-part-propertyshapehistory-C", + "title": "Capture native failure and cancel evidence: Part::PropertyShapeHistory", + "status": "pending", + "dependencies": [ + "PROP-part-propertyshapehistory-B" + ], + "capability": "Part::PropertyShapeHistory", + "phase": "C", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-part-propertyshapehistory-D", + "title": "Capture parameter mutation and restore evidence: Part::PropertyShapeHistory", + "status": "pending", + "dependencies": [ + "PROP-part-propertyshapehistory-C" + ], + "capability": "Part::PropertyShapeHistory", + "phase": "D", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-part-propertyshapehistory-E", + "title": "Implement the Facade capability: Part::PropertyShapeHistory", + "status": "pending", + "dependencies": [ + "PROP-part-propertyshapehistory-D" + ], + "capability": "Part::PropertyShapeHistory", + "phase": "E", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-part-propertyshapehistory-F", + "title": "Close transaction and recovery behavior: Part::PropertyShapeHistory", + "status": "pending", + "dependencies": [ + "PROP-part-propertyshapehistory-E" + ], + "capability": "Part::PropertyShapeHistory", + "phase": "F", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-part-propertyshapehistory-G", + "title": "Close FCStd save, reopen and resave: Part::PropertyShapeHistory", + "status": "pending", + "dependencies": [ + "PROP-part-propertyshapehistory-F" + ], + "capability": "Part::PropertyShapeHistory", + "phase": "G", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-part-propertyshapehistory-H", + "title": "Replay in a real browser: Part::PropertyShapeHistory", + "status": "pending", + "dependencies": [ + "PROP-part-propertyshapehistory-G" + ], + "capability": "Part::PropertyShapeHistory", + "phase": "H", + "recordCount": 6, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-part-propertyshapehistory-I", + "title": "Promote capability and synchronize blockers: Part::PropertyShapeHistory", + "status": "pending", + "dependencies": [ + "PROP-part-propertyshapehistory-H" + ], + "capability": "Part::PropertyShapeHistory", + "phase": "I", + "recordCount": 6, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-part-propertytoposhapelist-A", + "title": "Lock native inventory and preconditions: Part::PropertyTopoShapeList", + "status": "pending", + "dependencies": [ + "PROP-part-propertyshapehistory-I" + ], + "capability": "Part::PropertyTopoShapeList", + "phase": "A", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-part-propertytoposhapelist-B", + "title": "Capture native success evidence: Part::PropertyTopoShapeList", + "status": "pending", + "dependencies": [ + "PROP-part-propertytoposhapelist-A" + ], + "capability": "Part::PropertyTopoShapeList", + "phase": "B", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-part-propertytoposhapelist-C", + "title": "Capture native failure and cancel evidence: Part::PropertyTopoShapeList", + "status": "pending", + "dependencies": [ + "PROP-part-propertytoposhapelist-B" + ], + "capability": "Part::PropertyTopoShapeList", + "phase": "C", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-part-propertytoposhapelist-D", + "title": "Capture parameter mutation and restore evidence: Part::PropertyTopoShapeList", + "status": "pending", + "dependencies": [ + "PROP-part-propertytoposhapelist-C" + ], + "capability": "Part::PropertyTopoShapeList", + "phase": "D", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-part-propertytoposhapelist-E", + "title": "Implement the Facade capability: Part::PropertyTopoShapeList", + "status": "pending", + "dependencies": [ + "PROP-part-propertytoposhapelist-D" + ], + "capability": "Part::PropertyTopoShapeList", + "phase": "E", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-part-propertytoposhapelist-F", + "title": "Close transaction and recovery behavior: Part::PropertyTopoShapeList", + "status": "pending", + "dependencies": [ + "PROP-part-propertytoposhapelist-E" + ], + "capability": "Part::PropertyTopoShapeList", + "phase": "F", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-part-propertytoposhapelist-G", + "title": "Close FCStd save, reopen and resave: Part::PropertyTopoShapeList", + "status": "pending", + "dependencies": [ + "PROP-part-propertytoposhapelist-F" + ], + "capability": "Part::PropertyTopoShapeList", + "phase": "G", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-part-propertytoposhapelist-H", + "title": "Replay in a real browser: Part::PropertyTopoShapeList", + "status": "pending", + "dependencies": [ + "PROP-part-propertytoposhapelist-G" + ], + "capability": "Part::PropertyTopoShapeList", + "phase": "H", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-part-propertytoposhapelist-I", + "title": "Promote capability and synchronize blockers: Part::PropertyTopoShapeList", + "status": "pending", + "dependencies": [ + "PROP-part-propertytoposhapelist-H" + ], + "capability": "Part::PropertyTopoShapeList", + "phase": "I", + "recordCount": 3, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-points-propertypointkernel-A", + "title": "Lock native inventory and preconditions: Points::PropertyPointKernel", + "status": "pending", + "dependencies": [ + "PROP-part-propertytoposhapelist-I" + ], + "capability": "Points::PropertyPointKernel", + "phase": "A", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-points-propertypointkernel-B", + "title": "Capture native success evidence: Points::PropertyPointKernel", + "status": "pending", + "dependencies": [ + "PROP-points-propertypointkernel-A" + ], + "capability": "Points::PropertyPointKernel", + "phase": "B", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-points-propertypointkernel-C", + "title": "Capture native failure and cancel evidence: Points::PropertyPointKernel", + "status": "pending", + "dependencies": [ + "PROP-points-propertypointkernel-B" + ], + "capability": "Points::PropertyPointKernel", + "phase": "C", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-points-propertypointkernel-D", + "title": "Capture parameter mutation and restore evidence: Points::PropertyPointKernel", + "status": "pending", + "dependencies": [ + "PROP-points-propertypointkernel-C" + ], + "capability": "Points::PropertyPointKernel", + "phase": "D", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-points-propertypointkernel-E", + "title": "Implement the Facade capability: Points::PropertyPointKernel", + "status": "pending", + "dependencies": [ + "PROP-points-propertypointkernel-D" + ], + "capability": "Points::PropertyPointKernel", + "phase": "E", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-points-propertypointkernel-F", + "title": "Close transaction and recovery behavior: Points::PropertyPointKernel", + "status": "pending", + "dependencies": [ + "PROP-points-propertypointkernel-E" + ], + "capability": "Points::PropertyPointKernel", + "phase": "F", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-points-propertypointkernel-G", + "title": "Close FCStd save, reopen and resave: Points::PropertyPointKernel", + "status": "pending", + "dependencies": [ + "PROP-points-propertypointkernel-F" + ], + "capability": "Points::PropertyPointKernel", + "phase": "G", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-points-propertypointkernel-H", + "title": "Replay in a real browser: Points::PropertyPointKernel", + "status": "pending", + "dependencies": [ + "PROP-points-propertypointkernel-G" + ], + "capability": "Points::PropertyPointKernel", + "phase": "H", + "recordCount": 5, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-points-propertypointkernel-I", + "title": "Promote capability and synchronize blockers: Points::PropertyPointKernel", + "status": "pending", + "dependencies": [ + "PROP-points-propertypointkernel-H" + ], + "capability": "Points::PropertyPointKernel", + "phase": "I", + "recordCount": 5, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-robot-propertytrajectory-A", + "title": "Lock native inventory and preconditions: Robot::PropertyTrajectory", + "status": "pending", + "dependencies": [ + "PROP-points-propertypointkernel-I" + ], + "capability": "Robot::PropertyTrajectory", + "phase": "A", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-robot-propertytrajectory-B", + "title": "Capture native success evidence: Robot::PropertyTrajectory", + "status": "pending", + "dependencies": [ + "PROP-robot-propertytrajectory-A" + ], + "capability": "Robot::PropertyTrajectory", + "phase": "B", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-robot-propertytrajectory-C", + "title": "Capture native failure and cancel evidence: Robot::PropertyTrajectory", + "status": "pending", + "dependencies": [ + "PROP-robot-propertytrajectory-B" + ], + "capability": "Robot::PropertyTrajectory", + "phase": "C", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-robot-propertytrajectory-D", + "title": "Capture parameter mutation and restore evidence: Robot::PropertyTrajectory", + "status": "pending", + "dependencies": [ + "PROP-robot-propertytrajectory-C" + ], + "capability": "Robot::PropertyTrajectory", + "phase": "D", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-robot-propertytrajectory-E", + "title": "Implement the Facade capability: Robot::PropertyTrajectory", + "status": "pending", + "dependencies": [ + "PROP-robot-propertytrajectory-D" + ], + "capability": "Robot::PropertyTrajectory", + "phase": "E", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-robot-propertytrajectory-F", + "title": "Close transaction and recovery behavior: Robot::PropertyTrajectory", + "status": "pending", + "dependencies": [ + "PROP-robot-propertytrajectory-E" + ], + "capability": "Robot::PropertyTrajectory", + "phase": "F", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-robot-propertytrajectory-G", + "title": "Close FCStd save, reopen and resave: Robot::PropertyTrajectory", + "status": "pending", + "dependencies": [ + "PROP-robot-propertytrajectory-F" + ], + "capability": "Robot::PropertyTrajectory", + "phase": "G", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-robot-propertytrajectory-H", + "title": "Replay in a real browser: Robot::PropertyTrajectory", + "status": "pending", + "dependencies": [ + "PROP-robot-propertytrajectory-G" + ], + "capability": "Robot::PropertyTrajectory", + "phase": "H", + "recordCount": 4, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-robot-propertytrajectory-I", + "title": "Promote capability and synchronize blockers: Robot::PropertyTrajectory", + "status": "pending", + "dependencies": [ + "PROP-robot-propertytrajectory-H" + ], + "capability": "Robot::PropertyTrajectory", + "phase": "I", + "recordCount": 4, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-spreadsheet-propertycolumnwidths-A", + "title": "Lock native inventory and preconditions: Spreadsheet::PropertyColumnWidths", + "status": "pending", + "dependencies": [ + "PROP-robot-propertytrajectory-I" + ], + "capability": "Spreadsheet::PropertyColumnWidths", + "phase": "A", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-spreadsheet-propertycolumnwidths-B", + "title": "Capture native success evidence: Spreadsheet::PropertyColumnWidths", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertycolumnwidths-A" + ], + "capability": "Spreadsheet::PropertyColumnWidths", + "phase": "B", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-spreadsheet-propertycolumnwidths-C", + "title": "Capture native failure and cancel evidence: Spreadsheet::PropertyColumnWidths", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertycolumnwidths-B" + ], + "capability": "Spreadsheet::PropertyColumnWidths", + "phase": "C", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-spreadsheet-propertycolumnwidths-D", + "title": "Capture parameter mutation and restore evidence: Spreadsheet::PropertyColumnWidths", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertycolumnwidths-C" + ], + "capability": "Spreadsheet::PropertyColumnWidths", + "phase": "D", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-spreadsheet-propertycolumnwidths-E", + "title": "Implement the Facade capability: Spreadsheet::PropertyColumnWidths", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertycolumnwidths-D" + ], + "capability": "Spreadsheet::PropertyColumnWidths", + "phase": "E", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-spreadsheet-propertycolumnwidths-F", + "title": "Close transaction and recovery behavior: Spreadsheet::PropertyColumnWidths", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertycolumnwidths-E" + ], + "capability": "Spreadsheet::PropertyColumnWidths", + "phase": "F", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-spreadsheet-propertycolumnwidths-G", + "title": "Close FCStd save, reopen and resave: Spreadsheet::PropertyColumnWidths", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertycolumnwidths-F" + ], + "capability": "Spreadsheet::PropertyColumnWidths", + "phase": "G", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-spreadsheet-propertycolumnwidths-H", + "title": "Replay in a real browser: Spreadsheet::PropertyColumnWidths", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertycolumnwidths-G" + ], + "capability": "Spreadsheet::PropertyColumnWidths", + "phase": "H", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-spreadsheet-propertycolumnwidths-I", + "title": "Promote capability and synchronize blockers: Spreadsheet::PropertyColumnWidths", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertycolumnwidths-H" + ], + "capability": "Spreadsheet::PropertyColumnWidths", + "phase": "I", + "recordCount": 3, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-spreadsheet-propertyrowheights-A", + "title": "Lock native inventory and preconditions: Spreadsheet::PropertyRowHeights", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertycolumnwidths-I" + ], + "capability": "Spreadsheet::PropertyRowHeights", + "phase": "A", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-spreadsheet-propertyrowheights-B", + "title": "Capture native success evidence: Spreadsheet::PropertyRowHeights", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertyrowheights-A" + ], + "capability": "Spreadsheet::PropertyRowHeights", + "phase": "B", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-spreadsheet-propertyrowheights-C", + "title": "Capture native failure and cancel evidence: Spreadsheet::PropertyRowHeights", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertyrowheights-B" + ], + "capability": "Spreadsheet::PropertyRowHeights", + "phase": "C", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-spreadsheet-propertyrowheights-D", + "title": "Capture parameter mutation and restore evidence: Spreadsheet::PropertyRowHeights", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertyrowheights-C" + ], + "capability": "Spreadsheet::PropertyRowHeights", + "phase": "D", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-spreadsheet-propertyrowheights-E", + "title": "Implement the Facade capability: Spreadsheet::PropertyRowHeights", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertyrowheights-D" + ], + "capability": "Spreadsheet::PropertyRowHeights", + "phase": "E", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-spreadsheet-propertyrowheights-F", + "title": "Close transaction and recovery behavior: Spreadsheet::PropertyRowHeights", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertyrowheights-E" + ], + "capability": "Spreadsheet::PropertyRowHeights", + "phase": "F", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-spreadsheet-propertyrowheights-G", + "title": "Close FCStd save, reopen and resave: Spreadsheet::PropertyRowHeights", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertyrowheights-F" + ], + "capability": "Spreadsheet::PropertyRowHeights", + "phase": "G", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-spreadsheet-propertyrowheights-H", + "title": "Replay in a real browser: Spreadsheet::PropertyRowHeights", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertyrowheights-G" + ], + "capability": "Spreadsheet::PropertyRowHeights", + "phase": "H", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-spreadsheet-propertyrowheights-I", + "title": "Promote capability and synchronize blockers: Spreadsheet::PropertyRowHeights", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertyrowheights-H" + ], + "capability": "Spreadsheet::PropertyRowHeights", + "phase": "I", + "recordCount": 3, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-spreadsheet-propertysheet-A", + "title": "Lock native inventory and preconditions: Spreadsheet::PropertySheet", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertyrowheights-I" + ], + "capability": "Spreadsheet::PropertySheet", + "phase": "A", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-spreadsheet-propertysheet-B", + "title": "Capture native success evidence: Spreadsheet::PropertySheet", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertysheet-A" + ], + "capability": "Spreadsheet::PropertySheet", + "phase": "B", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-spreadsheet-propertysheet-C", + "title": "Capture native failure and cancel evidence: Spreadsheet::PropertySheet", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertysheet-B" + ], + "capability": "Spreadsheet::PropertySheet", + "phase": "C", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-spreadsheet-propertysheet-D", + "title": "Capture parameter mutation and restore evidence: Spreadsheet::PropertySheet", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertysheet-C" + ], + "capability": "Spreadsheet::PropertySheet", + "phase": "D", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-spreadsheet-propertysheet-E", + "title": "Implement the Facade capability: Spreadsheet::PropertySheet", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertysheet-D" + ], + "capability": "Spreadsheet::PropertySheet", + "phase": "E", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-spreadsheet-propertysheet-F", + "title": "Close transaction and recovery behavior: Spreadsheet::PropertySheet", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertysheet-E" + ], + "capability": "Spreadsheet::PropertySheet", + "phase": "F", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-spreadsheet-propertysheet-G", + "title": "Close FCStd save, reopen and resave: Spreadsheet::PropertySheet", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertysheet-F" + ], + "capability": "Spreadsheet::PropertySheet", + "phase": "G", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-spreadsheet-propertysheet-H", + "title": "Replay in a real browser: Spreadsheet::PropertySheet", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertysheet-G" + ], + "capability": "Spreadsheet::PropertySheet", + "phase": "H", + "recordCount": 3, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-spreadsheet-propertysheet-I", + "title": "Promote capability and synchronize blockers: Spreadsheet::PropertySheet", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertysheet-H" + ], + "capability": "Spreadsheet::PropertySheet", + "phase": "I", + "recordCount": 3, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-techdraw-propertycenterlinelist-A", + "title": "Lock native inventory and preconditions: TechDraw::PropertyCenterLineList", + "status": "pending", + "dependencies": [ + "PROP-spreadsheet-propertysheet-I" + ], + "capability": "TechDraw::PropertyCenterLineList", + "phase": "A", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-techdraw-propertycenterlinelist-B", + "title": "Capture native success evidence: TechDraw::PropertyCenterLineList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycenterlinelist-A" + ], + "capability": "TechDraw::PropertyCenterLineList", + "phase": "B", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-techdraw-propertycenterlinelist-C", + "title": "Capture native failure and cancel evidence: TechDraw::PropertyCenterLineList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycenterlinelist-B" + ], + "capability": "TechDraw::PropertyCenterLineList", + "phase": "C", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-techdraw-propertycenterlinelist-D", + "title": "Capture parameter mutation and restore evidence: TechDraw::PropertyCenterLineList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycenterlinelist-C" + ], + "capability": "TechDraw::PropertyCenterLineList", + "phase": "D", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-techdraw-propertycenterlinelist-E", + "title": "Implement the Facade capability: TechDraw::PropertyCenterLineList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycenterlinelist-D" + ], + "capability": "TechDraw::PropertyCenterLineList", + "phase": "E", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-techdraw-propertycenterlinelist-F", + "title": "Close transaction and recovery behavior: TechDraw::PropertyCenterLineList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycenterlinelist-E" + ], + "capability": "TechDraw::PropertyCenterLineList", + "phase": "F", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-techdraw-propertycenterlinelist-G", + "title": "Close FCStd save, reopen and resave: TechDraw::PropertyCenterLineList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycenterlinelist-F" + ], + "capability": "TechDraw::PropertyCenterLineList", + "phase": "G", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-techdraw-propertycenterlinelist-H", + "title": "Replay in a real browser: TechDraw::PropertyCenterLineList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycenterlinelist-G" + ], + "capability": "TechDraw::PropertyCenterLineList", + "phase": "H", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-techdraw-propertycenterlinelist-I", + "title": "Promote capability and synchronize blockers: TechDraw::PropertyCenterLineList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycenterlinelist-H" + ], + "capability": "TechDraw::PropertyCenterLineList", + "phase": "I", + "recordCount": 10, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-techdraw-propertycosmeticedgelist-A", + "title": "Lock native inventory and preconditions: TechDraw::PropertyCosmeticEdgeList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycenterlinelist-I" + ], + "capability": "TechDraw::PropertyCosmeticEdgeList", + "phase": "A", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-techdraw-propertycosmeticedgelist-B", + "title": "Capture native success evidence: TechDraw::PropertyCosmeticEdgeList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticedgelist-A" + ], + "capability": "TechDraw::PropertyCosmeticEdgeList", + "phase": "B", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-techdraw-propertycosmeticedgelist-C", + "title": "Capture native failure and cancel evidence: TechDraw::PropertyCosmeticEdgeList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticedgelist-B" + ], + "capability": "TechDraw::PropertyCosmeticEdgeList", + "phase": "C", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-techdraw-propertycosmeticedgelist-D", + "title": "Capture parameter mutation and restore evidence: TechDraw::PropertyCosmeticEdgeList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticedgelist-C" + ], + "capability": "TechDraw::PropertyCosmeticEdgeList", + "phase": "D", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-techdraw-propertycosmeticedgelist-E", + "title": "Implement the Facade capability: TechDraw::PropertyCosmeticEdgeList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticedgelist-D" + ], + "capability": "TechDraw::PropertyCosmeticEdgeList", + "phase": "E", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-techdraw-propertycosmeticedgelist-F", + "title": "Close transaction and recovery behavior: TechDraw::PropertyCosmeticEdgeList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticedgelist-E" + ], + "capability": "TechDraw::PropertyCosmeticEdgeList", + "phase": "F", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-techdraw-propertycosmeticedgelist-G", + "title": "Close FCStd save, reopen and resave: TechDraw::PropertyCosmeticEdgeList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticedgelist-F" + ], + "capability": "TechDraw::PropertyCosmeticEdgeList", + "phase": "G", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-techdraw-propertycosmeticedgelist-H", + "title": "Replay in a real browser: TechDraw::PropertyCosmeticEdgeList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticedgelist-G" + ], + "capability": "TechDraw::PropertyCosmeticEdgeList", + "phase": "H", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-techdraw-propertycosmeticedgelist-I", + "title": "Promote capability and synchronize blockers: TechDraw::PropertyCosmeticEdgeList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticedgelist-H" + ], + "capability": "TechDraw::PropertyCosmeticEdgeList", + "phase": "I", + "recordCount": 10, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-techdraw-propertycosmeticvertexlist-A", + "title": "Lock native inventory and preconditions: TechDraw::PropertyCosmeticVertexList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticedgelist-I" + ], + "capability": "TechDraw::PropertyCosmeticVertexList", + "phase": "A", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-techdraw-propertycosmeticvertexlist-B", + "title": "Capture native success evidence: TechDraw::PropertyCosmeticVertexList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticvertexlist-A" + ], + "capability": "TechDraw::PropertyCosmeticVertexList", + "phase": "B", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-techdraw-propertycosmeticvertexlist-C", + "title": "Capture native failure and cancel evidence: TechDraw::PropertyCosmeticVertexList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticvertexlist-B" + ], + "capability": "TechDraw::PropertyCosmeticVertexList", + "phase": "C", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-techdraw-propertycosmeticvertexlist-D", + "title": "Capture parameter mutation and restore evidence: TechDraw::PropertyCosmeticVertexList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticvertexlist-C" + ], + "capability": "TechDraw::PropertyCosmeticVertexList", + "phase": "D", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-techdraw-propertycosmeticvertexlist-E", + "title": "Implement the Facade capability: TechDraw::PropertyCosmeticVertexList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticvertexlist-D" + ], + "capability": "TechDraw::PropertyCosmeticVertexList", + "phase": "E", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-techdraw-propertycosmeticvertexlist-F", + "title": "Close transaction and recovery behavior: TechDraw::PropertyCosmeticVertexList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticvertexlist-E" + ], + "capability": "TechDraw::PropertyCosmeticVertexList", + "phase": "F", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-techdraw-propertycosmeticvertexlist-G", + "title": "Close FCStd save, reopen and resave: TechDraw::PropertyCosmeticVertexList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticvertexlist-F" + ], + "capability": "TechDraw::PropertyCosmeticVertexList", + "phase": "G", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-techdraw-propertycosmeticvertexlist-H", + "title": "Replay in a real browser: TechDraw::PropertyCosmeticVertexList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticvertexlist-G" + ], + "capability": "TechDraw::PropertyCosmeticVertexList", + "phase": "H", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-techdraw-propertycosmeticvertexlist-I", + "title": "Promote capability and synchronize blockers: TechDraw::PropertyCosmeticVertexList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticvertexlist-H" + ], + "capability": "TechDraw::PropertyCosmeticVertexList", + "phase": "I", + "recordCount": 10, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PROP-techdraw-propertygeomformatlist-A", + "title": "Lock native inventory and preconditions: TechDraw::PropertyGeomFormatList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertycosmeticvertexlist-I" + ], + "capability": "TechDraw::PropertyGeomFormatList", + "phase": "A", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PROP-techdraw-propertygeomformatlist-B", + "title": "Capture native success evidence: TechDraw::PropertyGeomFormatList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertygeomformatlist-A" + ], + "capability": "TechDraw::PropertyGeomFormatList", + "phase": "B", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PROP-techdraw-propertygeomformatlist-C", + "title": "Capture native failure and cancel evidence: TechDraw::PropertyGeomFormatList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertygeomformatlist-B" + ], + "capability": "TechDraw::PropertyGeomFormatList", + "phase": "C", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PROP-techdraw-propertygeomformatlist-D", + "title": "Capture parameter mutation and restore evidence: TechDraw::PropertyGeomFormatList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertygeomformatlist-C" + ], + "capability": "TechDraw::PropertyGeomFormatList", + "phase": "D", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PROP-techdraw-propertygeomformatlist-E", + "title": "Implement the Facade capability: TechDraw::PropertyGeomFormatList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertygeomformatlist-D" + ], + "capability": "TechDraw::PropertyGeomFormatList", + "phase": "E", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PROP-techdraw-propertygeomformatlist-F", + "title": "Close transaction and recovery behavior: TechDraw::PropertyGeomFormatList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertygeomformatlist-E" + ], + "capability": "TechDraw::PropertyGeomFormatList", + "phase": "F", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PROP-techdraw-propertygeomformatlist-G", + "title": "Close FCStd save, reopen and resave: TechDraw::PropertyGeomFormatList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertygeomformatlist-F" + ], + "capability": "TechDraw::PropertyGeomFormatList", + "phase": "G", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PROP-techdraw-propertygeomformatlist-H", + "title": "Replay in a real browser: TechDraw::PropertyGeomFormatList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertygeomformatlist-G" + ], + "capability": "TechDraw::PropertyGeomFormatList", + "phase": "H", + "recordCount": 10, + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PROP-techdraw-propertygeomformatlist-I", + "title": "Promote capability and synchronize blockers: TechDraw::PropertyGeomFormatList", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertygeomformatlist-H" + ], + "capability": "TechDraw::PropertyGeomFormatList", + "phase": "I", + "recordCount": 10, + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + } + ] + }, + { + "id": "DOCUMENT-SEMANTICS", + "title": "Close document, transaction and lifecycle semantics", + "exactTasks": [ + "EX-DOC-02", + "EX-DOC-03", + "EX-DOC-04" + ], + "status": "pending", + "tasks": [ + { + "id": "DOC-observer-object-order-A", + "title": "Lock native inventory and preconditions: Object add/remove/rename observer order", + "status": "pending", + "dependencies": [ + "PROP-techdraw-propertygeomformatlist-I" + ], + "capability": "observer-object-order", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "DOC-observer-object-order-B", + "title": "Capture native success evidence: Object add/remove/rename observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-object-order-A" + ], + "capability": "observer-object-order", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "DOC-observer-object-order-C", + "title": "Capture native failure and cancel evidence: Object add/remove/rename observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-object-order-B" + ], + "capability": "observer-object-order", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "DOC-observer-object-order-D", + "title": "Capture parameter mutation and restore evidence: Object add/remove/rename observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-object-order-C" + ], + "capability": "observer-object-order", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "DOC-observer-object-order-E", + "title": "Implement the Facade capability: Object add/remove/rename observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-object-order-D" + ], + "capability": "observer-object-order", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "DOC-observer-object-order-F", + "title": "Close transaction and recovery behavior: Object add/remove/rename observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-object-order-E" + ], + "capability": "observer-object-order", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "DOC-observer-object-order-G", + "title": "Close FCStd save, reopen and resave: Object add/remove/rename observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-object-order-F" + ], + "capability": "observer-object-order", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "DOC-observer-object-order-H", + "title": "Replay in a real browser: Object add/remove/rename observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-object-order-G" + ], + "capability": "observer-object-order", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "DOC-observer-object-order-I", + "title": "Promote capability and synchronize blockers: Object add/remove/rename observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-object-order-H" + ], + "capability": "observer-object-order", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "DOC-observer-property-order-A", + "title": "Lock native inventory and preconditions: Property add/remove/rename/change observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-object-order-I" + ], + "capability": "observer-property-order", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "DOC-observer-property-order-B", + "title": "Capture native success evidence: Property add/remove/rename/change observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-property-order-A" + ], + "capability": "observer-property-order", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "DOC-observer-property-order-C", + "title": "Capture native failure and cancel evidence: Property add/remove/rename/change observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-property-order-B" + ], + "capability": "observer-property-order", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "DOC-observer-property-order-D", + "title": "Capture parameter mutation and restore evidence: Property add/remove/rename/change observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-property-order-C" + ], + "capability": "observer-property-order", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "DOC-observer-property-order-E", + "title": "Implement the Facade capability: Property add/remove/rename/change observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-property-order-D" + ], + "capability": "observer-property-order", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "DOC-observer-property-order-F", + "title": "Close transaction and recovery behavior: Property add/remove/rename/change observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-property-order-E" + ], + "capability": "observer-property-order", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "DOC-observer-property-order-G", + "title": "Close FCStd save, reopen and resave: Property add/remove/rename/change observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-property-order-F" + ], + "capability": "observer-property-order", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "DOC-observer-property-order-H", + "title": "Replay in a real browser: Property add/remove/rename/change observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-property-order-G" + ], + "capability": "observer-property-order", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "DOC-observer-property-order-I", + "title": "Promote capability and synchronize blockers: Property add/remove/rename/change observer order", + "status": "pending", + "dependencies": [ + "DOC-observer-property-order-H" + ], + "capability": "observer-property-order", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "DOC-nested-transactions-A", + "title": "Lock native inventory and preconditions: Nested commit/abort/undo/redo transactions", + "status": "pending", + "dependencies": [ + "DOC-observer-property-order-I" + ], + "capability": "nested-transactions", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "DOC-nested-transactions-B", + "title": "Capture native success evidence: Nested commit/abort/undo/redo transactions", + "status": "pending", + "dependencies": [ + "DOC-nested-transactions-A" + ], + "capability": "nested-transactions", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "DOC-nested-transactions-C", + "title": "Capture native failure and cancel evidence: Nested commit/abort/undo/redo transactions", + "status": "pending", + "dependencies": [ + "DOC-nested-transactions-B" + ], + "capability": "nested-transactions", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "DOC-nested-transactions-D", + "title": "Capture parameter mutation and restore evidence: Nested commit/abort/undo/redo transactions", + "status": "pending", + "dependencies": [ + "DOC-nested-transactions-C" + ], + "capability": "nested-transactions", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "DOC-nested-transactions-E", + "title": "Implement the Facade capability: Nested commit/abort/undo/redo transactions", + "status": "pending", + "dependencies": [ + "DOC-nested-transactions-D" + ], + "capability": "nested-transactions", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "DOC-nested-transactions-F", + "title": "Close transaction and recovery behavior: Nested commit/abort/undo/redo transactions", + "status": "pending", + "dependencies": [ + "DOC-nested-transactions-E" + ], + "capability": "nested-transactions", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "DOC-nested-transactions-G", + "title": "Close FCStd save, reopen and resave: Nested commit/abort/undo/redo transactions", + "status": "pending", + "dependencies": [ + "DOC-nested-transactions-F" + ], + "capability": "nested-transactions", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "DOC-nested-transactions-H", + "title": "Replay in a real browser: Nested commit/abort/undo/redo transactions", + "status": "pending", + "dependencies": [ + "DOC-nested-transactions-G" + ], + "capability": "nested-transactions", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "DOC-nested-transactions-I", + "title": "Promote capability and synchronize blockers: Nested commit/abort/undo/redo transactions", + "status": "pending", + "dependencies": [ + "DOC-nested-transactions-H" + ], + "capability": "nested-transactions", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "DOC-dag-partial-recompute-A", + "title": "Lock native inventory and preconditions: DAG dirty propagation and partial recompute", + "status": "pending", + "dependencies": [ + "DOC-nested-transactions-I" + ], + "capability": "dag-partial-recompute", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "DOC-dag-partial-recompute-B", + "title": "Capture native success evidence: DAG dirty propagation and partial recompute", + "status": "pending", + "dependencies": [ + "DOC-dag-partial-recompute-A" + ], + "capability": "dag-partial-recompute", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "DOC-dag-partial-recompute-C", + "title": "Capture native failure and cancel evidence: DAG dirty propagation and partial recompute", + "status": "pending", + "dependencies": [ + "DOC-dag-partial-recompute-B" + ], + "capability": "dag-partial-recompute", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "DOC-dag-partial-recompute-D", + "title": "Capture parameter mutation and restore evidence: DAG dirty propagation and partial recompute", + "status": "pending", + "dependencies": [ + "DOC-dag-partial-recompute-C" + ], + "capability": "dag-partial-recompute", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "DOC-dag-partial-recompute-E", + "title": "Implement the Facade capability: DAG dirty propagation and partial recompute", + "status": "pending", + "dependencies": [ + "DOC-dag-partial-recompute-D" + ], + "capability": "dag-partial-recompute", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "DOC-dag-partial-recompute-F", + "title": "Close transaction and recovery behavior: DAG dirty propagation and partial recompute", + "status": "pending", + "dependencies": [ + "DOC-dag-partial-recompute-E" + ], + "capability": "dag-partial-recompute", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "DOC-dag-partial-recompute-G", + "title": "Close FCStd save, reopen and resave: DAG dirty propagation and partial recompute", + "status": "pending", + "dependencies": [ + "DOC-dag-partial-recompute-F" + ], + "capability": "dag-partial-recompute", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "DOC-dag-partial-recompute-H", + "title": "Replay in a real browser: DAG dirty propagation and partial recompute", + "status": "pending", + "dependencies": [ + "DOC-dag-partial-recompute-G" + ], + "capability": "dag-partial-recompute", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "DOC-dag-partial-recompute-I", + "title": "Promote capability and synchronize blockers: DAG dirty propagation and partial recompute", + "status": "pending", + "dependencies": [ + "DOC-dag-partial-recompute-H" + ], + "capability": "dag-partial-recompute", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "DOC-recompute-failure-recovery-A", + "title": "Lock native inventory and preconditions: Last-valid Shape and diagnostic recovery", + "status": "pending", + "dependencies": [ + "DOC-dag-partial-recompute-I" + ], + "capability": "recompute-failure-recovery", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "DOC-recompute-failure-recovery-B", + "title": "Capture native success evidence: Last-valid Shape and diagnostic recovery", + "status": "pending", + "dependencies": [ + "DOC-recompute-failure-recovery-A" + ], + "capability": "recompute-failure-recovery", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "DOC-recompute-failure-recovery-C", + "title": "Capture native failure and cancel evidence: Last-valid Shape and diagnostic recovery", + "status": "pending", + "dependencies": [ + "DOC-recompute-failure-recovery-B" + ], + "capability": "recompute-failure-recovery", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "DOC-recompute-failure-recovery-D", + "title": "Capture parameter mutation and restore evidence: Last-valid Shape and diagnostic recovery", + "status": "pending", + "dependencies": [ + "DOC-recompute-failure-recovery-C" + ], + "capability": "recompute-failure-recovery", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "DOC-recompute-failure-recovery-E", + "title": "Implement the Facade capability: Last-valid Shape and diagnostic recovery", + "status": "pending", + "dependencies": [ + "DOC-recompute-failure-recovery-D" + ], + "capability": "recompute-failure-recovery", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "DOC-recompute-failure-recovery-F", + "title": "Close transaction and recovery behavior: Last-valid Shape and diagnostic recovery", + "status": "pending", + "dependencies": [ + "DOC-recompute-failure-recovery-E" + ], + "capability": "recompute-failure-recovery", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "DOC-recompute-failure-recovery-G", + "title": "Close FCStd save, reopen and resave: Last-valid Shape and diagnostic recovery", + "status": "pending", + "dependencies": [ + "DOC-recompute-failure-recovery-F" + ], + "capability": "recompute-failure-recovery", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "DOC-recompute-failure-recovery-H", + "title": "Replay in a real browser: Last-valid Shape and diagnostic recovery", + "status": "pending", + "dependencies": [ + "DOC-recompute-failure-recovery-G" + ], + "capability": "recompute-failure-recovery", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "DOC-recompute-failure-recovery-I", + "title": "Promote capability and synchronize blockers: Last-valid Shape and diagnostic recovery", + "status": "pending", + "dependencies": [ + "DOC-recompute-failure-recovery-H" + ], + "capability": "recompute-failure-recovery", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "DOC-partial-document-load-A", + "title": "Lock native inventory and preconditions: Partial document load and PartialTrigger", + "status": "pending", + "dependencies": [ + "DOC-recompute-failure-recovery-I" + ], + "capability": "partial-document-load", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "DOC-partial-document-load-B", + "title": "Capture native success evidence: Partial document load and PartialTrigger", + "status": "pending", + "dependencies": [ + "DOC-partial-document-load-A" + ], + "capability": "partial-document-load", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "DOC-partial-document-load-C", + "title": "Capture native failure and cancel evidence: Partial document load and PartialTrigger", + "status": "pending", + "dependencies": [ + "DOC-partial-document-load-B" + ], + "capability": "partial-document-load", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "DOC-partial-document-load-D", + "title": "Capture parameter mutation and restore evidence: Partial document load and PartialTrigger", + "status": "pending", + "dependencies": [ + "DOC-partial-document-load-C" + ], + "capability": "partial-document-load", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "DOC-partial-document-load-E", + "title": "Implement the Facade capability: Partial document load and PartialTrigger", + "status": "pending", + "dependencies": [ + "DOC-partial-document-load-D" + ], + "capability": "partial-document-load", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "DOC-partial-document-load-F", + "title": "Close transaction and recovery behavior: Partial document load and PartialTrigger", + "status": "pending", + "dependencies": [ + "DOC-partial-document-load-E" + ], + "capability": "partial-document-load", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "DOC-partial-document-load-G", + "title": "Close FCStd save, reopen and resave: Partial document load and PartialTrigger", + "status": "pending", + "dependencies": [ + "DOC-partial-document-load-F" + ], + "capability": "partial-document-load", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "DOC-partial-document-load-H", + "title": "Replay in a real browser: Partial document load and PartialTrigger", + "status": "pending", + "dependencies": [ + "DOC-partial-document-load-G" + ], + "capability": "partial-document-load", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "DOC-partial-document-load-I", + "title": "Promote capability and synchronize blockers: Partial document load and PartialTrigger", + "status": "pending", + "dependencies": [ + "DOC-partial-document-load-H" + ], + "capability": "partial-document-load", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "DOC-object-lifecycle-A", + "title": "Lock native inventory and preconditions: Copy/clone/delete/relink/group lifecycle", + "status": "pending", + "dependencies": [ + "DOC-partial-document-load-I" + ], + "capability": "object-lifecycle", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "DOC-object-lifecycle-B", + "title": "Capture native success evidence: Copy/clone/delete/relink/group lifecycle", + "status": "pending", + "dependencies": [ + "DOC-object-lifecycle-A" + ], + "capability": "object-lifecycle", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "DOC-object-lifecycle-C", + "title": "Capture native failure and cancel evidence: Copy/clone/delete/relink/group lifecycle", + "status": "pending", + "dependencies": [ + "DOC-object-lifecycle-B" + ], + "capability": "object-lifecycle", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "DOC-object-lifecycle-D", + "title": "Capture parameter mutation and restore evidence: Copy/clone/delete/relink/group lifecycle", + "status": "pending", + "dependencies": [ + "DOC-object-lifecycle-C" + ], + "capability": "object-lifecycle", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "DOC-object-lifecycle-E", + "title": "Implement the Facade capability: Copy/clone/delete/relink/group lifecycle", + "status": "pending", + "dependencies": [ + "DOC-object-lifecycle-D" + ], + "capability": "object-lifecycle", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "DOC-object-lifecycle-F", + "title": "Close transaction and recovery behavior: Copy/clone/delete/relink/group lifecycle", + "status": "pending", + "dependencies": [ + "DOC-object-lifecycle-E" + ], + "capability": "object-lifecycle", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "DOC-object-lifecycle-G", + "title": "Close FCStd save, reopen and resave: Copy/clone/delete/relink/group lifecycle", + "status": "pending", + "dependencies": [ + "DOC-object-lifecycle-F" + ], + "capability": "object-lifecycle", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "DOC-object-lifecycle-H", + "title": "Replay in a real browser: Copy/clone/delete/relink/group lifecycle", + "status": "pending", + "dependencies": [ + "DOC-object-lifecycle-G" + ], + "capability": "object-lifecycle", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "DOC-object-lifecycle-I", + "title": "Promote capability and synchronize blockers: Copy/clone/delete/relink/group lifecycle", + "status": "pending", + "dependencies": [ + "DOC-object-lifecycle-H" + ], + "capability": "object-lifecycle", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "DOC-extension-lifecycle-A", + "title": "Lock native inventory and preconditions: Extension schema, migration and unknown preservation", + "status": "pending", + "dependencies": [ + "DOC-object-lifecycle-I" + ], + "capability": "extension-lifecycle", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "DOC-extension-lifecycle-B", + "title": "Capture native success evidence: Extension schema, migration and unknown preservation", + "status": "pending", + "dependencies": [ + "DOC-extension-lifecycle-A" + ], + "capability": "extension-lifecycle", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "DOC-extension-lifecycle-C", + "title": "Capture native failure and cancel evidence: Extension schema, migration and unknown preservation", + "status": "pending", + "dependencies": [ + "DOC-extension-lifecycle-B" + ], + "capability": "extension-lifecycle", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "DOC-extension-lifecycle-D", + "title": "Capture parameter mutation and restore evidence: Extension schema, migration and unknown preservation", + "status": "pending", + "dependencies": [ + "DOC-extension-lifecycle-C" + ], + "capability": "extension-lifecycle", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "DOC-extension-lifecycle-E", + "title": "Implement the Facade capability: Extension schema, migration and unknown preservation", + "status": "pending", + "dependencies": [ + "DOC-extension-lifecycle-D" + ], + "capability": "extension-lifecycle", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "DOC-extension-lifecycle-F", + "title": "Close transaction and recovery behavior: Extension schema, migration and unknown preservation", + "status": "pending", + "dependencies": [ + "DOC-extension-lifecycle-E" + ], + "capability": "extension-lifecycle", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "DOC-extension-lifecycle-G", + "title": "Close FCStd save, reopen and resave: Extension schema, migration and unknown preservation", + "status": "pending", + "dependencies": [ + "DOC-extension-lifecycle-F" + ], + "capability": "extension-lifecycle", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "DOC-extension-lifecycle-H", + "title": "Replay in a real browser: Extension schema, migration and unknown preservation", + "status": "pending", + "dependencies": [ + "DOC-extension-lifecycle-G" + ], + "capability": "extension-lifecycle", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "DOC-extension-lifecycle-I", + "title": "Promote capability and synchronize blockers: Extension schema, migration and unknown preservation", + "status": "pending", + "dependencies": [ + "DOC-extension-lifecycle-H" + ], + "capability": "extension-lifecycle", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "DOC-feature-python-boundary-A", + "title": "Lock native inventory and preconditions: FeaturePython proxy, signature and execution boundary", + "status": "pending", + "dependencies": [ + "DOC-extension-lifecycle-I" + ], + "capability": "feature-python-boundary", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "DOC-feature-python-boundary-B", + "title": "Capture native success evidence: FeaturePython proxy, signature and execution boundary", + "status": "pending", + "dependencies": [ + "DOC-feature-python-boundary-A" + ], + "capability": "feature-python-boundary", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "DOC-feature-python-boundary-C", + "title": "Capture native failure and cancel evidence: FeaturePython proxy, signature and execution boundary", + "status": "pending", + "dependencies": [ + "DOC-feature-python-boundary-B" + ], + "capability": "feature-python-boundary", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "DOC-feature-python-boundary-D", + "title": "Capture parameter mutation and restore evidence: FeaturePython proxy, signature and execution boundary", + "status": "pending", + "dependencies": [ + "DOC-feature-python-boundary-C" + ], + "capability": "feature-python-boundary", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "DOC-feature-python-boundary-E", + "title": "Implement the Facade capability: FeaturePython proxy, signature and execution boundary", + "status": "pending", + "dependencies": [ + "DOC-feature-python-boundary-D" + ], + "capability": "feature-python-boundary", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "DOC-feature-python-boundary-F", + "title": "Close transaction and recovery behavior: FeaturePython proxy, signature and execution boundary", + "status": "pending", + "dependencies": [ + "DOC-feature-python-boundary-E" + ], + "capability": "feature-python-boundary", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "DOC-feature-python-boundary-G", + "title": "Close FCStd save, reopen and resave: FeaturePython proxy, signature and execution boundary", + "status": "pending", + "dependencies": [ + "DOC-feature-python-boundary-F" + ], + "capability": "feature-python-boundary", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "DOC-feature-python-boundary-H", + "title": "Replay in a real browser: FeaturePython proxy, signature and execution boundary", + "status": "pending", + "dependencies": [ + "DOC-feature-python-boundary-G" + ], + "capability": "feature-python-boundary", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "DOC-feature-python-boundary-I", + "title": "Promote capability and synchronize blockers: FeaturePython proxy, signature and execution boundary", + "status": "pending", + "dependencies": [ + "DOC-feature-python-boundary-H" + ], + "capability": "feature-python-boundary", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "DOC-multi-document-links-A", + "title": "Lock native inventory and preconditions: External links, close/reopen, merge and recovery", + "status": "pending", + "dependencies": [ + "DOC-feature-python-boundary-I" + ], + "capability": "multi-document-links", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "DOC-multi-document-links-B", + "title": "Capture native success evidence: External links, close/reopen, merge and recovery", + "status": "pending", + "dependencies": [ + "DOC-multi-document-links-A" + ], + "capability": "multi-document-links", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "DOC-multi-document-links-C", + "title": "Capture native failure and cancel evidence: External links, close/reopen, merge and recovery", + "status": "pending", + "dependencies": [ + "DOC-multi-document-links-B" + ], + "capability": "multi-document-links", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "DOC-multi-document-links-D", + "title": "Capture parameter mutation and restore evidence: External links, close/reopen, merge and recovery", + "status": "pending", + "dependencies": [ + "DOC-multi-document-links-C" + ], + "capability": "multi-document-links", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "DOC-multi-document-links-E", + "title": "Implement the Facade capability: External links, close/reopen, merge and recovery", + "status": "pending", + "dependencies": [ + "DOC-multi-document-links-D" + ], + "capability": "multi-document-links", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "DOC-multi-document-links-F", + "title": "Close transaction and recovery behavior: External links, close/reopen, merge and recovery", + "status": "pending", + "dependencies": [ + "DOC-multi-document-links-E" + ], + "capability": "multi-document-links", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "DOC-multi-document-links-G", + "title": "Close FCStd save, reopen and resave: External links, close/reopen, merge and recovery", + "status": "pending", + "dependencies": [ + "DOC-multi-document-links-F" + ], + "capability": "multi-document-links", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "DOC-multi-document-links-H", + "title": "Replay in a real browser: External links, close/reopen, merge and recovery", + "status": "pending", + "dependencies": [ + "DOC-multi-document-links-G" + ], + "capability": "multi-document-links", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "DOC-multi-document-links-I", + "title": "Promote capability and synchronize blockers: External links, close/reopen, merge and recovery", + "status": "pending", + "dependencies": [ + "DOC-multi-document-links-H" + ], + "capability": "multi-document-links", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + } + ] + }, + { + "id": "CORE-MODELING", + "title": "Close core modeling operations", + "exactTasks": [ + "EX-KER-01", + "EX-SK-01", + "EX-SK-02", + "EX-PART-01", + "EX-PD-01" + ], + "status": "pending", + "tasks": [ + { + "id": "CORE-fuse-A", + "title": "Lock native inventory and preconditions: core operation fuse", + "status": "pending", + "dependencies": [ + "DOC-multi-document-links-I" + ], + "capability": "fuse", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-fuse-B", + "title": "Capture native success evidence: core operation fuse", + "status": "pending", + "dependencies": [ + "CORE-fuse-A" + ], + "capability": "fuse", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-fuse-C", + "title": "Capture native failure and cancel evidence: core operation fuse", + "status": "pending", + "dependencies": [ + "CORE-fuse-B" + ], + "capability": "fuse", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-fuse-D", + "title": "Capture parameter mutation and restore evidence: core operation fuse", + "status": "pending", + "dependencies": [ + "CORE-fuse-C" + ], + "capability": "fuse", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-fuse-E", + "title": "Implement the Facade capability: core operation fuse", + "status": "pending", + "dependencies": [ + "CORE-fuse-D" + ], + "capability": "fuse", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-fuse-F", + "title": "Close transaction and recovery behavior: core operation fuse", + "status": "pending", + "dependencies": [ + "CORE-fuse-E" + ], + "capability": "fuse", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-fuse-G", + "title": "Close FCStd save, reopen and resave: core operation fuse", + "status": "pending", + "dependencies": [ + "CORE-fuse-F" + ], + "capability": "fuse", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-fuse-H", + "title": "Replay in a real browser: core operation fuse", + "status": "pending", + "dependencies": [ + "CORE-fuse-G" + ], + "capability": "fuse", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-fuse-I", + "title": "Promote capability and synchronize blockers: core operation fuse", + "status": "pending", + "dependencies": [ + "CORE-fuse-H" + ], + "capability": "fuse", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-cut-A", + "title": "Lock native inventory and preconditions: core operation cut", + "status": "pending", + "dependencies": [ + "CORE-fuse-I" + ], + "capability": "cut", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-cut-B", + "title": "Capture native success evidence: core operation cut", + "status": "pending", + "dependencies": [ + "CORE-cut-A" + ], + "capability": "cut", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-cut-C", + "title": "Capture native failure and cancel evidence: core operation cut", + "status": "pending", + "dependencies": [ + "CORE-cut-B" + ], + "capability": "cut", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-cut-D", + "title": "Capture parameter mutation and restore evidence: core operation cut", + "status": "pending", + "dependencies": [ + "CORE-cut-C" + ], + "capability": "cut", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-cut-E", + "title": "Implement the Facade capability: core operation cut", + "status": "pending", + "dependencies": [ + "CORE-cut-D" + ], + "capability": "cut", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-cut-F", + "title": "Close transaction and recovery behavior: core operation cut", + "status": "pending", + "dependencies": [ + "CORE-cut-E" + ], + "capability": "cut", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-cut-G", + "title": "Close FCStd save, reopen and resave: core operation cut", + "status": "pending", + "dependencies": [ + "CORE-cut-F" + ], + "capability": "cut", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-cut-H", + "title": "Replay in a real browser: core operation cut", + "status": "pending", + "dependencies": [ + "CORE-cut-G" + ], + "capability": "cut", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-cut-I", + "title": "Promote capability and synchronize blockers: core operation cut", + "status": "pending", + "dependencies": [ + "CORE-cut-H" + ], + "capability": "cut", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-common-A", + "title": "Lock native inventory and preconditions: core operation common", + "status": "pending", + "dependencies": [ + "CORE-cut-I" + ], + "capability": "common", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-common-B", + "title": "Capture native success evidence: core operation common", + "status": "pending", + "dependencies": [ + "CORE-common-A" + ], + "capability": "common", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-common-C", + "title": "Capture native failure and cancel evidence: core operation common", + "status": "pending", + "dependencies": [ + "CORE-common-B" + ], + "capability": "common", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-common-D", + "title": "Capture parameter mutation and restore evidence: core operation common", + "status": "pending", + "dependencies": [ + "CORE-common-C" + ], + "capability": "common", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-common-E", + "title": "Implement the Facade capability: core operation common", + "status": "pending", + "dependencies": [ + "CORE-common-D" + ], + "capability": "common", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-common-F", + "title": "Close transaction and recovery behavior: core operation common", + "status": "pending", + "dependencies": [ + "CORE-common-E" + ], + "capability": "common", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-common-G", + "title": "Close FCStd save, reopen and resave: core operation common", + "status": "pending", + "dependencies": [ + "CORE-common-F" + ], + "capability": "common", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-common-H", + "title": "Replay in a real browser: core operation common", + "status": "pending", + "dependencies": [ + "CORE-common-G" + ], + "capability": "common", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-common-I", + "title": "Promote capability and synchronize blockers: core operation common", + "status": "pending", + "dependencies": [ + "CORE-common-H" + ], + "capability": "common", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-rotate-A", + "title": "Lock native inventory and preconditions: core operation rotate", + "status": "pending", + "dependencies": [ + "CORE-common-I" + ], + "capability": "rotate", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-rotate-B", + "title": "Capture native success evidence: core operation rotate", + "status": "pending", + "dependencies": [ + "CORE-rotate-A" + ], + "capability": "rotate", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-rotate-C", + "title": "Capture native failure and cancel evidence: core operation rotate", + "status": "pending", + "dependencies": [ + "CORE-rotate-B" + ], + "capability": "rotate", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-rotate-D", + "title": "Capture parameter mutation and restore evidence: core operation rotate", + "status": "pending", + "dependencies": [ + "CORE-rotate-C" + ], + "capability": "rotate", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-rotate-E", + "title": "Implement the Facade capability: core operation rotate", + "status": "pending", + "dependencies": [ + "CORE-rotate-D" + ], + "capability": "rotate", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-rotate-F", + "title": "Close transaction and recovery behavior: core operation rotate", + "status": "pending", + "dependencies": [ + "CORE-rotate-E" + ], + "capability": "rotate", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-rotate-G", + "title": "Close FCStd save, reopen and resave: core operation rotate", + "status": "pending", + "dependencies": [ + "CORE-rotate-F" + ], + "capability": "rotate", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-rotate-H", + "title": "Replay in a real browser: core operation rotate", + "status": "pending", + "dependencies": [ + "CORE-rotate-G" + ], + "capability": "rotate", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-rotate-I", + "title": "Promote capability and synchronize blockers: core operation rotate", + "status": "pending", + "dependencies": [ + "CORE-rotate-H" + ], + "capability": "rotate", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-pad-A", + "title": "Lock native inventory and preconditions: core operation pad", + "status": "pending", + "dependencies": [ + "CORE-rotate-I" + ], + "capability": "pad", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-pad-B", + "title": "Capture native success evidence: core operation pad", + "status": "pending", + "dependencies": [ + "CORE-pad-A" + ], + "capability": "pad", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-pad-C", + "title": "Capture native failure and cancel evidence: core operation pad", + "status": "pending", + "dependencies": [ + "CORE-pad-B" + ], + "capability": "pad", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-pad-D", + "title": "Capture parameter mutation and restore evidence: core operation pad", + "status": "pending", + "dependencies": [ + "CORE-pad-C" + ], + "capability": "pad", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-pad-E", + "title": "Implement the Facade capability: core operation pad", + "status": "pending", + "dependencies": [ + "CORE-pad-D" + ], + "capability": "pad", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-pad-F", + "title": "Close transaction and recovery behavior: core operation pad", + "status": "pending", + "dependencies": [ + "CORE-pad-E" + ], + "capability": "pad", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-pad-G", + "title": "Close FCStd save, reopen and resave: core operation pad", + "status": "pending", + "dependencies": [ + "CORE-pad-F" + ], + "capability": "pad", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-pad-H", + "title": "Replay in a real browser: core operation pad", + "status": "pending", + "dependencies": [ + "CORE-pad-G" + ], + "capability": "pad", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-pad-I", + "title": "Promote capability and synchronize blockers: core operation pad", + "status": "pending", + "dependencies": [ + "CORE-pad-H" + ], + "capability": "pad", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-pocket-A", + "title": "Lock native inventory and preconditions: core operation pocket", + "status": "pending", + "dependencies": [ + "CORE-pad-I" + ], + "capability": "pocket", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-pocket-B", + "title": "Capture native success evidence: core operation pocket", + "status": "pending", + "dependencies": [ + "CORE-pocket-A" + ], + "capability": "pocket", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-pocket-C", + "title": "Capture native failure and cancel evidence: core operation pocket", + "status": "pending", + "dependencies": [ + "CORE-pocket-B" + ], + "capability": "pocket", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-pocket-D", + "title": "Capture parameter mutation and restore evidence: core operation pocket", + "status": "pending", + "dependencies": [ + "CORE-pocket-C" + ], + "capability": "pocket", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-pocket-E", + "title": "Implement the Facade capability: core operation pocket", + "status": "pending", + "dependencies": [ + "CORE-pocket-D" + ], + "capability": "pocket", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-pocket-F", + "title": "Close transaction and recovery behavior: core operation pocket", + "status": "pending", + "dependencies": [ + "CORE-pocket-E" + ], + "capability": "pocket", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-pocket-G", + "title": "Close FCStd save, reopen and resave: core operation pocket", + "status": "pending", + "dependencies": [ + "CORE-pocket-F" + ], + "capability": "pocket", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-pocket-H", + "title": "Replay in a real browser: core operation pocket", + "status": "pending", + "dependencies": [ + "CORE-pocket-G" + ], + "capability": "pocket", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-pocket-I", + "title": "Promote capability and synchronize blockers: core operation pocket", + "status": "pending", + "dependencies": [ + "CORE-pocket-H" + ], + "capability": "pocket", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-loft-A", + "title": "Lock native inventory and preconditions: core operation loft", + "status": "pending", + "dependencies": [ + "CORE-pocket-I" + ], + "capability": "loft", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-loft-B", + "title": "Capture native success evidence: core operation loft", + "status": "pending", + "dependencies": [ + "CORE-loft-A" + ], + "capability": "loft", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-loft-C", + "title": "Capture native failure and cancel evidence: core operation loft", + "status": "pending", + "dependencies": [ + "CORE-loft-B" + ], + "capability": "loft", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-loft-D", + "title": "Capture parameter mutation and restore evidence: core operation loft", + "status": "pending", + "dependencies": [ + "CORE-loft-C" + ], + "capability": "loft", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-loft-E", + "title": "Implement the Facade capability: core operation loft", + "status": "pending", + "dependencies": [ + "CORE-loft-D" + ], + "capability": "loft", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-loft-F", + "title": "Close transaction and recovery behavior: core operation loft", + "status": "pending", + "dependencies": [ + "CORE-loft-E" + ], + "capability": "loft", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-loft-G", + "title": "Close FCStd save, reopen and resave: core operation loft", + "status": "pending", + "dependencies": [ + "CORE-loft-F" + ], + "capability": "loft", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-loft-H", + "title": "Replay in a real browser: core operation loft", + "status": "pending", + "dependencies": [ + "CORE-loft-G" + ], + "capability": "loft", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-loft-I", + "title": "Promote capability and synchronize blockers: core operation loft", + "status": "pending", + "dependencies": [ + "CORE-loft-H" + ], + "capability": "loft", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-pipe-A", + "title": "Lock native inventory and preconditions: core operation pipe", + "status": "pending", + "dependencies": [ + "CORE-loft-I" + ], + "capability": "pipe", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-pipe-B", + "title": "Capture native success evidence: core operation pipe", + "status": "pending", + "dependencies": [ + "CORE-pipe-A" + ], + "capability": "pipe", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-pipe-C", + "title": "Capture native failure and cancel evidence: core operation pipe", + "status": "pending", + "dependencies": [ + "CORE-pipe-B" + ], + "capability": "pipe", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-pipe-D", + "title": "Capture parameter mutation and restore evidence: core operation pipe", + "status": "pending", + "dependencies": [ + "CORE-pipe-C" + ], + "capability": "pipe", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-pipe-E", + "title": "Implement the Facade capability: core operation pipe", + "status": "pending", + "dependencies": [ + "CORE-pipe-D" + ], + "capability": "pipe", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-pipe-F", + "title": "Close transaction and recovery behavior: core operation pipe", + "status": "pending", + "dependencies": [ + "CORE-pipe-E" + ], + "capability": "pipe", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-pipe-G", + "title": "Close FCStd save, reopen and resave: core operation pipe", + "status": "pending", + "dependencies": [ + "CORE-pipe-F" + ], + "capability": "pipe", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-pipe-H", + "title": "Replay in a real browser: core operation pipe", + "status": "pending", + "dependencies": [ + "CORE-pipe-G" + ], + "capability": "pipe", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-pipe-I", + "title": "Promote capability and synchronize blockers: core operation pipe", + "status": "pending", + "dependencies": [ + "CORE-pipe-H" + ], + "capability": "pipe", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-revolution-A", + "title": "Lock native inventory and preconditions: core operation revolution", + "status": "pending", + "dependencies": [ + "CORE-pipe-I" + ], + "capability": "revolution", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-revolution-B", + "title": "Capture native success evidence: core operation revolution", + "status": "pending", + "dependencies": [ + "CORE-revolution-A" + ], + "capability": "revolution", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-revolution-C", + "title": "Capture native failure and cancel evidence: core operation revolution", + "status": "pending", + "dependencies": [ + "CORE-revolution-B" + ], + "capability": "revolution", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-revolution-D", + "title": "Capture parameter mutation and restore evidence: core operation revolution", + "status": "pending", + "dependencies": [ + "CORE-revolution-C" + ], + "capability": "revolution", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-revolution-E", + "title": "Implement the Facade capability: core operation revolution", + "status": "pending", + "dependencies": [ + "CORE-revolution-D" + ], + "capability": "revolution", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-revolution-F", + "title": "Close transaction and recovery behavior: core operation revolution", + "status": "pending", + "dependencies": [ + "CORE-revolution-E" + ], + "capability": "revolution", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-revolution-G", + "title": "Close FCStd save, reopen and resave: core operation revolution", + "status": "pending", + "dependencies": [ + "CORE-revolution-F" + ], + "capability": "revolution", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-revolution-H", + "title": "Replay in a real browser: core operation revolution", + "status": "pending", + "dependencies": [ + "CORE-revolution-G" + ], + "capability": "revolution", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-revolution-I", + "title": "Promote capability and synchronize blockers: core operation revolution", + "status": "pending", + "dependencies": [ + "CORE-revolution-H" + ], + "capability": "revolution", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-groove-A", + "title": "Lock native inventory and preconditions: core operation groove", + "status": "pending", + "dependencies": [ + "CORE-revolution-I" + ], + "capability": "groove", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-groove-B", + "title": "Capture native success evidence: core operation groove", + "status": "pending", + "dependencies": [ + "CORE-groove-A" + ], + "capability": "groove", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-groove-C", + "title": "Capture native failure and cancel evidence: core operation groove", + "status": "pending", + "dependencies": [ + "CORE-groove-B" + ], + "capability": "groove", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-groove-D", + "title": "Capture parameter mutation and restore evidence: core operation groove", + "status": "pending", + "dependencies": [ + "CORE-groove-C" + ], + "capability": "groove", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-groove-E", + "title": "Implement the Facade capability: core operation groove", + "status": "pending", + "dependencies": [ + "CORE-groove-D" + ], + "capability": "groove", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-groove-F", + "title": "Close transaction and recovery behavior: core operation groove", + "status": "pending", + "dependencies": [ + "CORE-groove-E" + ], + "capability": "groove", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-groove-G", + "title": "Close FCStd save, reopen and resave: core operation groove", + "status": "pending", + "dependencies": [ + "CORE-groove-F" + ], + "capability": "groove", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-groove-H", + "title": "Replay in a real browser: core operation groove", + "status": "pending", + "dependencies": [ + "CORE-groove-G" + ], + "capability": "groove", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-groove-I", + "title": "Promote capability and synchronize blockers: core operation groove", + "status": "pending", + "dependencies": [ + "CORE-groove-H" + ], + "capability": "groove", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-fillet-A", + "title": "Lock native inventory and preconditions: core operation fillet", + "status": "pending", + "dependencies": [ + "CORE-groove-I" + ], + "capability": "fillet", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-fillet-B", + "title": "Capture native success evidence: core operation fillet", + "status": "pending", + "dependencies": [ + "CORE-fillet-A" + ], + "capability": "fillet", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-fillet-C", + "title": "Capture native failure and cancel evidence: core operation fillet", + "status": "pending", + "dependencies": [ + "CORE-fillet-B" + ], + "capability": "fillet", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-fillet-D", + "title": "Capture parameter mutation and restore evidence: core operation fillet", + "status": "pending", + "dependencies": [ + "CORE-fillet-C" + ], + "capability": "fillet", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-fillet-E", + "title": "Implement the Facade capability: core operation fillet", + "status": "pending", + "dependencies": [ + "CORE-fillet-D" + ], + "capability": "fillet", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-fillet-F", + "title": "Close transaction and recovery behavior: core operation fillet", + "status": "pending", + "dependencies": [ + "CORE-fillet-E" + ], + "capability": "fillet", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-fillet-G", + "title": "Close FCStd save, reopen and resave: core operation fillet", + "status": "pending", + "dependencies": [ + "CORE-fillet-F" + ], + "capability": "fillet", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-fillet-H", + "title": "Replay in a real browser: core operation fillet", + "status": "pending", + "dependencies": [ + "CORE-fillet-G" + ], + "capability": "fillet", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-fillet-I", + "title": "Promote capability and synchronize blockers: core operation fillet", + "status": "pending", + "dependencies": [ + "CORE-fillet-H" + ], + "capability": "fillet", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-chamfer-A", + "title": "Lock native inventory and preconditions: core operation chamfer", + "status": "pending", + "dependencies": [ + "CORE-fillet-I" + ], + "capability": "chamfer", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-chamfer-B", + "title": "Capture native success evidence: core operation chamfer", + "status": "pending", + "dependencies": [ + "CORE-chamfer-A" + ], + "capability": "chamfer", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-chamfer-C", + "title": "Capture native failure and cancel evidence: core operation chamfer", + "status": "pending", + "dependencies": [ + "CORE-chamfer-B" + ], + "capability": "chamfer", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-chamfer-D", + "title": "Capture parameter mutation and restore evidence: core operation chamfer", + "status": "pending", + "dependencies": [ + "CORE-chamfer-C" + ], + "capability": "chamfer", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-chamfer-E", + "title": "Implement the Facade capability: core operation chamfer", + "status": "pending", + "dependencies": [ + "CORE-chamfer-D" + ], + "capability": "chamfer", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-chamfer-F", + "title": "Close transaction and recovery behavior: core operation chamfer", + "status": "pending", + "dependencies": [ + "CORE-chamfer-E" + ], + "capability": "chamfer", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-chamfer-G", + "title": "Close FCStd save, reopen and resave: core operation chamfer", + "status": "pending", + "dependencies": [ + "CORE-chamfer-F" + ], + "capability": "chamfer", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-chamfer-H", + "title": "Replay in a real browser: core operation chamfer", + "status": "pending", + "dependencies": [ + "CORE-chamfer-G" + ], + "capability": "chamfer", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-chamfer-I", + "title": "Promote capability and synchronize blockers: core operation chamfer", + "status": "pending", + "dependencies": [ + "CORE-chamfer-H" + ], + "capability": "chamfer", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-hole-A", + "title": "Lock native inventory and preconditions: core operation hole", + "status": "pending", + "dependencies": [ + "CORE-chamfer-I" + ], + "capability": "hole", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-hole-B", + "title": "Capture native success evidence: core operation hole", + "status": "pending", + "dependencies": [ + "CORE-hole-A" + ], + "capability": "hole", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-hole-C", + "title": "Capture native failure and cancel evidence: core operation hole", + "status": "pending", + "dependencies": [ + "CORE-hole-B" + ], + "capability": "hole", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-hole-D", + "title": "Capture parameter mutation and restore evidence: core operation hole", + "status": "pending", + "dependencies": [ + "CORE-hole-C" + ], + "capability": "hole", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-hole-E", + "title": "Implement the Facade capability: core operation hole", + "status": "pending", + "dependencies": [ + "CORE-hole-D" + ], + "capability": "hole", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-hole-F", + "title": "Close transaction and recovery behavior: core operation hole", + "status": "pending", + "dependencies": [ + "CORE-hole-E" + ], + "capability": "hole", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-hole-G", + "title": "Close FCStd save, reopen and resave: core operation hole", + "status": "pending", + "dependencies": [ + "CORE-hole-F" + ], + "capability": "hole", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-hole-H", + "title": "Replay in a real browser: core operation hole", + "status": "pending", + "dependencies": [ + "CORE-hole-G" + ], + "capability": "hole", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-hole-I", + "title": "Promote capability and synchronize blockers: core operation hole", + "status": "pending", + "dependencies": [ + "CORE-hole-H" + ], + "capability": "hole", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-draft-A", + "title": "Lock native inventory and preconditions: core operation draft", + "status": "pending", + "dependencies": [ + "CORE-hole-I" + ], + "capability": "draft", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-draft-B", + "title": "Capture native success evidence: core operation draft", + "status": "pending", + "dependencies": [ + "CORE-draft-A" + ], + "capability": "draft", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-draft-C", + "title": "Capture native failure and cancel evidence: core operation draft", + "status": "pending", + "dependencies": [ + "CORE-draft-B" + ], + "capability": "draft", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-draft-D", + "title": "Capture parameter mutation and restore evidence: core operation draft", + "status": "pending", + "dependencies": [ + "CORE-draft-C" + ], + "capability": "draft", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-draft-E", + "title": "Implement the Facade capability: core operation draft", + "status": "pending", + "dependencies": [ + "CORE-draft-D" + ], + "capability": "draft", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-draft-F", + "title": "Close transaction and recovery behavior: core operation draft", + "status": "pending", + "dependencies": [ + "CORE-draft-E" + ], + "capability": "draft", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-draft-G", + "title": "Close FCStd save, reopen and resave: core operation draft", + "status": "pending", + "dependencies": [ + "CORE-draft-F" + ], + "capability": "draft", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-draft-H", + "title": "Replay in a real browser: core operation draft", + "status": "pending", + "dependencies": [ + "CORE-draft-G" + ], + "capability": "draft", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-draft-I", + "title": "Promote capability and synchronize blockers: core operation draft", + "status": "pending", + "dependencies": [ + "CORE-draft-H" + ], + "capability": "draft", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-thickness-A", + "title": "Lock native inventory and preconditions: core operation thickness", + "status": "pending", + "dependencies": [ + "CORE-draft-I" + ], + "capability": "thickness", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-thickness-B", + "title": "Capture native success evidence: core operation thickness", + "status": "pending", + "dependencies": [ + "CORE-thickness-A" + ], + "capability": "thickness", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-thickness-C", + "title": "Capture native failure and cancel evidence: core operation thickness", + "status": "pending", + "dependencies": [ + "CORE-thickness-B" + ], + "capability": "thickness", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-thickness-D", + "title": "Capture parameter mutation and restore evidence: core operation thickness", + "status": "pending", + "dependencies": [ + "CORE-thickness-C" + ], + "capability": "thickness", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-thickness-E", + "title": "Implement the Facade capability: core operation thickness", + "status": "pending", + "dependencies": [ + "CORE-thickness-D" + ], + "capability": "thickness", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-thickness-F", + "title": "Close transaction and recovery behavior: core operation thickness", + "status": "pending", + "dependencies": [ + "CORE-thickness-E" + ], + "capability": "thickness", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-thickness-G", + "title": "Close FCStd save, reopen and resave: core operation thickness", + "status": "pending", + "dependencies": [ + "CORE-thickness-F" + ], + "capability": "thickness", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-thickness-H", + "title": "Replay in a real browser: core operation thickness", + "status": "pending", + "dependencies": [ + "CORE-thickness-G" + ], + "capability": "thickness", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-thickness-I", + "title": "Promote capability and synchronize blockers: core operation thickness", + "status": "pending", + "dependencies": [ + "CORE-thickness-H" + ], + "capability": "thickness", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-linear-pattern-A", + "title": "Lock native inventory and preconditions: core operation linear-pattern", + "status": "pending", + "dependencies": [ + "CORE-thickness-I" + ], + "capability": "linear-pattern", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-linear-pattern-B", + "title": "Capture native success evidence: core operation linear-pattern", + "status": "pending", + "dependencies": [ + "CORE-linear-pattern-A" + ], + "capability": "linear-pattern", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-linear-pattern-C", + "title": "Capture native failure and cancel evidence: core operation linear-pattern", + "status": "pending", + "dependencies": [ + "CORE-linear-pattern-B" + ], + "capability": "linear-pattern", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-linear-pattern-D", + "title": "Capture parameter mutation and restore evidence: core operation linear-pattern", + "status": "pending", + "dependencies": [ + "CORE-linear-pattern-C" + ], + "capability": "linear-pattern", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-linear-pattern-E", + "title": "Implement the Facade capability: core operation linear-pattern", + "status": "pending", + "dependencies": [ + "CORE-linear-pattern-D" + ], + "capability": "linear-pattern", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-linear-pattern-F", + "title": "Close transaction and recovery behavior: core operation linear-pattern", + "status": "pending", + "dependencies": [ + "CORE-linear-pattern-E" + ], + "capability": "linear-pattern", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-linear-pattern-G", + "title": "Close FCStd save, reopen and resave: core operation linear-pattern", + "status": "pending", + "dependencies": [ + "CORE-linear-pattern-F" + ], + "capability": "linear-pattern", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-linear-pattern-H", + "title": "Replay in a real browser: core operation linear-pattern", + "status": "pending", + "dependencies": [ + "CORE-linear-pattern-G" + ], + "capability": "linear-pattern", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-linear-pattern-I", + "title": "Promote capability and synchronize blockers: core operation linear-pattern", + "status": "pending", + "dependencies": [ + "CORE-linear-pattern-H" + ], + "capability": "linear-pattern", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-polar-pattern-A", + "title": "Lock native inventory and preconditions: core operation polar-pattern", + "status": "pending", + "dependencies": [ + "CORE-linear-pattern-I" + ], + "capability": "polar-pattern", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-polar-pattern-B", + "title": "Capture native success evidence: core operation polar-pattern", + "status": "pending", + "dependencies": [ + "CORE-polar-pattern-A" + ], + "capability": "polar-pattern", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-polar-pattern-C", + "title": "Capture native failure and cancel evidence: core operation polar-pattern", + "status": "pending", + "dependencies": [ + "CORE-polar-pattern-B" + ], + "capability": "polar-pattern", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-polar-pattern-D", + "title": "Capture parameter mutation and restore evidence: core operation polar-pattern", + "status": "pending", + "dependencies": [ + "CORE-polar-pattern-C" + ], + "capability": "polar-pattern", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-polar-pattern-E", + "title": "Implement the Facade capability: core operation polar-pattern", + "status": "pending", + "dependencies": [ + "CORE-polar-pattern-D" + ], + "capability": "polar-pattern", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-polar-pattern-F", + "title": "Close transaction and recovery behavior: core operation polar-pattern", + "status": "pending", + "dependencies": [ + "CORE-polar-pattern-E" + ], + "capability": "polar-pattern", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-polar-pattern-G", + "title": "Close FCStd save, reopen and resave: core operation polar-pattern", + "status": "pending", + "dependencies": [ + "CORE-polar-pattern-F" + ], + "capability": "polar-pattern", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-polar-pattern-H", + "title": "Replay in a real browser: core operation polar-pattern", + "status": "pending", + "dependencies": [ + "CORE-polar-pattern-G" + ], + "capability": "polar-pattern", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-polar-pattern-I", + "title": "Promote capability and synchronize blockers: core operation polar-pattern", + "status": "pending", + "dependencies": [ + "CORE-polar-pattern-H" + ], + "capability": "polar-pattern", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-mirrored-A", + "title": "Lock native inventory and preconditions: core operation mirrored", + "status": "pending", + "dependencies": [ + "CORE-polar-pattern-I" + ], + "capability": "mirrored", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-mirrored-B", + "title": "Capture native success evidence: core operation mirrored", + "status": "pending", + "dependencies": [ + "CORE-mirrored-A" + ], + "capability": "mirrored", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-mirrored-C", + "title": "Capture native failure and cancel evidence: core operation mirrored", + "status": "pending", + "dependencies": [ + "CORE-mirrored-B" + ], + "capability": "mirrored", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-mirrored-D", + "title": "Capture parameter mutation and restore evidence: core operation mirrored", + "status": "pending", + "dependencies": [ + "CORE-mirrored-C" + ], + "capability": "mirrored", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-mirrored-E", + "title": "Implement the Facade capability: core operation mirrored", + "status": "pending", + "dependencies": [ + "CORE-mirrored-D" + ], + "capability": "mirrored", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-mirrored-F", + "title": "Close transaction and recovery behavior: core operation mirrored", + "status": "pending", + "dependencies": [ + "CORE-mirrored-E" + ], + "capability": "mirrored", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-mirrored-G", + "title": "Close FCStd save, reopen and resave: core operation mirrored", + "status": "pending", + "dependencies": [ + "CORE-mirrored-F" + ], + "capability": "mirrored", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-mirrored-H", + "title": "Replay in a real browser: core operation mirrored", + "status": "pending", + "dependencies": [ + "CORE-mirrored-G" + ], + "capability": "mirrored", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-mirrored-I", + "title": "Promote capability and synchronize blockers: core operation mirrored", + "status": "pending", + "dependencies": [ + "CORE-mirrored-H" + ], + "capability": "mirrored", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "CORE-multi-transform-A", + "title": "Lock native inventory and preconditions: core operation multi-transform", + "status": "pending", + "dependencies": [ + "CORE-mirrored-I" + ], + "capability": "multi-transform", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "CORE-multi-transform-B", + "title": "Capture native success evidence: core operation multi-transform", + "status": "pending", + "dependencies": [ + "CORE-multi-transform-A" + ], + "capability": "multi-transform", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "CORE-multi-transform-C", + "title": "Capture native failure and cancel evidence: core operation multi-transform", + "status": "pending", + "dependencies": [ + "CORE-multi-transform-B" + ], + "capability": "multi-transform", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "CORE-multi-transform-D", + "title": "Capture parameter mutation and restore evidence: core operation multi-transform", + "status": "pending", + "dependencies": [ + "CORE-multi-transform-C" + ], + "capability": "multi-transform", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "CORE-multi-transform-E", + "title": "Implement the Facade capability: core operation multi-transform", + "status": "pending", + "dependencies": [ + "CORE-multi-transform-D" + ], + "capability": "multi-transform", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "CORE-multi-transform-F", + "title": "Close transaction and recovery behavior: core operation multi-transform", + "status": "pending", + "dependencies": [ + "CORE-multi-transform-E" + ], + "capability": "multi-transform", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "CORE-multi-transform-G", + "title": "Close FCStd save, reopen and resave: core operation multi-transform", + "status": "pending", + "dependencies": [ + "CORE-multi-transform-F" + ], + "capability": "multi-transform", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "CORE-multi-transform-H", + "title": "Replay in a real browser: core operation multi-transform", + "status": "pending", + "dependencies": [ + "CORE-multi-transform-G" + ], + "capability": "multi-transform", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "CORE-multi-transform-I", + "title": "Promote capability and synchronize blockers: core operation multi-transform", + "status": "pending", + "dependencies": [ + "CORE-multi-transform-H" + ], + "capability": "multi-transform", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + } + ] + }, + { + "id": "FCSTD-AND-FORMATS", + "title": "Close FCStd and interchange formats", + "exactTasks": [ + "EX-FC-01", + "EX-FMT-01", + "EX-FMT-02", + "EX-FMT-03", + "EX-FMT-04" + ], + "status": "pending", + "tasks": [ + { + "id": "IO-fcstd-readonly-roundtrip-A", + "title": "Lock native inventory and preconditions: FCStd unchanged object and Property round-trip", + "status": "pending", + "dependencies": [ + "CORE-multi-transform-I" + ], + "capability": "fcstd-readonly-roundtrip", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "IO-fcstd-readonly-roundtrip-B", + "title": "Capture native success evidence: FCStd unchanged object and Property round-trip", + "status": "pending", + "dependencies": [ + "IO-fcstd-readonly-roundtrip-A" + ], + "capability": "fcstd-readonly-roundtrip", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "IO-fcstd-readonly-roundtrip-C", + "title": "Capture native failure and cancel evidence: FCStd unchanged object and Property round-trip", + "status": "pending", + "dependencies": [ + "IO-fcstd-readonly-roundtrip-B" + ], + "capability": "fcstd-readonly-roundtrip", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "IO-fcstd-readonly-roundtrip-D", + "title": "Capture parameter mutation and restore evidence: FCStd unchanged object and Property round-trip", + "status": "pending", + "dependencies": [ + "IO-fcstd-readonly-roundtrip-C" + ], + "capability": "fcstd-readonly-roundtrip", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "IO-fcstd-readonly-roundtrip-E", + "title": "Implement the Facade capability: FCStd unchanged object and Property round-trip", + "status": "pending", + "dependencies": [ + "IO-fcstd-readonly-roundtrip-D" + ], + "capability": "fcstd-readonly-roundtrip", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "IO-fcstd-readonly-roundtrip-F", + "title": "Close transaction and recovery behavior: FCStd unchanged object and Property round-trip", + "status": "pending", + "dependencies": [ + "IO-fcstd-readonly-roundtrip-E" + ], + "capability": "fcstd-readonly-roundtrip", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "IO-fcstd-readonly-roundtrip-G", + "title": "Close FCStd save, reopen and resave: FCStd unchanged object and Property round-trip", + "status": "pending", + "dependencies": [ + "IO-fcstd-readonly-roundtrip-F" + ], + "capability": "fcstd-readonly-roundtrip", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "IO-fcstd-readonly-roundtrip-H", + "title": "Replay in a real browser: FCStd unchanged object and Property round-trip", + "status": "pending", + "dependencies": [ + "IO-fcstd-readonly-roundtrip-G" + ], + "capability": "fcstd-readonly-roundtrip", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "IO-fcstd-readonly-roundtrip-I", + "title": "Promote capability and synchronize blockers: FCStd unchanged object and Property round-trip", + "status": "pending", + "dependencies": [ + "IO-fcstd-readonly-roundtrip-H" + ], + "capability": "fcstd-readonly-roundtrip", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "IO-fcstd-edited-roundtrip-A", + "title": "Lock native inventory and preconditions: Web edit, FreeCAD reopen/resave and Web reopen", + "status": "pending", + "dependencies": [ + "IO-fcstd-readonly-roundtrip-I" + ], + "capability": "fcstd-edited-roundtrip", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "IO-fcstd-edited-roundtrip-B", + "title": "Capture native success evidence: Web edit, FreeCAD reopen/resave and Web reopen", + "status": "pending", + "dependencies": [ + "IO-fcstd-edited-roundtrip-A" + ], + "capability": "fcstd-edited-roundtrip", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "IO-fcstd-edited-roundtrip-C", + "title": "Capture native failure and cancel evidence: Web edit, FreeCAD reopen/resave and Web reopen", + "status": "pending", + "dependencies": [ + "IO-fcstd-edited-roundtrip-B" + ], + "capability": "fcstd-edited-roundtrip", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "IO-fcstd-edited-roundtrip-D", + "title": "Capture parameter mutation and restore evidence: Web edit, FreeCAD reopen/resave and Web reopen", + "status": "pending", + "dependencies": [ + "IO-fcstd-edited-roundtrip-C" + ], + "capability": "fcstd-edited-roundtrip", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "IO-fcstd-edited-roundtrip-E", + "title": "Implement the Facade capability: Web edit, FreeCAD reopen/resave and Web reopen", + "status": "pending", + "dependencies": [ + "IO-fcstd-edited-roundtrip-D" + ], + "capability": "fcstd-edited-roundtrip", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "IO-fcstd-edited-roundtrip-F", + "title": "Close transaction and recovery behavior: Web edit, FreeCAD reopen/resave and Web reopen", + "status": "pending", + "dependencies": [ + "IO-fcstd-edited-roundtrip-E" + ], + "capability": "fcstd-edited-roundtrip", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "IO-fcstd-edited-roundtrip-G", + "title": "Close FCStd save, reopen and resave: Web edit, FreeCAD reopen/resave and Web reopen", + "status": "pending", + "dependencies": [ + "IO-fcstd-edited-roundtrip-F" + ], + "capability": "fcstd-edited-roundtrip", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "IO-fcstd-edited-roundtrip-H", + "title": "Replay in a real browser: Web edit, FreeCAD reopen/resave and Web reopen", + "status": "pending", + "dependencies": [ + "IO-fcstd-edited-roundtrip-G" + ], + "capability": "fcstd-edited-roundtrip", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "IO-fcstd-edited-roundtrip-I", + "title": "Promote capability and synchronize blockers: Web edit, FreeCAD reopen/resave and Web reopen", + "status": "pending", + "dependencies": [ + "IO-fcstd-edited-roundtrip-H" + ], + "capability": "fcstd-edited-roundtrip", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "IO-fcstd-shape-resources-A", + "title": "Lock native inventory and preconditions: Shape, ElementMap2, StringHasher, Expression and GuiDocument resources", + "status": "pending", + "dependencies": [ + "IO-fcstd-edited-roundtrip-I" + ], + "capability": "fcstd-shape-resources", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "IO-fcstd-shape-resources-B", + "title": "Capture native success evidence: Shape, ElementMap2, StringHasher, Expression and GuiDocument resources", + "status": "pending", + "dependencies": [ + "IO-fcstd-shape-resources-A" + ], + "capability": "fcstd-shape-resources", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "IO-fcstd-shape-resources-C", + "title": "Capture native failure and cancel evidence: Shape, ElementMap2, StringHasher, Expression and GuiDocument resources", + "status": "pending", + "dependencies": [ + "IO-fcstd-shape-resources-B" + ], + "capability": "fcstd-shape-resources", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "IO-fcstd-shape-resources-D", + "title": "Capture parameter mutation and restore evidence: Shape, ElementMap2, StringHasher, Expression and GuiDocument resources", + "status": "pending", + "dependencies": [ + "IO-fcstd-shape-resources-C" + ], + "capability": "fcstd-shape-resources", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "IO-fcstd-shape-resources-E", + "title": "Implement the Facade capability: Shape, ElementMap2, StringHasher, Expression and GuiDocument resources", + "status": "pending", + "dependencies": [ + "IO-fcstd-shape-resources-D" + ], + "capability": "fcstd-shape-resources", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "IO-fcstd-shape-resources-F", + "title": "Close transaction and recovery behavior: Shape, ElementMap2, StringHasher, Expression and GuiDocument resources", + "status": "pending", + "dependencies": [ + "IO-fcstd-shape-resources-E" + ], + "capability": "fcstd-shape-resources", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "IO-fcstd-shape-resources-G", + "title": "Close FCStd save, reopen and resave: Shape, ElementMap2, StringHasher, Expression and GuiDocument resources", + "status": "pending", + "dependencies": [ + "IO-fcstd-shape-resources-F" + ], + "capability": "fcstd-shape-resources", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "IO-fcstd-shape-resources-H", + "title": "Replay in a real browser: Shape, ElementMap2, StringHasher, Expression and GuiDocument resources", + "status": "pending", + "dependencies": [ + "IO-fcstd-shape-resources-G" + ], + "capability": "fcstd-shape-resources", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "IO-fcstd-shape-resources-I", + "title": "Promote capability and synchronize blockers: Shape, ElementMap2, StringHasher, Expression and GuiDocument resources", + "status": "pending", + "dependencies": [ + "IO-fcstd-shape-resources-H" + ], + "capability": "fcstd-shape-resources", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "IO-fcstd-unknown-resources-A", + "title": "Lock native inventory and preconditions: Unknown XML, BRep, script and Extension preservation", + "status": "pending", + "dependencies": [ + "IO-fcstd-shape-resources-I" + ], + "capability": "fcstd-unknown-resources", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "IO-fcstd-unknown-resources-B", + "title": "Capture native success evidence: Unknown XML, BRep, script and Extension preservation", + "status": "pending", + "dependencies": [ + "IO-fcstd-unknown-resources-A" + ], + "capability": "fcstd-unknown-resources", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "IO-fcstd-unknown-resources-C", + "title": "Capture native failure and cancel evidence: Unknown XML, BRep, script and Extension preservation", + "status": "pending", + "dependencies": [ + "IO-fcstd-unknown-resources-B" + ], + "capability": "fcstd-unknown-resources", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "IO-fcstd-unknown-resources-D", + "title": "Capture parameter mutation and restore evidence: Unknown XML, BRep, script and Extension preservation", + "status": "pending", + "dependencies": [ + "IO-fcstd-unknown-resources-C" + ], + "capability": "fcstd-unknown-resources", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "IO-fcstd-unknown-resources-E", + "title": "Implement the Facade capability: Unknown XML, BRep, script and Extension preservation", + "status": "pending", + "dependencies": [ + "IO-fcstd-unknown-resources-D" + ], + "capability": "fcstd-unknown-resources", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "IO-fcstd-unknown-resources-F", + "title": "Close transaction and recovery behavior: Unknown XML, BRep, script and Extension preservation", + "status": "pending", + "dependencies": [ + "IO-fcstd-unknown-resources-E" + ], + "capability": "fcstd-unknown-resources", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "IO-fcstd-unknown-resources-G", + "title": "Close FCStd save, reopen and resave: Unknown XML, BRep, script and Extension preservation", + "status": "pending", + "dependencies": [ + "IO-fcstd-unknown-resources-F" + ], + "capability": "fcstd-unknown-resources", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "IO-fcstd-unknown-resources-H", + "title": "Replay in a real browser: Unknown XML, BRep, script and Extension preservation", + "status": "pending", + "dependencies": [ + "IO-fcstd-unknown-resources-G" + ], + "capability": "fcstd-unknown-resources", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "IO-fcstd-unknown-resources-I", + "title": "Promote capability and synchronize blockers: Unknown XML, BRep, script and Extension preservation", + "status": "pending", + "dependencies": [ + "IO-fcstd-unknown-resources-H" + ], + "capability": "fcstd-unknown-resources", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "IO-fcstd-adversarial-input-A", + "title": "Lock native inventory and preconditions: Corrupt ZIP, traversal, compression limit and cancellation", + "status": "pending", + "dependencies": [ + "IO-fcstd-unknown-resources-I" + ], + "capability": "fcstd-adversarial-input", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "IO-fcstd-adversarial-input-B", + "title": "Capture native success evidence: Corrupt ZIP, traversal, compression limit and cancellation", + "status": "pending", + "dependencies": [ + "IO-fcstd-adversarial-input-A" + ], + "capability": "fcstd-adversarial-input", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "IO-fcstd-adversarial-input-C", + "title": "Capture native failure and cancel evidence: Corrupt ZIP, traversal, compression limit and cancellation", + "status": "pending", + "dependencies": [ + "IO-fcstd-adversarial-input-B" + ], + "capability": "fcstd-adversarial-input", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "IO-fcstd-adversarial-input-D", + "title": "Capture parameter mutation and restore evidence: Corrupt ZIP, traversal, compression limit and cancellation", + "status": "pending", + "dependencies": [ + "IO-fcstd-adversarial-input-C" + ], + "capability": "fcstd-adversarial-input", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "IO-fcstd-adversarial-input-E", + "title": "Implement the Facade capability: Corrupt ZIP, traversal, compression limit and cancellation", + "status": "pending", + "dependencies": [ + "IO-fcstd-adversarial-input-D" + ], + "capability": "fcstd-adversarial-input", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "IO-fcstd-adversarial-input-F", + "title": "Close transaction and recovery behavior: Corrupt ZIP, traversal, compression limit and cancellation", + "status": "pending", + "dependencies": [ + "IO-fcstd-adversarial-input-E" + ], + "capability": "fcstd-adversarial-input", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "IO-fcstd-adversarial-input-G", + "title": "Close FCStd save, reopen and resave: Corrupt ZIP, traversal, compression limit and cancellation", + "status": "pending", + "dependencies": [ + "IO-fcstd-adversarial-input-F" + ], + "capability": "fcstd-adversarial-input", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "IO-fcstd-adversarial-input-H", + "title": "Replay in a real browser: Corrupt ZIP, traversal, compression limit and cancellation", + "status": "pending", + "dependencies": [ + "IO-fcstd-adversarial-input-G" + ], + "capability": "fcstd-adversarial-input", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "IO-fcstd-adversarial-input-I", + "title": "Promote capability and synchronize blockers: Corrupt ZIP, traversal, compression limit and cancellation", + "status": "pending", + "dependencies": [ + "IO-fcstd-adversarial-input-H" + ], + "capability": "fcstd-adversarial-input", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "IO-step-A", + "title": "Lock native inventory and preconditions: STEP units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-fcstd-adversarial-input-I" + ], + "capability": "step", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "IO-step-B", + "title": "Capture native success evidence: STEP units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-step-A" + ], + "capability": "step", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "IO-step-C", + "title": "Capture native failure and cancel evidence: STEP units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-step-B" + ], + "capability": "step", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "IO-step-D", + "title": "Capture parameter mutation and restore evidence: STEP units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-step-C" + ], + "capability": "step", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "IO-step-E", + "title": "Implement the Facade capability: STEP units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-step-D" + ], + "capability": "step", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "IO-step-F", + "title": "Close transaction and recovery behavior: STEP units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-step-E" + ], + "capability": "step", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "IO-step-G", + "title": "Close FCStd save, reopen and resave: STEP units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-step-F" + ], + "capability": "step", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "IO-step-H", + "title": "Replay in a real browser: STEP units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-step-G" + ], + "capability": "step", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "IO-step-I", + "title": "Promote capability and synchronize blockers: STEP units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-step-H" + ], + "capability": "step", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "IO-iges-A", + "title": "Lock native inventory and preconditions: IGES units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-step-I" + ], + "capability": "iges", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "IO-iges-B", + "title": "Capture native success evidence: IGES units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-iges-A" + ], + "capability": "iges", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "IO-iges-C", + "title": "Capture native failure and cancel evidence: IGES units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-iges-B" + ], + "capability": "iges", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "IO-iges-D", + "title": "Capture parameter mutation and restore evidence: IGES units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-iges-C" + ], + "capability": "iges", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "IO-iges-E", + "title": "Implement the Facade capability: IGES units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-iges-D" + ], + "capability": "iges", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "IO-iges-F", + "title": "Close transaction and recovery behavior: IGES units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-iges-E" + ], + "capability": "iges", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "IO-iges-G", + "title": "Close FCStd save, reopen and resave: IGES units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-iges-F" + ], + "capability": "iges", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "IO-iges-H", + "title": "Replay in a real browser: IGES units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-iges-G" + ], + "capability": "iges", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "IO-iges-I", + "title": "Promote capability and synchronize blockers: IGES units, colors, layers, names, assemblies and metadata", + "status": "pending", + "dependencies": [ + "IO-iges-H" + ], + "capability": "iges", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "IO-brep-A", + "title": "Lock native inventory and preconditions: BREP tolerance, topology and editable round-trip", + "status": "pending", + "dependencies": [ + "IO-iges-I" + ], + "capability": "brep", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "IO-brep-B", + "title": "Capture native success evidence: BREP tolerance, topology and editable round-trip", + "status": "pending", + "dependencies": [ + "IO-brep-A" + ], + "capability": "brep", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "IO-brep-C", + "title": "Capture native failure and cancel evidence: BREP tolerance, topology and editable round-trip", + "status": "pending", + "dependencies": [ + "IO-brep-B" + ], + "capability": "brep", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "IO-brep-D", + "title": "Capture parameter mutation and restore evidence: BREP tolerance, topology and editable round-trip", + "status": "pending", + "dependencies": [ + "IO-brep-C" + ], + "capability": "brep", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "IO-brep-E", + "title": "Implement the Facade capability: BREP tolerance, topology and editable round-trip", + "status": "pending", + "dependencies": [ + "IO-brep-D" + ], + "capability": "brep", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "IO-brep-F", + "title": "Close transaction and recovery behavior: BREP tolerance, topology and editable round-trip", + "status": "pending", + "dependencies": [ + "IO-brep-E" + ], + "capability": "brep", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "IO-brep-G", + "title": "Close FCStd save, reopen and resave: BREP tolerance, topology and editable round-trip", + "status": "pending", + "dependencies": [ + "IO-brep-F" + ], + "capability": "brep", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "IO-brep-H", + "title": "Replay in a real browser: BREP tolerance, topology and editable round-trip", + "status": "pending", + "dependencies": [ + "IO-brep-G" + ], + "capability": "brep", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "IO-brep-I", + "title": "Promote capability and synchronize blockers: BREP tolerance, topology and editable round-trip", + "status": "pending", + "dependencies": [ + "IO-brep-H" + ], + "capability": "brep", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + } + ] + }, + { + "id": "GUI-CLOSURE", + "title": "Close full GUI behavior", + "exactTasks": [ + "EX-UI-01", + "EX-UI-02", + "EX-UI-03", + "EX-UI-04", + "EX-UI-05" + ], + "status": "pending", + "tasks": [ + { + "id": "GUI-application-shell-A", + "title": "Lock native inventory and preconditions: application shell", + "status": "pending", + "dependencies": [ + "IO-brep-I" + ], + "capability": "application-shell", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-application-shell-B", + "title": "Capture native success evidence: application shell", + "status": "pending", + "dependencies": [ + "GUI-application-shell-A" + ], + "capability": "application-shell", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-application-shell-C", + "title": "Capture native failure and cancel evidence: application shell", + "status": "pending", + "dependencies": [ + "GUI-application-shell-B" + ], + "capability": "application-shell", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-application-shell-D", + "title": "Capture parameter mutation and restore evidence: application shell", + "status": "pending", + "dependencies": [ + "GUI-application-shell-C" + ], + "capability": "application-shell", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-application-shell-E", + "title": "Implement the Facade capability: application shell", + "status": "pending", + "dependencies": [ + "GUI-application-shell-D" + ], + "capability": "application-shell", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-application-shell-F", + "title": "Close transaction and recovery behavior: application shell", + "status": "pending", + "dependencies": [ + "GUI-application-shell-E" + ], + "capability": "application-shell", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-application-shell-G", + "title": "Close FCStd save, reopen and resave: application shell", + "status": "pending", + "dependencies": [ + "GUI-application-shell-F" + ], + "capability": "application-shell", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-application-shell-H", + "title": "Replay in a real browser: application shell", + "status": "pending", + "dependencies": [ + "GUI-application-shell-G" + ], + "capability": "application-shell", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-application-shell-I", + "title": "Promote capability and synchronize blockers: application shell", + "status": "pending", + "dependencies": [ + "GUI-application-shell-H" + ], + "capability": "application-shell", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-menus-A", + "title": "Lock native inventory and preconditions: menus", + "status": "pending", + "dependencies": [ + "GUI-application-shell-I" + ], + "capability": "menus", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-menus-B", + "title": "Capture native success evidence: menus", + "status": "pending", + "dependencies": [ + "GUI-menus-A" + ], + "capability": "menus", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-menus-C", + "title": "Capture native failure and cancel evidence: menus", + "status": "pending", + "dependencies": [ + "GUI-menus-B" + ], + "capability": "menus", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-menus-D", + "title": "Capture parameter mutation and restore evidence: menus", + "status": "pending", + "dependencies": [ + "GUI-menus-C" + ], + "capability": "menus", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-menus-E", + "title": "Implement the Facade capability: menus", + "status": "pending", + "dependencies": [ + "GUI-menus-D" + ], + "capability": "menus", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-menus-F", + "title": "Close transaction and recovery behavior: menus", + "status": "pending", + "dependencies": [ + "GUI-menus-E" + ], + "capability": "menus", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-menus-G", + "title": "Close FCStd save, reopen and resave: menus", + "status": "pending", + "dependencies": [ + "GUI-menus-F" + ], + "capability": "menus", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-menus-H", + "title": "Replay in a real browser: menus", + "status": "pending", + "dependencies": [ + "GUI-menus-G" + ], + "capability": "menus", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-menus-I", + "title": "Promote capability and synchronize blockers: menus", + "status": "pending", + "dependencies": [ + "GUI-menus-H" + ], + "capability": "menus", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-toolbars-A", + "title": "Lock native inventory and preconditions: toolbars", + "status": "pending", + "dependencies": [ + "GUI-menus-I" + ], + "capability": "toolbars", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-toolbars-B", + "title": "Capture native success evidence: toolbars", + "status": "pending", + "dependencies": [ + "GUI-toolbars-A" + ], + "capability": "toolbars", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-toolbars-C", + "title": "Capture native failure and cancel evidence: toolbars", + "status": "pending", + "dependencies": [ + "GUI-toolbars-B" + ], + "capability": "toolbars", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-toolbars-D", + "title": "Capture parameter mutation and restore evidence: toolbars", + "status": "pending", + "dependencies": [ + "GUI-toolbars-C" + ], + "capability": "toolbars", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-toolbars-E", + "title": "Implement the Facade capability: toolbars", + "status": "pending", + "dependencies": [ + "GUI-toolbars-D" + ], + "capability": "toolbars", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-toolbars-F", + "title": "Close transaction and recovery behavior: toolbars", + "status": "pending", + "dependencies": [ + "GUI-toolbars-E" + ], + "capability": "toolbars", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-toolbars-G", + "title": "Close FCStd save, reopen and resave: toolbars", + "status": "pending", + "dependencies": [ + "GUI-toolbars-F" + ], + "capability": "toolbars", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-toolbars-H", + "title": "Replay in a real browser: toolbars", + "status": "pending", + "dependencies": [ + "GUI-toolbars-G" + ], + "capability": "toolbars", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-toolbars-I", + "title": "Promote capability and synchronize blockers: toolbars", + "status": "pending", + "dependencies": [ + "GUI-toolbars-H" + ], + "capability": "toolbars", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-workbench-switching-A", + "title": "Lock native inventory and preconditions: workbench switching", + "status": "pending", + "dependencies": [ + "GUI-toolbars-I" + ], + "capability": "workbench-switching", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-workbench-switching-B", + "title": "Capture native success evidence: workbench switching", + "status": "pending", + "dependencies": [ + "GUI-workbench-switching-A" + ], + "capability": "workbench-switching", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-workbench-switching-C", + "title": "Capture native failure and cancel evidence: workbench switching", + "status": "pending", + "dependencies": [ + "GUI-workbench-switching-B" + ], + "capability": "workbench-switching", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-workbench-switching-D", + "title": "Capture parameter mutation and restore evidence: workbench switching", + "status": "pending", + "dependencies": [ + "GUI-workbench-switching-C" + ], + "capability": "workbench-switching", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-workbench-switching-E", + "title": "Implement the Facade capability: workbench switching", + "status": "pending", + "dependencies": [ + "GUI-workbench-switching-D" + ], + "capability": "workbench-switching", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-workbench-switching-F", + "title": "Close transaction and recovery behavior: workbench switching", + "status": "pending", + "dependencies": [ + "GUI-workbench-switching-E" + ], + "capability": "workbench-switching", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-workbench-switching-G", + "title": "Close FCStd save, reopen and resave: workbench switching", + "status": "pending", + "dependencies": [ + "GUI-workbench-switching-F" + ], + "capability": "workbench-switching", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-workbench-switching-H", + "title": "Replay in a real browser: workbench switching", + "status": "pending", + "dependencies": [ + "GUI-workbench-switching-G" + ], + "capability": "workbench-switching", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-workbench-switching-I", + "title": "Promote capability and synchronize blockers: workbench switching", + "status": "pending", + "dependencies": [ + "GUI-workbench-switching-H" + ], + "capability": "workbench-switching", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-mdi-A", + "title": "Lock native inventory and preconditions: mdi", + "status": "pending", + "dependencies": [ + "GUI-workbench-switching-I" + ], + "capability": "mdi", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-mdi-B", + "title": "Capture native success evidence: mdi", + "status": "pending", + "dependencies": [ + "GUI-mdi-A" + ], + "capability": "mdi", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-mdi-C", + "title": "Capture native failure and cancel evidence: mdi", + "status": "pending", + "dependencies": [ + "GUI-mdi-B" + ], + "capability": "mdi", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-mdi-D", + "title": "Capture parameter mutation and restore evidence: mdi", + "status": "pending", + "dependencies": [ + "GUI-mdi-C" + ], + "capability": "mdi", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-mdi-E", + "title": "Implement the Facade capability: mdi", + "status": "pending", + "dependencies": [ + "GUI-mdi-D" + ], + "capability": "mdi", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-mdi-F", + "title": "Close transaction and recovery behavior: mdi", + "status": "pending", + "dependencies": [ + "GUI-mdi-E" + ], + "capability": "mdi", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-mdi-G", + "title": "Close FCStd save, reopen and resave: mdi", + "status": "pending", + "dependencies": [ + "GUI-mdi-F" + ], + "capability": "mdi", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-mdi-H", + "title": "Replay in a real browser: mdi", + "status": "pending", + "dependencies": [ + "GUI-mdi-G" + ], + "capability": "mdi", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-mdi-I", + "title": "Promote capability and synchronize blockers: mdi", + "status": "pending", + "dependencies": [ + "GUI-mdi-H" + ], + "capability": "mdi", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-combo-view-A", + "title": "Lock native inventory and preconditions: combo view", + "status": "pending", + "dependencies": [ + "GUI-mdi-I" + ], + "capability": "combo-view", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-combo-view-B", + "title": "Capture native success evidence: combo view", + "status": "pending", + "dependencies": [ + "GUI-combo-view-A" + ], + "capability": "combo-view", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-combo-view-C", + "title": "Capture native failure and cancel evidence: combo view", + "status": "pending", + "dependencies": [ + "GUI-combo-view-B" + ], + "capability": "combo-view", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-combo-view-D", + "title": "Capture parameter mutation and restore evidence: combo view", + "status": "pending", + "dependencies": [ + "GUI-combo-view-C" + ], + "capability": "combo-view", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-combo-view-E", + "title": "Implement the Facade capability: combo view", + "status": "pending", + "dependencies": [ + "GUI-combo-view-D" + ], + "capability": "combo-view", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-combo-view-F", + "title": "Close transaction and recovery behavior: combo view", + "status": "pending", + "dependencies": [ + "GUI-combo-view-E" + ], + "capability": "combo-view", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-combo-view-G", + "title": "Close FCStd save, reopen and resave: combo view", + "status": "pending", + "dependencies": [ + "GUI-combo-view-F" + ], + "capability": "combo-view", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-combo-view-H", + "title": "Replay in a real browser: combo view", + "status": "pending", + "dependencies": [ + "GUI-combo-view-G" + ], + "capability": "combo-view", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-combo-view-I", + "title": "Promote capability and synchronize blockers: combo view", + "status": "pending", + "dependencies": [ + "GUI-combo-view-H" + ], + "capability": "combo-view", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-model-tree-A", + "title": "Lock native inventory and preconditions: model tree", + "status": "pending", + "dependencies": [ + "GUI-combo-view-I" + ], + "capability": "model-tree", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-model-tree-B", + "title": "Capture native success evidence: model tree", + "status": "pending", + "dependencies": [ + "GUI-model-tree-A" + ], + "capability": "model-tree", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-model-tree-C", + "title": "Capture native failure and cancel evidence: model tree", + "status": "pending", + "dependencies": [ + "GUI-model-tree-B" + ], + "capability": "model-tree", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-model-tree-D", + "title": "Capture parameter mutation and restore evidence: model tree", + "status": "pending", + "dependencies": [ + "GUI-model-tree-C" + ], + "capability": "model-tree", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-model-tree-E", + "title": "Implement the Facade capability: model tree", + "status": "pending", + "dependencies": [ + "GUI-model-tree-D" + ], + "capability": "model-tree", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-model-tree-F", + "title": "Close transaction and recovery behavior: model tree", + "status": "pending", + "dependencies": [ + "GUI-model-tree-E" + ], + "capability": "model-tree", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-model-tree-G", + "title": "Close FCStd save, reopen and resave: model tree", + "status": "pending", + "dependencies": [ + "GUI-model-tree-F" + ], + "capability": "model-tree", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-model-tree-H", + "title": "Replay in a real browser: model tree", + "status": "pending", + "dependencies": [ + "GUI-model-tree-G" + ], + "capability": "model-tree", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-model-tree-I", + "title": "Promote capability and synchronize blockers: model tree", + "status": "pending", + "dependencies": [ + "GUI-model-tree-H" + ], + "capability": "model-tree", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-task-panels-A", + "title": "Lock native inventory and preconditions: task panels", + "status": "pending", + "dependencies": [ + "GUI-model-tree-I" + ], + "capability": "task-panels", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-task-panels-B", + "title": "Capture native success evidence: task panels", + "status": "pending", + "dependencies": [ + "GUI-task-panels-A" + ], + "capability": "task-panels", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-task-panels-C", + "title": "Capture native failure and cancel evidence: task panels", + "status": "pending", + "dependencies": [ + "GUI-task-panels-B" + ], + "capability": "task-panels", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-task-panels-D", + "title": "Capture parameter mutation and restore evidence: task panels", + "status": "pending", + "dependencies": [ + "GUI-task-panels-C" + ], + "capability": "task-panels", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-task-panels-E", + "title": "Implement the Facade capability: task panels", + "status": "pending", + "dependencies": [ + "GUI-task-panels-D" + ], + "capability": "task-panels", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-task-panels-F", + "title": "Close transaction and recovery behavior: task panels", + "status": "pending", + "dependencies": [ + "GUI-task-panels-E" + ], + "capability": "task-panels", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-task-panels-G", + "title": "Close FCStd save, reopen and resave: task panels", + "status": "pending", + "dependencies": [ + "GUI-task-panels-F" + ], + "capability": "task-panels", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-task-panels-H", + "title": "Replay in a real browser: task panels", + "status": "pending", + "dependencies": [ + "GUI-task-panels-G" + ], + "capability": "task-panels", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-task-panels-I", + "title": "Promote capability and synchronize blockers: task panels", + "status": "pending", + "dependencies": [ + "GUI-task-panels-H" + ], + "capability": "task-panels", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-data-view-editors-A", + "title": "Lock native inventory and preconditions: data view editors", + "status": "pending", + "dependencies": [ + "GUI-task-panels-I" + ], + "capability": "data-view-editors", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-data-view-editors-B", + "title": "Capture native success evidence: data view editors", + "status": "pending", + "dependencies": [ + "GUI-data-view-editors-A" + ], + "capability": "data-view-editors", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-data-view-editors-C", + "title": "Capture native failure and cancel evidence: data view editors", + "status": "pending", + "dependencies": [ + "GUI-data-view-editors-B" + ], + "capability": "data-view-editors", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-data-view-editors-D", + "title": "Capture parameter mutation and restore evidence: data view editors", + "status": "pending", + "dependencies": [ + "GUI-data-view-editors-C" + ], + "capability": "data-view-editors", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-data-view-editors-E", + "title": "Implement the Facade capability: data view editors", + "status": "pending", + "dependencies": [ + "GUI-data-view-editors-D" + ], + "capability": "data-view-editors", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-data-view-editors-F", + "title": "Close transaction and recovery behavior: data view editors", + "status": "pending", + "dependencies": [ + "GUI-data-view-editors-E" + ], + "capability": "data-view-editors", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-data-view-editors-G", + "title": "Close FCStd save, reopen and resave: data view editors", + "status": "pending", + "dependencies": [ + "GUI-data-view-editors-F" + ], + "capability": "data-view-editors", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-data-view-editors-H", + "title": "Replay in a real browser: data view editors", + "status": "pending", + "dependencies": [ + "GUI-data-view-editors-G" + ], + "capability": "data-view-editors", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-data-view-editors-I", + "title": "Promote capability and synchronize blockers: data view editors", + "status": "pending", + "dependencies": [ + "GUI-data-view-editors-H" + ], + "capability": "data-view-editors", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-dialogs-A", + "title": "Lock native inventory and preconditions: dialogs", + "status": "pending", + "dependencies": [ + "GUI-data-view-editors-I" + ], + "capability": "dialogs", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-dialogs-B", + "title": "Capture native success evidence: dialogs", + "status": "pending", + "dependencies": [ + "GUI-dialogs-A" + ], + "capability": "dialogs", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-dialogs-C", + "title": "Capture native failure and cancel evidence: dialogs", + "status": "pending", + "dependencies": [ + "GUI-dialogs-B" + ], + "capability": "dialogs", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-dialogs-D", + "title": "Capture parameter mutation and restore evidence: dialogs", + "status": "pending", + "dependencies": [ + "GUI-dialogs-C" + ], + "capability": "dialogs", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-dialogs-E", + "title": "Implement the Facade capability: dialogs", + "status": "pending", + "dependencies": [ + "GUI-dialogs-D" + ], + "capability": "dialogs", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-dialogs-F", + "title": "Close transaction and recovery behavior: dialogs", + "status": "pending", + "dependencies": [ + "GUI-dialogs-E" + ], + "capability": "dialogs", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-dialogs-G", + "title": "Close FCStd save, reopen and resave: dialogs", + "status": "pending", + "dependencies": [ + "GUI-dialogs-F" + ], + "capability": "dialogs", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-dialogs-H", + "title": "Replay in a real browser: dialogs", + "status": "pending", + "dependencies": [ + "GUI-dialogs-G" + ], + "capability": "dialogs", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-dialogs-I", + "title": "Promote capability and synchronize blockers: dialogs", + "status": "pending", + "dependencies": [ + "GUI-dialogs-H" + ], + "capability": "dialogs", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-shortcuts-A", + "title": "Lock native inventory and preconditions: shortcuts", + "status": "pending", + "dependencies": [ + "GUI-dialogs-I" + ], + "capability": "shortcuts", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-shortcuts-B", + "title": "Capture native success evidence: shortcuts", + "status": "pending", + "dependencies": [ + "GUI-shortcuts-A" + ], + "capability": "shortcuts", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-shortcuts-C", + "title": "Capture native failure and cancel evidence: shortcuts", + "status": "pending", + "dependencies": [ + "GUI-shortcuts-B" + ], + "capability": "shortcuts", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-shortcuts-D", + "title": "Capture parameter mutation and restore evidence: shortcuts", + "status": "pending", + "dependencies": [ + "GUI-shortcuts-C" + ], + "capability": "shortcuts", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-shortcuts-E", + "title": "Implement the Facade capability: shortcuts", + "status": "pending", + "dependencies": [ + "GUI-shortcuts-D" + ], + "capability": "shortcuts", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-shortcuts-F", + "title": "Close transaction and recovery behavior: shortcuts", + "status": "pending", + "dependencies": [ + "GUI-shortcuts-E" + ], + "capability": "shortcuts", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-shortcuts-G", + "title": "Close FCStd save, reopen and resave: shortcuts", + "status": "pending", + "dependencies": [ + "GUI-shortcuts-F" + ], + "capability": "shortcuts", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-shortcuts-H", + "title": "Replay in a real browser: shortcuts", + "status": "pending", + "dependencies": [ + "GUI-shortcuts-G" + ], + "capability": "shortcuts", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-shortcuts-I", + "title": "Promote capability and synchronize blockers: shortcuts", + "status": "pending", + "dependencies": [ + "GUI-shortcuts-H" + ], + "capability": "shortcuts", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-context-menus-A", + "title": "Lock native inventory and preconditions: context menus", + "status": "pending", + "dependencies": [ + "GUI-shortcuts-I" + ], + "capability": "context-menus", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-context-menus-B", + "title": "Capture native success evidence: context menus", + "status": "pending", + "dependencies": [ + "GUI-context-menus-A" + ], + "capability": "context-menus", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-context-menus-C", + "title": "Capture native failure and cancel evidence: context menus", + "status": "pending", + "dependencies": [ + "GUI-context-menus-B" + ], + "capability": "context-menus", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-context-menus-D", + "title": "Capture parameter mutation and restore evidence: context menus", + "status": "pending", + "dependencies": [ + "GUI-context-menus-C" + ], + "capability": "context-menus", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-context-menus-E", + "title": "Implement the Facade capability: context menus", + "status": "pending", + "dependencies": [ + "GUI-context-menus-D" + ], + "capability": "context-menus", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-context-menus-F", + "title": "Close transaction and recovery behavior: context menus", + "status": "pending", + "dependencies": [ + "GUI-context-menus-E" + ], + "capability": "context-menus", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-context-menus-G", + "title": "Close FCStd save, reopen and resave: context menus", + "status": "pending", + "dependencies": [ + "GUI-context-menus-F" + ], + "capability": "context-menus", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-context-menus-H", + "title": "Replay in a real browser: context menus", + "status": "pending", + "dependencies": [ + "GUI-context-menus-G" + ], + "capability": "context-menus", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-context-menus-I", + "title": "Promote capability and synchronize blockers: context menus", + "status": "pending", + "dependencies": [ + "GUI-context-menus-H" + ], + "capability": "context-menus", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-status-report-jobs-A", + "title": "Lock native inventory and preconditions: status report jobs", + "status": "pending", + "dependencies": [ + "GUI-context-menus-I" + ], + "capability": "status-report-jobs", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-status-report-jobs-B", + "title": "Capture native success evidence: status report jobs", + "status": "pending", + "dependencies": [ + "GUI-status-report-jobs-A" + ], + "capability": "status-report-jobs", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-status-report-jobs-C", + "title": "Capture native failure and cancel evidence: status report jobs", + "status": "pending", + "dependencies": [ + "GUI-status-report-jobs-B" + ], + "capability": "status-report-jobs", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-status-report-jobs-D", + "title": "Capture parameter mutation and restore evidence: status report jobs", + "status": "pending", + "dependencies": [ + "GUI-status-report-jobs-C" + ], + "capability": "status-report-jobs", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-status-report-jobs-E", + "title": "Implement the Facade capability: status report jobs", + "status": "pending", + "dependencies": [ + "GUI-status-report-jobs-D" + ], + "capability": "status-report-jobs", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-status-report-jobs-F", + "title": "Close transaction and recovery behavior: status report jobs", + "status": "pending", + "dependencies": [ + "GUI-status-report-jobs-E" + ], + "capability": "status-report-jobs", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-status-report-jobs-G", + "title": "Close FCStd save, reopen and resave: status report jobs", + "status": "pending", + "dependencies": [ + "GUI-status-report-jobs-F" + ], + "capability": "status-report-jobs", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-status-report-jobs-H", + "title": "Replay in a real browser: status report jobs", + "status": "pending", + "dependencies": [ + "GUI-status-report-jobs-G" + ], + "capability": "status-report-jobs", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-status-report-jobs-I", + "title": "Promote capability and synchronize blockers: status report jobs", + "status": "pending", + "dependencies": [ + "GUI-status-report-jobs-H" + ], + "capability": "status-report-jobs", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-3d-selection-A", + "title": "Lock native inventory and preconditions: 3d selection", + "status": "pending", + "dependencies": [ + "GUI-status-report-jobs-I" + ], + "capability": "3d-selection", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-3d-selection-B", + "title": "Capture native success evidence: 3d selection", + "status": "pending", + "dependencies": [ + "GUI-3d-selection-A" + ], + "capability": "3d-selection", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-3d-selection-C", + "title": "Capture native failure and cancel evidence: 3d selection", + "status": "pending", + "dependencies": [ + "GUI-3d-selection-B" + ], + "capability": "3d-selection", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-3d-selection-D", + "title": "Capture parameter mutation and restore evidence: 3d selection", + "status": "pending", + "dependencies": [ + "GUI-3d-selection-C" + ], + "capability": "3d-selection", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-3d-selection-E", + "title": "Implement the Facade capability: 3d selection", + "status": "pending", + "dependencies": [ + "GUI-3d-selection-D" + ], + "capability": "3d-selection", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-3d-selection-F", + "title": "Close transaction and recovery behavior: 3d selection", + "status": "pending", + "dependencies": [ + "GUI-3d-selection-E" + ], + "capability": "3d-selection", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-3d-selection-G", + "title": "Close FCStd save, reopen and resave: 3d selection", + "status": "pending", + "dependencies": [ + "GUI-3d-selection-F" + ], + "capability": "3d-selection", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-3d-selection-H", + "title": "Replay in a real browser: 3d selection", + "status": "pending", + "dependencies": [ + "GUI-3d-selection-G" + ], + "capability": "3d-selection", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-3d-selection-I", + "title": "Promote capability and synchronize blockers: 3d selection", + "status": "pending", + "dependencies": [ + "GUI-3d-selection-H" + ], + "capability": "3d-selection", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "GUI-responsive-accessibility-A", + "title": "Lock native inventory and preconditions: responsive accessibility", + "status": "pending", + "dependencies": [ + "GUI-3d-selection-I" + ], + "capability": "responsive-accessibility", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "GUI-responsive-accessibility-B", + "title": "Capture native success evidence: responsive accessibility", + "status": "pending", + "dependencies": [ + "GUI-responsive-accessibility-A" + ], + "capability": "responsive-accessibility", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "GUI-responsive-accessibility-C", + "title": "Capture native failure and cancel evidence: responsive accessibility", + "status": "pending", + "dependencies": [ + "GUI-responsive-accessibility-B" + ], + "capability": "responsive-accessibility", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "GUI-responsive-accessibility-D", + "title": "Capture parameter mutation and restore evidence: responsive accessibility", + "status": "pending", + "dependencies": [ + "GUI-responsive-accessibility-C" + ], + "capability": "responsive-accessibility", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "GUI-responsive-accessibility-E", + "title": "Implement the Facade capability: responsive accessibility", + "status": "pending", + "dependencies": [ + "GUI-responsive-accessibility-D" + ], + "capability": "responsive-accessibility", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "GUI-responsive-accessibility-F", + "title": "Close transaction and recovery behavior: responsive accessibility", + "status": "pending", + "dependencies": [ + "GUI-responsive-accessibility-E" + ], + "capability": "responsive-accessibility", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "GUI-responsive-accessibility-G", + "title": "Close FCStd save, reopen and resave: responsive accessibility", + "status": "pending", + "dependencies": [ + "GUI-responsive-accessibility-F" + ], + "capability": "responsive-accessibility", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "GUI-responsive-accessibility-H", + "title": "Replay in a real browser: responsive accessibility", + "status": "pending", + "dependencies": [ + "GUI-responsive-accessibility-G" + ], + "capability": "responsive-accessibility", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "GUI-responsive-accessibility-I", + "title": "Promote capability and synchronize blockers: responsive accessibility", + "status": "pending", + "dependencies": [ + "GUI-responsive-accessibility-H" + ], + "capability": "responsive-accessibility", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + } + ] + }, + { + "id": "DOCUMENT-ENGINEERING-WORKBENCHES", + "title": "Close document and engineering workbenches", + "exactTasks": [ + "EX-DOCWB-01", + "EX-ASM-01", + "EX-BIM-01", + "EX-SURF-01", + "EX-MESH-01", + "EX-MAT-01" + ], + "status": "pending", + "tasks": [ + { + "id": "WB-draft-A", + "title": "Lock native inventory and preconditions: draft", + "status": "pending", + "dependencies": [ + "GUI-responsive-accessibility-I" + ], + "capability": "draft", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "WB-draft-B", + "title": "Capture native success evidence: draft", + "status": "pending", + "dependencies": [ + "WB-draft-A" + ], + "capability": "draft", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "WB-draft-C", + "title": "Capture native failure and cancel evidence: draft", + "status": "pending", + "dependencies": [ + "WB-draft-B" + ], + "capability": "draft", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "WB-draft-D", + "title": "Capture parameter mutation and restore evidence: draft", + "status": "pending", + "dependencies": [ + "WB-draft-C" + ], + "capability": "draft", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "WB-draft-E", + "title": "Implement the Facade capability: draft", + "status": "pending", + "dependencies": [ + "WB-draft-D" + ], + "capability": "draft", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "WB-draft-F", + "title": "Close transaction and recovery behavior: draft", + "status": "pending", + "dependencies": [ + "WB-draft-E" + ], + "capability": "draft", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "WB-draft-G", + "title": "Close FCStd save, reopen and resave: draft", + "status": "pending", + "dependencies": [ + "WB-draft-F" + ], + "capability": "draft", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "WB-draft-H", + "title": "Replay in a real browser: draft", + "status": "pending", + "dependencies": [ + "WB-draft-G" + ], + "capability": "draft", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "WB-draft-I", + "title": "Promote capability and synchronize blockers: draft", + "status": "pending", + "dependencies": [ + "WB-draft-H" + ], + "capability": "draft", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "WB-spreadsheet-A", + "title": "Lock native inventory and preconditions: spreadsheet", + "status": "pending", + "dependencies": [ + "WB-draft-I" + ], + "capability": "spreadsheet", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "WB-spreadsheet-B", + "title": "Capture native success evidence: spreadsheet", + "status": "pending", + "dependencies": [ + "WB-spreadsheet-A" + ], + "capability": "spreadsheet", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "WB-spreadsheet-C", + "title": "Capture native failure and cancel evidence: spreadsheet", + "status": "pending", + "dependencies": [ + "WB-spreadsheet-B" + ], + "capability": "spreadsheet", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "WB-spreadsheet-D", + "title": "Capture parameter mutation and restore evidence: spreadsheet", + "status": "pending", + "dependencies": [ + "WB-spreadsheet-C" + ], + "capability": "spreadsheet", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "WB-spreadsheet-E", + "title": "Implement the Facade capability: spreadsheet", + "status": "pending", + "dependencies": [ + "WB-spreadsheet-D" + ], + "capability": "spreadsheet", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "WB-spreadsheet-F", + "title": "Close transaction and recovery behavior: spreadsheet", + "status": "pending", + "dependencies": [ + "WB-spreadsheet-E" + ], + "capability": "spreadsheet", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "WB-spreadsheet-G", + "title": "Close FCStd save, reopen and resave: spreadsheet", + "status": "pending", + "dependencies": [ + "WB-spreadsheet-F" + ], + "capability": "spreadsheet", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "WB-spreadsheet-H", + "title": "Replay in a real browser: spreadsheet", + "status": "pending", + "dependencies": [ + "WB-spreadsheet-G" + ], + "capability": "spreadsheet", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "WB-spreadsheet-I", + "title": "Promote capability and synchronize blockers: spreadsheet", + "status": "pending", + "dependencies": [ + "WB-spreadsheet-H" + ], + "capability": "spreadsheet", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "WB-techdraw-A", + "title": "Lock native inventory and preconditions: techdraw", + "status": "pending", + "dependencies": [ + "WB-spreadsheet-I" + ], + "capability": "techdraw", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "WB-techdraw-B", + "title": "Capture native success evidence: techdraw", + "status": "pending", + "dependencies": [ + "WB-techdraw-A" + ], + "capability": "techdraw", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "WB-techdraw-C", + "title": "Capture native failure and cancel evidence: techdraw", + "status": "pending", + "dependencies": [ + "WB-techdraw-B" + ], + "capability": "techdraw", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "WB-techdraw-D", + "title": "Capture parameter mutation and restore evidence: techdraw", + "status": "pending", + "dependencies": [ + "WB-techdraw-C" + ], + "capability": "techdraw", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "WB-techdraw-E", + "title": "Implement the Facade capability: techdraw", + "status": "pending", + "dependencies": [ + "WB-techdraw-D" + ], + "capability": "techdraw", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "WB-techdraw-F", + "title": "Close transaction and recovery behavior: techdraw", + "status": "pending", + "dependencies": [ + "WB-techdraw-E" + ], + "capability": "techdraw", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "WB-techdraw-G", + "title": "Close FCStd save, reopen and resave: techdraw", + "status": "pending", + "dependencies": [ + "WB-techdraw-F" + ], + "capability": "techdraw", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "WB-techdraw-H", + "title": "Replay in a real browser: techdraw", + "status": "pending", + "dependencies": [ + "WB-techdraw-G" + ], + "capability": "techdraw", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "WB-techdraw-I", + "title": "Promote capability and synchronize blockers: techdraw", + "status": "pending", + "dependencies": [ + "WB-techdraw-H" + ], + "capability": "techdraw", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "WB-plot-A", + "title": "Lock native inventory and preconditions: plot", + "status": "pending", + "dependencies": [ + "WB-techdraw-I" + ], + "capability": "plot", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "WB-plot-B", + "title": "Capture native success evidence: plot", + "status": "pending", + "dependencies": [ + "WB-plot-A" + ], + "capability": "plot", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "WB-plot-C", + "title": "Capture native failure and cancel evidence: plot", + "status": "pending", + "dependencies": [ + "WB-plot-B" + ], + "capability": "plot", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "WB-plot-D", + "title": "Capture parameter mutation and restore evidence: plot", + "status": "pending", + "dependencies": [ + "WB-plot-C" + ], + "capability": "plot", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "WB-plot-E", + "title": "Implement the Facade capability: plot", + "status": "pending", + "dependencies": [ + "WB-plot-D" + ], + "capability": "plot", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "WB-plot-F", + "title": "Close transaction and recovery behavior: plot", + "status": "pending", + "dependencies": [ + "WB-plot-E" + ], + "capability": "plot", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "WB-plot-G", + "title": "Close FCStd save, reopen and resave: plot", + "status": "pending", + "dependencies": [ + "WB-plot-F" + ], + "capability": "plot", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "WB-plot-H", + "title": "Replay in a real browser: plot", + "status": "pending", + "dependencies": [ + "WB-plot-G" + ], + "capability": "plot", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "WB-plot-I", + "title": "Promote capability and synchronize blockers: plot", + "status": "pending", + "dependencies": [ + "WB-plot-H" + ], + "capability": "plot", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "WB-cross-workbench-document-A", + "title": "Lock native inventory and preconditions: cross workbench document", + "status": "pending", + "dependencies": [ + "WB-plot-I" + ], + "capability": "cross-workbench-document", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "WB-cross-workbench-document-B", + "title": "Capture native success evidence: cross workbench document", + "status": "pending", + "dependencies": [ + "WB-cross-workbench-document-A" + ], + "capability": "cross-workbench-document", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "WB-cross-workbench-document-C", + "title": "Capture native failure and cancel evidence: cross workbench document", + "status": "pending", + "dependencies": [ + "WB-cross-workbench-document-B" + ], + "capability": "cross-workbench-document", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "WB-cross-workbench-document-D", + "title": "Capture parameter mutation and restore evidence: cross workbench document", + "status": "pending", + "dependencies": [ + "WB-cross-workbench-document-C" + ], + "capability": "cross-workbench-document", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "WB-cross-workbench-document-E", + "title": "Implement the Facade capability: cross workbench document", + "status": "pending", + "dependencies": [ + "WB-cross-workbench-document-D" + ], + "capability": "cross-workbench-document", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "WB-cross-workbench-document-F", + "title": "Close transaction and recovery behavior: cross workbench document", + "status": "pending", + "dependencies": [ + "WB-cross-workbench-document-E" + ], + "capability": "cross-workbench-document", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "WB-cross-workbench-document-G", + "title": "Close FCStd save, reopen and resave: cross workbench document", + "status": "pending", + "dependencies": [ + "WB-cross-workbench-document-F" + ], + "capability": "cross-workbench-document", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "WB-cross-workbench-document-H", + "title": "Replay in a real browser: cross workbench document", + "status": "pending", + "dependencies": [ + "WB-cross-workbench-document-G" + ], + "capability": "cross-workbench-document", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "WB-cross-workbench-document-I", + "title": "Promote capability and synchronize blockers: cross workbench document", + "status": "pending", + "dependencies": [ + "WB-cross-workbench-document-H" + ], + "capability": "cross-workbench-document", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "WB-assembly-A", + "title": "Lock native inventory and preconditions: assembly", + "status": "pending", + "dependencies": [ + "WB-cross-workbench-document-I" + ], + "capability": "assembly", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "WB-assembly-B", + "title": "Capture native success evidence: assembly", + "status": "pending", + "dependencies": [ + "WB-assembly-A" + ], + "capability": "assembly", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "WB-assembly-C", + "title": "Capture native failure and cancel evidence: assembly", + "status": "pending", + "dependencies": [ + "WB-assembly-B" + ], + "capability": "assembly", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "WB-assembly-D", + "title": "Capture parameter mutation and restore evidence: assembly", + "status": "pending", + "dependencies": [ + "WB-assembly-C" + ], + "capability": "assembly", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "WB-assembly-E", + "title": "Implement the Facade capability: assembly", + "status": "pending", + "dependencies": [ + "WB-assembly-D" + ], + "capability": "assembly", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "WB-assembly-F", + "title": "Close transaction and recovery behavior: assembly", + "status": "pending", + "dependencies": [ + "WB-assembly-E" + ], + "capability": "assembly", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "WB-assembly-G", + "title": "Close FCStd save, reopen and resave: assembly", + "status": "pending", + "dependencies": [ + "WB-assembly-F" + ], + "capability": "assembly", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "WB-assembly-H", + "title": "Replay in a real browser: assembly", + "status": "pending", + "dependencies": [ + "WB-assembly-G" + ], + "capability": "assembly", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "WB-assembly-I", + "title": "Promote capability and synchronize blockers: assembly", + "status": "pending", + "dependencies": [ + "WB-assembly-H" + ], + "capability": "assembly", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "WB-bim-ifc-A", + "title": "Lock native inventory and preconditions: bim ifc", + "status": "pending", + "dependencies": [ + "WB-assembly-I" + ], + "capability": "bim-ifc", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "WB-bim-ifc-B", + "title": "Capture native success evidence: bim ifc", + "status": "pending", + "dependencies": [ + "WB-bim-ifc-A" + ], + "capability": "bim-ifc", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "WB-bim-ifc-C", + "title": "Capture native failure and cancel evidence: bim ifc", + "status": "pending", + "dependencies": [ + "WB-bim-ifc-B" + ], + "capability": "bim-ifc", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "WB-bim-ifc-D", + "title": "Capture parameter mutation and restore evidence: bim ifc", + "status": "pending", + "dependencies": [ + "WB-bim-ifc-C" + ], + "capability": "bim-ifc", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "WB-bim-ifc-E", + "title": "Implement the Facade capability: bim ifc", + "status": "pending", + "dependencies": [ + "WB-bim-ifc-D" + ], + "capability": "bim-ifc", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "WB-bim-ifc-F", + "title": "Close transaction and recovery behavior: bim ifc", + "status": "pending", + "dependencies": [ + "WB-bim-ifc-E" + ], + "capability": "bim-ifc", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "WB-bim-ifc-G", + "title": "Close FCStd save, reopen and resave: bim ifc", + "status": "pending", + "dependencies": [ + "WB-bim-ifc-F" + ], + "capability": "bim-ifc", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "WB-bim-ifc-H", + "title": "Replay in a real browser: bim ifc", + "status": "pending", + "dependencies": [ + "WB-bim-ifc-G" + ], + "capability": "bim-ifc", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "WB-bim-ifc-I", + "title": "Promote capability and synchronize blockers: bim ifc", + "status": "pending", + "dependencies": [ + "WB-bim-ifc-H" + ], + "capability": "bim-ifc", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "WB-surface-A", + "title": "Lock native inventory and preconditions: surface", + "status": "pending", + "dependencies": [ + "WB-bim-ifc-I" + ], + "capability": "surface", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "WB-surface-B", + "title": "Capture native success evidence: surface", + "status": "pending", + "dependencies": [ + "WB-surface-A" + ], + "capability": "surface", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "WB-surface-C", + "title": "Capture native failure and cancel evidence: surface", + "status": "pending", + "dependencies": [ + "WB-surface-B" + ], + "capability": "surface", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "WB-surface-D", + "title": "Capture parameter mutation and restore evidence: surface", + "status": "pending", + "dependencies": [ + "WB-surface-C" + ], + "capability": "surface", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "WB-surface-E", + "title": "Implement the Facade capability: surface", + "status": "pending", + "dependencies": [ + "WB-surface-D" + ], + "capability": "surface", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "WB-surface-F", + "title": "Close transaction and recovery behavior: surface", + "status": "pending", + "dependencies": [ + "WB-surface-E" + ], + "capability": "surface", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "WB-surface-G", + "title": "Close FCStd save, reopen and resave: surface", + "status": "pending", + "dependencies": [ + "WB-surface-F" + ], + "capability": "surface", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "WB-surface-H", + "title": "Replay in a real browser: surface", + "status": "pending", + "dependencies": [ + "WB-surface-G" + ], + "capability": "surface", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "WB-surface-I", + "title": "Promote capability and synchronize blockers: surface", + "status": "pending", + "dependencies": [ + "WB-surface-H" + ], + "capability": "surface", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "WB-mesh-meshpart-A", + "title": "Lock native inventory and preconditions: mesh meshpart", + "status": "pending", + "dependencies": [ + "WB-surface-I" + ], + "capability": "mesh-meshpart", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "WB-mesh-meshpart-B", + "title": "Capture native success evidence: mesh meshpart", + "status": "pending", + "dependencies": [ + "WB-mesh-meshpart-A" + ], + "capability": "mesh-meshpart", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "WB-mesh-meshpart-C", + "title": "Capture native failure and cancel evidence: mesh meshpart", + "status": "pending", + "dependencies": [ + "WB-mesh-meshpart-B" + ], + "capability": "mesh-meshpart", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "WB-mesh-meshpart-D", + "title": "Capture parameter mutation and restore evidence: mesh meshpart", + "status": "pending", + "dependencies": [ + "WB-mesh-meshpart-C" + ], + "capability": "mesh-meshpart", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "WB-mesh-meshpart-E", + "title": "Implement the Facade capability: mesh meshpart", + "status": "pending", + "dependencies": [ + "WB-mesh-meshpart-D" + ], + "capability": "mesh-meshpart", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "WB-mesh-meshpart-F", + "title": "Close transaction and recovery behavior: mesh meshpart", + "status": "pending", + "dependencies": [ + "WB-mesh-meshpart-E" + ], + "capability": "mesh-meshpart", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "WB-mesh-meshpart-G", + "title": "Close FCStd save, reopen and resave: mesh meshpart", + "status": "pending", + "dependencies": [ + "WB-mesh-meshpart-F" + ], + "capability": "mesh-meshpart", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "WB-mesh-meshpart-H", + "title": "Replay in a real browser: mesh meshpart", + "status": "pending", + "dependencies": [ + "WB-mesh-meshpart-G" + ], + "capability": "mesh-meshpart", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "WB-mesh-meshpart-I", + "title": "Promote capability and synchronize blockers: mesh meshpart", + "status": "pending", + "dependencies": [ + "WB-mesh-meshpart-H" + ], + "capability": "mesh-meshpart", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "WB-material-A", + "title": "Lock native inventory and preconditions: material", + "status": "pending", + "dependencies": [ + "WB-mesh-meshpart-I" + ], + "capability": "material", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "WB-material-B", + "title": "Capture native success evidence: material", + "status": "pending", + "dependencies": [ + "WB-material-A" + ], + "capability": "material", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "WB-material-C", + "title": "Capture native failure and cancel evidence: material", + "status": "pending", + "dependencies": [ + "WB-material-B" + ], + "capability": "material", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "WB-material-D", + "title": "Capture parameter mutation and restore evidence: material", + "status": "pending", + "dependencies": [ + "WB-material-C" + ], + "capability": "material", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "WB-material-E", + "title": "Implement the Facade capability: material", + "status": "pending", + "dependencies": [ + "WB-material-D" + ], + "capability": "material", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "WB-material-F", + "title": "Close transaction and recovery behavior: material", + "status": "pending", + "dependencies": [ + "WB-material-E" + ], + "capability": "material", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "WB-material-G", + "title": "Close FCStd save, reopen and resave: material", + "status": "pending", + "dependencies": [ + "WB-material-F" + ], + "capability": "material", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "WB-material-H", + "title": "Replay in a real browser: material", + "status": "pending", + "dependencies": [ + "WB-material-G" + ], + "capability": "material", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "WB-material-I", + "title": "Promote capability and synchronize blockers: material", + "status": "pending", + "dependencies": [ + "WB-material-H" + ], + "capability": "material", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + } + ] + }, + { + "id": "PLATFORM-SCRIPT-PROXY", + "title": "Close platform, scripting and proxy capabilities", + "exactTasks": [ + "EX-FEM-01", + "EX-CAM-01", + "EX-ROBOT-01", + "EX-DATA-01", + "EX-INSPECT-01", + "EX-SCRIPT-01", + "EX-ADDON-01", + "EX-PROXY-01", + "EX-PLATFORM-01" + ], + "status": "pending", + "tasks": [ + { + "id": "PLAT-fem-A", + "title": "Lock native inventory and preconditions: fem", + "status": "pending", + "dependencies": [ + "WB-material-I" + ], + "capability": "fem", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PLAT-fem-B", + "title": "Capture native success evidence: fem", + "status": "pending", + "dependencies": [ + "PLAT-fem-A" + ], + "capability": "fem", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PLAT-fem-C", + "title": "Capture native failure and cancel evidence: fem", + "status": "pending", + "dependencies": [ + "PLAT-fem-B" + ], + "capability": "fem", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PLAT-fem-D", + "title": "Capture parameter mutation and restore evidence: fem", + "status": "pending", + "dependencies": [ + "PLAT-fem-C" + ], + "capability": "fem", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PLAT-fem-E", + "title": "Implement the Facade capability: fem", + "status": "pending", + "dependencies": [ + "PLAT-fem-D" + ], + "capability": "fem", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PLAT-fem-F", + "title": "Close transaction and recovery behavior: fem", + "status": "pending", + "dependencies": [ + "PLAT-fem-E" + ], + "capability": "fem", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PLAT-fem-G", + "title": "Close FCStd save, reopen and resave: fem", + "status": "pending", + "dependencies": [ + "PLAT-fem-F" + ], + "capability": "fem", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PLAT-fem-H", + "title": "Replay in a real browser: fem", + "status": "pending", + "dependencies": [ + "PLAT-fem-G" + ], + "capability": "fem", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PLAT-fem-I", + "title": "Promote capability and synchronize blockers: fem", + "status": "pending", + "dependencies": [ + "PLAT-fem-H" + ], + "capability": "fem", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PLAT-cam-A", + "title": "Lock native inventory and preconditions: cam", + "status": "pending", + "dependencies": [ + "PLAT-fem-I" + ], + "capability": "cam", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PLAT-cam-B", + "title": "Capture native success evidence: cam", + "status": "pending", + "dependencies": [ + "PLAT-cam-A" + ], + "capability": "cam", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PLAT-cam-C", + "title": "Capture native failure and cancel evidence: cam", + "status": "pending", + "dependencies": [ + "PLAT-cam-B" + ], + "capability": "cam", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PLAT-cam-D", + "title": "Capture parameter mutation and restore evidence: cam", + "status": "pending", + "dependencies": [ + "PLAT-cam-C" + ], + "capability": "cam", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PLAT-cam-E", + "title": "Implement the Facade capability: cam", + "status": "pending", + "dependencies": [ + "PLAT-cam-D" + ], + "capability": "cam", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PLAT-cam-F", + "title": "Close transaction and recovery behavior: cam", + "status": "pending", + "dependencies": [ + "PLAT-cam-E" + ], + "capability": "cam", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PLAT-cam-G", + "title": "Close FCStd save, reopen and resave: cam", + "status": "pending", + "dependencies": [ + "PLAT-cam-F" + ], + "capability": "cam", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PLAT-cam-H", + "title": "Replay in a real browser: cam", + "status": "pending", + "dependencies": [ + "PLAT-cam-G" + ], + "capability": "cam", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PLAT-cam-I", + "title": "Promote capability and synchronize blockers: cam", + "status": "pending", + "dependencies": [ + "PLAT-cam-H" + ], + "capability": "cam", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PLAT-robot-A", + "title": "Lock native inventory and preconditions: robot", + "status": "pending", + "dependencies": [ + "PLAT-cam-I" + ], + "capability": "robot", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PLAT-robot-B", + "title": "Capture native success evidence: robot", + "status": "pending", + "dependencies": [ + "PLAT-robot-A" + ], + "capability": "robot", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PLAT-robot-C", + "title": "Capture native failure and cancel evidence: robot", + "status": "pending", + "dependencies": [ + "PLAT-robot-B" + ], + "capability": "robot", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PLAT-robot-D", + "title": "Capture parameter mutation and restore evidence: robot", + "status": "pending", + "dependencies": [ + "PLAT-robot-C" + ], + "capability": "robot", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PLAT-robot-E", + "title": "Implement the Facade capability: robot", + "status": "pending", + "dependencies": [ + "PLAT-robot-D" + ], + "capability": "robot", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PLAT-robot-F", + "title": "Close transaction and recovery behavior: robot", + "status": "pending", + "dependencies": [ + "PLAT-robot-E" + ], + "capability": "robot", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PLAT-robot-G", + "title": "Close FCStd save, reopen and resave: robot", + "status": "pending", + "dependencies": [ + "PLAT-robot-F" + ], + "capability": "robot", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PLAT-robot-H", + "title": "Replay in a real browser: robot", + "status": "pending", + "dependencies": [ + "PLAT-robot-G" + ], + "capability": "robot", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PLAT-robot-I", + "title": "Promote capability and synchronize blockers: robot", + "status": "pending", + "dependencies": [ + "PLAT-robot-H" + ], + "capability": "robot", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PLAT-points-reverseengineering-A", + "title": "Lock native inventory and preconditions: points reverseengineering", + "status": "pending", + "dependencies": [ + "PLAT-robot-I" + ], + "capability": "points-reverseengineering", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PLAT-points-reverseengineering-B", + "title": "Capture native success evidence: points reverseengineering", + "status": "pending", + "dependencies": [ + "PLAT-points-reverseengineering-A" + ], + "capability": "points-reverseengineering", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PLAT-points-reverseengineering-C", + "title": "Capture native failure and cancel evidence: points reverseengineering", + "status": "pending", + "dependencies": [ + "PLAT-points-reverseengineering-B" + ], + "capability": "points-reverseengineering", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PLAT-points-reverseengineering-D", + "title": "Capture parameter mutation and restore evidence: points reverseengineering", + "status": "pending", + "dependencies": [ + "PLAT-points-reverseengineering-C" + ], + "capability": "points-reverseengineering", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PLAT-points-reverseengineering-E", + "title": "Implement the Facade capability: points reverseengineering", + "status": "pending", + "dependencies": [ + "PLAT-points-reverseengineering-D" + ], + "capability": "points-reverseengineering", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PLAT-points-reverseengineering-F", + "title": "Close transaction and recovery behavior: points reverseengineering", + "status": "pending", + "dependencies": [ + "PLAT-points-reverseengineering-E" + ], + "capability": "points-reverseengineering", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PLAT-points-reverseengineering-G", + "title": "Close FCStd save, reopen and resave: points reverseengineering", + "status": "pending", + "dependencies": [ + "PLAT-points-reverseengineering-F" + ], + "capability": "points-reverseengineering", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PLAT-points-reverseengineering-H", + "title": "Replay in a real browser: points reverseengineering", + "status": "pending", + "dependencies": [ + "PLAT-points-reverseengineering-G" + ], + "capability": "points-reverseengineering", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PLAT-points-reverseengineering-I", + "title": "Promote capability and synchronize blockers: points reverseengineering", + "status": "pending", + "dependencies": [ + "PLAT-points-reverseengineering-H" + ], + "capability": "points-reverseengineering", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PLAT-inspection-measure-A", + "title": "Lock native inventory and preconditions: inspection measure", + "status": "pending", + "dependencies": [ + "PLAT-points-reverseengineering-I" + ], + "capability": "inspection-measure", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PLAT-inspection-measure-B", + "title": "Capture native success evidence: inspection measure", + "status": "pending", + "dependencies": [ + "PLAT-inspection-measure-A" + ], + "capability": "inspection-measure", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PLAT-inspection-measure-C", + "title": "Capture native failure and cancel evidence: inspection measure", + "status": "pending", + "dependencies": [ + "PLAT-inspection-measure-B" + ], + "capability": "inspection-measure", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PLAT-inspection-measure-D", + "title": "Capture parameter mutation and restore evidence: inspection measure", + "status": "pending", + "dependencies": [ + "PLAT-inspection-measure-C" + ], + "capability": "inspection-measure", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PLAT-inspection-measure-E", + "title": "Implement the Facade capability: inspection measure", + "status": "pending", + "dependencies": [ + "PLAT-inspection-measure-D" + ], + "capability": "inspection-measure", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PLAT-inspection-measure-F", + "title": "Close transaction and recovery behavior: inspection measure", + "status": "pending", + "dependencies": [ + "PLAT-inspection-measure-E" + ], + "capability": "inspection-measure", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PLAT-inspection-measure-G", + "title": "Close FCStd save, reopen and resave: inspection measure", + "status": "pending", + "dependencies": [ + "PLAT-inspection-measure-F" + ], + "capability": "inspection-measure", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PLAT-inspection-measure-H", + "title": "Replay in a real browser: inspection measure", + "status": "pending", + "dependencies": [ + "PLAT-inspection-measure-G" + ], + "capability": "inspection-measure", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PLAT-inspection-measure-I", + "title": "Promote capability and synchronize blockers: inspection measure", + "status": "pending", + "dependencies": [ + "PLAT-inspection-measure-H" + ], + "capability": "inspection-measure", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PLAT-python-macro-A", + "title": "Lock native inventory and preconditions: python macro", + "status": "pending", + "dependencies": [ + "PLAT-inspection-measure-I" + ], + "capability": "python-macro", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PLAT-python-macro-B", + "title": "Capture native success evidence: python macro", + "status": "pending", + "dependencies": [ + "PLAT-python-macro-A" + ], + "capability": "python-macro", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PLAT-python-macro-C", + "title": "Capture native failure and cancel evidence: python macro", + "status": "pending", + "dependencies": [ + "PLAT-python-macro-B" + ], + "capability": "python-macro", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PLAT-python-macro-D", + "title": "Capture parameter mutation and restore evidence: python macro", + "status": "pending", + "dependencies": [ + "PLAT-python-macro-C" + ], + "capability": "python-macro", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PLAT-python-macro-E", + "title": "Implement the Facade capability: python macro", + "status": "pending", + "dependencies": [ + "PLAT-python-macro-D" + ], + "capability": "python-macro", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PLAT-python-macro-F", + "title": "Close transaction and recovery behavior: python macro", + "status": "pending", + "dependencies": [ + "PLAT-python-macro-E" + ], + "capability": "python-macro", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PLAT-python-macro-G", + "title": "Close FCStd save, reopen and resave: python macro", + "status": "pending", + "dependencies": [ + "PLAT-python-macro-F" + ], + "capability": "python-macro", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PLAT-python-macro-H", + "title": "Replay in a real browser: python macro", + "status": "pending", + "dependencies": [ + "PLAT-python-macro-G" + ], + "capability": "python-macro", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PLAT-python-macro-I", + "title": "Promote capability and synchronize blockers: python macro", + "status": "pending", + "dependencies": [ + "PLAT-python-macro-H" + ], + "capability": "python-macro", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PLAT-addon-A", + "title": "Lock native inventory and preconditions: addon", + "status": "pending", + "dependencies": [ + "PLAT-python-macro-I" + ], + "capability": "addon", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PLAT-addon-B", + "title": "Capture native success evidence: addon", + "status": "pending", + "dependencies": [ + "PLAT-addon-A" + ], + "capability": "addon", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PLAT-addon-C", + "title": "Capture native failure and cancel evidence: addon", + "status": "pending", + "dependencies": [ + "PLAT-addon-B" + ], + "capability": "addon", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PLAT-addon-D", + "title": "Capture parameter mutation and restore evidence: addon", + "status": "pending", + "dependencies": [ + "PLAT-addon-C" + ], + "capability": "addon", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PLAT-addon-E", + "title": "Implement the Facade capability: addon", + "status": "pending", + "dependencies": [ + "PLAT-addon-D" + ], + "capability": "addon", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PLAT-addon-F", + "title": "Close transaction and recovery behavior: addon", + "status": "pending", + "dependencies": [ + "PLAT-addon-E" + ], + "capability": "addon", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PLAT-addon-G", + "title": "Close FCStd save, reopen and resave: addon", + "status": "pending", + "dependencies": [ + "PLAT-addon-F" + ], + "capability": "addon", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PLAT-addon-H", + "title": "Replay in a real browser: addon", + "status": "pending", + "dependencies": [ + "PLAT-addon-G" + ], + "capability": "addon", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PLAT-addon-I", + "title": "Promote capability and synchronize blockers: addon", + "status": "pending", + "dependencies": [ + "PLAT-addon-H" + ], + "capability": "addon", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PLAT-cloud-A", + "title": "Lock native inventory and preconditions: cloud", + "status": "pending", + "dependencies": [ + "PLAT-addon-I" + ], + "capability": "cloud", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PLAT-cloud-B", + "title": "Capture native success evidence: cloud", + "status": "pending", + "dependencies": [ + "PLAT-cloud-A" + ], + "capability": "cloud", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PLAT-cloud-C", + "title": "Capture native failure and cancel evidence: cloud", + "status": "pending", + "dependencies": [ + "PLAT-cloud-B" + ], + "capability": "cloud", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PLAT-cloud-D", + "title": "Capture parameter mutation and restore evidence: cloud", + "status": "pending", + "dependencies": [ + "PLAT-cloud-C" + ], + "capability": "cloud", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PLAT-cloud-E", + "title": "Implement the Facade capability: cloud", + "status": "pending", + "dependencies": [ + "PLAT-cloud-D" + ], + "capability": "cloud", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PLAT-cloud-F", + "title": "Close transaction and recovery behavior: cloud", + "status": "pending", + "dependencies": [ + "PLAT-cloud-E" + ], + "capability": "cloud", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PLAT-cloud-G", + "title": "Close FCStd save, reopen and resave: cloud", + "status": "pending", + "dependencies": [ + "PLAT-cloud-F" + ], + "capability": "cloud", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PLAT-cloud-H", + "title": "Replay in a real browser: cloud", + "status": "pending", + "dependencies": [ + "PLAT-cloud-G" + ], + "capability": "cloud", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PLAT-cloud-I", + "title": "Promote capability and synchronize blockers: cloud", + "status": "pending", + "dependencies": [ + "PLAT-cloud-H" + ], + "capability": "cloud", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PLAT-help-A", + "title": "Lock native inventory and preconditions: help", + "status": "pending", + "dependencies": [ + "PLAT-cloud-I" + ], + "capability": "help", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PLAT-help-B", + "title": "Capture native success evidence: help", + "status": "pending", + "dependencies": [ + "PLAT-help-A" + ], + "capability": "help", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PLAT-help-C", + "title": "Capture native failure and cancel evidence: help", + "status": "pending", + "dependencies": [ + "PLAT-help-B" + ], + "capability": "help", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PLAT-help-D", + "title": "Capture parameter mutation and restore evidence: help", + "status": "pending", + "dependencies": [ + "PLAT-help-C" + ], + "capability": "help", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PLAT-help-E", + "title": "Implement the Facade capability: help", + "status": "pending", + "dependencies": [ + "PLAT-help-D" + ], + "capability": "help", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PLAT-help-F", + "title": "Close transaction and recovery behavior: help", + "status": "pending", + "dependencies": [ + "PLAT-help-E" + ], + "capability": "help", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PLAT-help-G", + "title": "Close FCStd save, reopen and resave: help", + "status": "pending", + "dependencies": [ + "PLAT-help-F" + ], + "capability": "help", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PLAT-help-H", + "title": "Replay in a real browser: help", + "status": "pending", + "dependencies": [ + "PLAT-help-G" + ], + "capability": "help", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PLAT-help-I", + "title": "Promote capability and synchronize blockers: help", + "status": "pending", + "dependencies": [ + "PLAT-help-H" + ], + "capability": "help", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PLAT-idf-A", + "title": "Lock native inventory and preconditions: idf", + "status": "pending", + "dependencies": [ + "PLAT-help-I" + ], + "capability": "idf", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PLAT-idf-B", + "title": "Capture native success evidence: idf", + "status": "pending", + "dependencies": [ + "PLAT-idf-A" + ], + "capability": "idf", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PLAT-idf-C", + "title": "Capture native failure and cancel evidence: idf", + "status": "pending", + "dependencies": [ + "PLAT-idf-B" + ], + "capability": "idf", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PLAT-idf-D", + "title": "Capture parameter mutation and restore evidence: idf", + "status": "pending", + "dependencies": [ + "PLAT-idf-C" + ], + "capability": "idf", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PLAT-idf-E", + "title": "Implement the Facade capability: idf", + "status": "pending", + "dependencies": [ + "PLAT-idf-D" + ], + "capability": "idf", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PLAT-idf-F", + "title": "Close transaction and recovery behavior: idf", + "status": "pending", + "dependencies": [ + "PLAT-idf-E" + ], + "capability": "idf", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PLAT-idf-G", + "title": "Close FCStd save, reopen and resave: idf", + "status": "pending", + "dependencies": [ + "PLAT-idf-F" + ], + "capability": "idf", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PLAT-idf-H", + "title": "Replay in a real browser: idf", + "status": "pending", + "dependencies": [ + "PLAT-idf-G" + ], + "capability": "idf", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PLAT-idf-I", + "title": "Promote capability and synchronize blockers: idf", + "status": "pending", + "dependencies": [ + "PLAT-idf-H" + ], + "capability": "idf", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PLAT-jt-A", + "title": "Lock native inventory and preconditions: jt", + "status": "pending", + "dependencies": [ + "PLAT-idf-I" + ], + "capability": "jt", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PLAT-jt-B", + "title": "Capture native success evidence: jt", + "status": "pending", + "dependencies": [ + "PLAT-jt-A" + ], + "capability": "jt", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PLAT-jt-C", + "title": "Capture native failure and cancel evidence: jt", + "status": "pending", + "dependencies": [ + "PLAT-jt-B" + ], + "capability": "jt", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PLAT-jt-D", + "title": "Capture parameter mutation and restore evidence: jt", + "status": "pending", + "dependencies": [ + "PLAT-jt-C" + ], + "capability": "jt", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PLAT-jt-E", + "title": "Implement the Facade capability: jt", + "status": "pending", + "dependencies": [ + "PLAT-jt-D" + ], + "capability": "jt", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PLAT-jt-F", + "title": "Close transaction and recovery behavior: jt", + "status": "pending", + "dependencies": [ + "PLAT-jt-E" + ], + "capability": "jt", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PLAT-jt-G", + "title": "Close FCStd save, reopen and resave: jt", + "status": "pending", + "dependencies": [ + "PLAT-jt-F" + ], + "capability": "jt", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PLAT-jt-H", + "title": "Replay in a real browser: jt", + "status": "pending", + "dependencies": [ + "PLAT-jt-G" + ], + "capability": "jt", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PLAT-jt-I", + "title": "Promote capability and synchronize blockers: jt", + "status": "pending", + "dependencies": [ + "PLAT-jt-H" + ], + "capability": "jt", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PLAT-openscad-A", + "title": "Lock native inventory and preconditions: openscad", + "status": "pending", + "dependencies": [ + "PLAT-jt-I" + ], + "capability": "openscad", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PLAT-openscad-B", + "title": "Capture native success evidence: openscad", + "status": "pending", + "dependencies": [ + "PLAT-openscad-A" + ], + "capability": "openscad", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PLAT-openscad-C", + "title": "Capture native failure and cancel evidence: openscad", + "status": "pending", + "dependencies": [ + "PLAT-openscad-B" + ], + "capability": "openscad", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PLAT-openscad-D", + "title": "Capture parameter mutation and restore evidence: openscad", + "status": "pending", + "dependencies": [ + "PLAT-openscad-C" + ], + "capability": "openscad", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PLAT-openscad-E", + "title": "Implement the Facade capability: openscad", + "status": "pending", + "dependencies": [ + "PLAT-openscad-D" + ], + "capability": "openscad", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PLAT-openscad-F", + "title": "Close transaction and recovery behavior: openscad", + "status": "pending", + "dependencies": [ + "PLAT-openscad-E" + ], + "capability": "openscad", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PLAT-openscad-G", + "title": "Close FCStd save, reopen and resave: openscad", + "status": "pending", + "dependencies": [ + "PLAT-openscad-F" + ], + "capability": "openscad", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PLAT-openscad-H", + "title": "Replay in a real browser: openscad", + "status": "pending", + "dependencies": [ + "PLAT-openscad-G" + ], + "capability": "openscad", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PLAT-openscad-I", + "title": "Promote capability and synchronize blockers: openscad", + "status": "pending", + "dependencies": [ + "PLAT-openscad-H" + ], + "capability": "openscad", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "PLAT-platform-boundaries-A", + "title": "Lock native inventory and preconditions: platform boundaries", + "status": "pending", + "dependencies": [ + "PLAT-openscad-I" + ], + "capability": "platform-boundaries", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "PLAT-platform-boundaries-B", + "title": "Capture native success evidence: platform boundaries", + "status": "pending", + "dependencies": [ + "PLAT-platform-boundaries-A" + ], + "capability": "platform-boundaries", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "PLAT-platform-boundaries-C", + "title": "Capture native failure and cancel evidence: platform boundaries", + "status": "pending", + "dependencies": [ + "PLAT-platform-boundaries-B" + ], + "capability": "platform-boundaries", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "PLAT-platform-boundaries-D", + "title": "Capture parameter mutation and restore evidence: platform boundaries", + "status": "pending", + "dependencies": [ + "PLAT-platform-boundaries-C" + ], + "capability": "platform-boundaries", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "PLAT-platform-boundaries-E", + "title": "Implement the Facade capability: platform boundaries", + "status": "pending", + "dependencies": [ + "PLAT-platform-boundaries-D" + ], + "capability": "platform-boundaries", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "PLAT-platform-boundaries-F", + "title": "Close transaction and recovery behavior: platform boundaries", + "status": "pending", + "dependencies": [ + "PLAT-platform-boundaries-E" + ], + "capability": "platform-boundaries", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "PLAT-platform-boundaries-G", + "title": "Close FCStd save, reopen and resave: platform boundaries", + "status": "pending", + "dependencies": [ + "PLAT-platform-boundaries-F" + ], + "capability": "platform-boundaries", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "PLAT-platform-boundaries-H", + "title": "Replay in a real browser: platform boundaries", + "status": "pending", + "dependencies": [ + "PLAT-platform-boundaries-G" + ], + "capability": "platform-boundaries", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "PLAT-platform-boundaries-I", + "title": "Promote capability and synchronize blockers: platform boundaries", + "status": "pending", + "dependencies": [ + "PLAT-platform-boundaries-H" + ], + "capability": "platform-boundaries", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + } + ] + }, + { + "id": "QA-RELEASE", + "title": "Close QA and exact release", + "exactTasks": [ + "EX-QA-01", + "EX-QA-02", + "EX-QA-03", + "EX-REL-01" + ], + "status": "pending", + "tasks": [ + { + "id": "REL-chrome-baseline-A", + "title": "Lock native inventory and preconditions: Chrome locked baseline", + "status": "pending", + "dependencies": [ + "PLAT-platform-boundaries-I" + ], + "capability": "chrome-baseline", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "REL-chrome-baseline-B", + "title": "Capture native success evidence: Chrome locked baseline", + "status": "pending", + "dependencies": [ + "REL-chrome-baseline-A" + ], + "capability": "chrome-baseline", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "REL-chrome-baseline-C", + "title": "Capture native failure and cancel evidence: Chrome locked baseline", + "status": "pending", + "dependencies": [ + "REL-chrome-baseline-B" + ], + "capability": "chrome-baseline", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "REL-chrome-baseline-D", + "title": "Capture parameter mutation and restore evidence: Chrome locked baseline", + "status": "pending", + "dependencies": [ + "REL-chrome-baseline-C" + ], + "capability": "chrome-baseline", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "REL-chrome-baseline-E", + "title": "Implement the Facade capability: Chrome locked baseline", + "status": "pending", + "dependencies": [ + "REL-chrome-baseline-D" + ], + "capability": "chrome-baseline", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "REL-chrome-baseline-F", + "title": "Close transaction and recovery behavior: Chrome locked baseline", + "status": "pending", + "dependencies": [ + "REL-chrome-baseline-E" + ], + "capability": "chrome-baseline", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "REL-chrome-baseline-G", + "title": "Close FCStd save, reopen and resave: Chrome locked baseline", + "status": "pending", + "dependencies": [ + "REL-chrome-baseline-F" + ], + "capability": "chrome-baseline", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "REL-chrome-baseline-H", + "title": "Replay in a real browser: Chrome locked baseline", + "status": "pending", + "dependencies": [ + "REL-chrome-baseline-G" + ], + "capability": "chrome-baseline", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "REL-chrome-baseline-I", + "title": "Promote capability and synchronize blockers: Chrome locked baseline", + "status": "pending", + "dependencies": [ + "REL-chrome-baseline-H" + ], + "capability": "chrome-baseline", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "REL-browser-matrix-A", + "title": "Lock native inventory and preconditions: Firefox, Safari and explicit unsupported boundaries", + "status": "pending", + "dependencies": [ + "REL-chrome-baseline-I" + ], + "capability": "browser-matrix", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "REL-browser-matrix-B", + "title": "Capture native success evidence: Firefox, Safari and explicit unsupported boundaries", + "status": "pending", + "dependencies": [ + "REL-browser-matrix-A" + ], + "capability": "browser-matrix", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "REL-browser-matrix-C", + "title": "Capture native failure and cancel evidence: Firefox, Safari and explicit unsupported boundaries", + "status": "pending", + "dependencies": [ + "REL-browser-matrix-B" + ], + "capability": "browser-matrix", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "REL-browser-matrix-D", + "title": "Capture parameter mutation and restore evidence: Firefox, Safari and explicit unsupported boundaries", + "status": "pending", + "dependencies": [ + "REL-browser-matrix-C" + ], + "capability": "browser-matrix", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "REL-browser-matrix-E", + "title": "Implement the Facade capability: Firefox, Safari and explicit unsupported boundaries", + "status": "pending", + "dependencies": [ + "REL-browser-matrix-D" + ], + "capability": "browser-matrix", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "REL-browser-matrix-F", + "title": "Close transaction and recovery behavior: Firefox, Safari and explicit unsupported boundaries", + "status": "pending", + "dependencies": [ + "REL-browser-matrix-E" + ], + "capability": "browser-matrix", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "REL-browser-matrix-G", + "title": "Close FCStd save, reopen and resave: Firefox, Safari and explicit unsupported boundaries", + "status": "pending", + "dependencies": [ + "REL-browser-matrix-F" + ], + "capability": "browser-matrix", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "REL-browser-matrix-H", + "title": "Replay in a real browser: Firefox, Safari and explicit unsupported boundaries", + "status": "pending", + "dependencies": [ + "REL-browser-matrix-G" + ], + "capability": "browser-matrix", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "REL-browser-matrix-I", + "title": "Promote capability and synchronize blockers: Firefox, Safari and explicit unsupported boundaries", + "status": "pending", + "dependencies": [ + "REL-browser-matrix-H" + ], + "capability": "browser-matrix", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "REL-os-gpu-matrix-A", + "title": "Lock native inventory and preconditions: Windows, macOS, Linux and GPU/software rendering", + "status": "pending", + "dependencies": [ + "REL-browser-matrix-I" + ], + "capability": "os-gpu-matrix", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "REL-os-gpu-matrix-B", + "title": "Capture native success evidence: Windows, macOS, Linux and GPU/software rendering", + "status": "pending", + "dependencies": [ + "REL-os-gpu-matrix-A" + ], + "capability": "os-gpu-matrix", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "REL-os-gpu-matrix-C", + "title": "Capture native failure and cancel evidence: Windows, macOS, Linux and GPU/software rendering", + "status": "pending", + "dependencies": [ + "REL-os-gpu-matrix-B" + ], + "capability": "os-gpu-matrix", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "REL-os-gpu-matrix-D", + "title": "Capture parameter mutation and restore evidence: Windows, macOS, Linux and GPU/software rendering", + "status": "pending", + "dependencies": [ + "REL-os-gpu-matrix-C" + ], + "capability": "os-gpu-matrix", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "REL-os-gpu-matrix-E", + "title": "Implement the Facade capability: Windows, macOS, Linux and GPU/software rendering", + "status": "pending", + "dependencies": [ + "REL-os-gpu-matrix-D" + ], + "capability": "os-gpu-matrix", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "REL-os-gpu-matrix-F", + "title": "Close transaction and recovery behavior: Windows, macOS, Linux and GPU/software rendering", + "status": "pending", + "dependencies": [ + "REL-os-gpu-matrix-E" + ], + "capability": "os-gpu-matrix", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "REL-os-gpu-matrix-G", + "title": "Close FCStd save, reopen and resave: Windows, macOS, Linux and GPU/software rendering", + "status": "pending", + "dependencies": [ + "REL-os-gpu-matrix-F" + ], + "capability": "os-gpu-matrix", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "REL-os-gpu-matrix-H", + "title": "Replay in a real browser: Windows, macOS, Linux and GPU/software rendering", + "status": "pending", + "dependencies": [ + "REL-os-gpu-matrix-G" + ], + "capability": "os-gpu-matrix", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "REL-os-gpu-matrix-I", + "title": "Promote capability and synchronize blockers: Windows, macOS, Linux and GPU/software rendering", + "status": "pending", + "dependencies": [ + "REL-os-gpu-matrix-H" + ], + "capability": "os-gpu-matrix", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "REL-accessibility-locale-A", + "title": "Lock native inventory and preconditions: Keyboard, screen reader, locale, long text and narrow viewport", + "status": "pending", + "dependencies": [ + "REL-os-gpu-matrix-I" + ], + "capability": "accessibility-locale", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "REL-accessibility-locale-B", + "title": "Capture native success evidence: Keyboard, screen reader, locale, long text and narrow viewport", + "status": "pending", + "dependencies": [ + "REL-accessibility-locale-A" + ], + "capability": "accessibility-locale", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "REL-accessibility-locale-C", + "title": "Capture native failure and cancel evidence: Keyboard, screen reader, locale, long text and narrow viewport", + "status": "pending", + "dependencies": [ + "REL-accessibility-locale-B" + ], + "capability": "accessibility-locale", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "REL-accessibility-locale-D", + "title": "Capture parameter mutation and restore evidence: Keyboard, screen reader, locale, long text and narrow viewport", + "status": "pending", + "dependencies": [ + "REL-accessibility-locale-C" + ], + "capability": "accessibility-locale", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "REL-accessibility-locale-E", + "title": "Implement the Facade capability: Keyboard, screen reader, locale, long text and narrow viewport", + "status": "pending", + "dependencies": [ + "REL-accessibility-locale-D" + ], + "capability": "accessibility-locale", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "REL-accessibility-locale-F", + "title": "Close transaction and recovery behavior: Keyboard, screen reader, locale, long text and narrow viewport", + "status": "pending", + "dependencies": [ + "REL-accessibility-locale-E" + ], + "capability": "accessibility-locale", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "REL-accessibility-locale-G", + "title": "Close FCStd save, reopen and resave: Keyboard, screen reader, locale, long text and narrow viewport", + "status": "pending", + "dependencies": [ + "REL-accessibility-locale-F" + ], + "capability": "accessibility-locale", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "REL-accessibility-locale-H", + "title": "Replay in a real browser: Keyboard, screen reader, locale, long text and narrow viewport", + "status": "pending", + "dependencies": [ + "REL-accessibility-locale-G" + ], + "capability": "accessibility-locale", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "REL-accessibility-locale-I", + "title": "Promote capability and synchronize blockers: Keyboard, screen reader, locale, long text and narrow viewport", + "status": "pending", + "dependencies": [ + "REL-accessibility-locale-H" + ], + "capability": "accessibility-locale", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "REL-fuzz-soak-recovery-A", + "title": "Lock native inventory and preconditions: Fuzz, 1000 recomputes, long session, crash, migration and rollback", + "status": "pending", + "dependencies": [ + "REL-accessibility-locale-I" + ], + "capability": "fuzz-soak-recovery", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "REL-fuzz-soak-recovery-B", + "title": "Capture native success evidence: Fuzz, 1000 recomputes, long session, crash, migration and rollback", + "status": "pending", + "dependencies": [ + "REL-fuzz-soak-recovery-A" + ], + "capability": "fuzz-soak-recovery", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "REL-fuzz-soak-recovery-C", + "title": "Capture native failure and cancel evidence: Fuzz, 1000 recomputes, long session, crash, migration and rollback", + "status": "pending", + "dependencies": [ + "REL-fuzz-soak-recovery-B" + ], + "capability": "fuzz-soak-recovery", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "REL-fuzz-soak-recovery-D", + "title": "Capture parameter mutation and restore evidence: Fuzz, 1000 recomputes, long session, crash, migration and rollback", + "status": "pending", + "dependencies": [ + "REL-fuzz-soak-recovery-C" + ], + "capability": "fuzz-soak-recovery", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "REL-fuzz-soak-recovery-E", + "title": "Implement the Facade capability: Fuzz, 1000 recomputes, long session, crash, migration and rollback", + "status": "pending", + "dependencies": [ + "REL-fuzz-soak-recovery-D" + ], + "capability": "fuzz-soak-recovery", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "REL-fuzz-soak-recovery-F", + "title": "Close transaction and recovery behavior: Fuzz, 1000 recomputes, long session, crash, migration and rollback", + "status": "pending", + "dependencies": [ + "REL-fuzz-soak-recovery-E" + ], + "capability": "fuzz-soak-recovery", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "REL-fuzz-soak-recovery-G", + "title": "Close FCStd save, reopen and resave: Fuzz, 1000 recomputes, long session, crash, migration and rollback", + "status": "pending", + "dependencies": [ + "REL-fuzz-soak-recovery-F" + ], + "capability": "fuzz-soak-recovery", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "REL-fuzz-soak-recovery-H", + "title": "Replay in a real browser: Fuzz, 1000 recomputes, long session, crash, migration and rollback", + "status": "pending", + "dependencies": [ + "REL-fuzz-soak-recovery-G" + ], + "capability": "fuzz-soak-recovery", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "REL-fuzz-soak-recovery-I", + "title": "Promote capability and synchronize blockers: Fuzz, 1000 recomputes, long session, crash, migration and rollback", + "status": "pending", + "dependencies": [ + "REL-fuzz-soak-recovery-H" + ], + "capability": "fuzz-soak-recovery", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "REL-resource-performance-A", + "title": "Lock native inventory and preconditions: Performance and WASM/JS/GPU/OPFS release accounting", + "status": "pending", + "dependencies": [ + "REL-fuzz-soak-recovery-I" + ], + "capability": "resource-performance", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "REL-resource-performance-B", + "title": "Capture native success evidence: Performance and WASM/JS/GPU/OPFS release accounting", + "status": "pending", + "dependencies": [ + "REL-resource-performance-A" + ], + "capability": "resource-performance", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "REL-resource-performance-C", + "title": "Capture native failure and cancel evidence: Performance and WASM/JS/GPU/OPFS release accounting", + "status": "pending", + "dependencies": [ + "REL-resource-performance-B" + ], + "capability": "resource-performance", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "REL-resource-performance-D", + "title": "Capture parameter mutation and restore evidence: Performance and WASM/JS/GPU/OPFS release accounting", + "status": "pending", + "dependencies": [ + "REL-resource-performance-C" + ], + "capability": "resource-performance", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "REL-resource-performance-E", + "title": "Implement the Facade capability: Performance and WASM/JS/GPU/OPFS release accounting", + "status": "pending", + "dependencies": [ + "REL-resource-performance-D" + ], + "capability": "resource-performance", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "REL-resource-performance-F", + "title": "Close transaction and recovery behavior: Performance and WASM/JS/GPU/OPFS release accounting", + "status": "pending", + "dependencies": [ + "REL-resource-performance-E" + ], + "capability": "resource-performance", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "REL-resource-performance-G", + "title": "Close FCStd save, reopen and resave: Performance and WASM/JS/GPU/OPFS release accounting", + "status": "pending", + "dependencies": [ + "REL-resource-performance-F" + ], + "capability": "resource-performance", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "REL-resource-performance-H", + "title": "Replay in a real browser: Performance and WASM/JS/GPU/OPFS release accounting", + "status": "pending", + "dependencies": [ + "REL-resource-performance-G" + ], + "capability": "resource-performance", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "REL-resource-performance-I", + "title": "Promote capability and synchronize blockers: Performance and WASM/JS/GPU/OPFS release accounting", + "status": "pending", + "dependencies": [ + "REL-resource-performance-H" + ], + "capability": "resource-performance", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "REL-signed-release-A", + "title": "Lock native inventory and preconditions: SBOM, licenses, signing, offline install and rollback drill", + "status": "pending", + "dependencies": [ + "REL-resource-performance-I" + ], + "capability": "signed-release", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "REL-signed-release-B", + "title": "Capture native success evidence: SBOM, licenses, signing, offline install and rollback drill", + "status": "pending", + "dependencies": [ + "REL-signed-release-A" + ], + "capability": "signed-release", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "REL-signed-release-C", + "title": "Capture native failure and cancel evidence: SBOM, licenses, signing, offline install and rollback drill", + "status": "pending", + "dependencies": [ + "REL-signed-release-B" + ], + "capability": "signed-release", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "REL-signed-release-D", + "title": "Capture parameter mutation and restore evidence: SBOM, licenses, signing, offline install and rollback drill", + "status": "pending", + "dependencies": [ + "REL-signed-release-C" + ], + "capability": "signed-release", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "REL-signed-release-E", + "title": "Implement the Facade capability: SBOM, licenses, signing, offline install and rollback drill", + "status": "pending", + "dependencies": [ + "REL-signed-release-D" + ], + "capability": "signed-release", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "REL-signed-release-F", + "title": "Close transaction and recovery behavior: SBOM, licenses, signing, offline install and rollback drill", + "status": "pending", + "dependencies": [ + "REL-signed-release-E" + ], + "capability": "signed-release", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "REL-signed-release-G", + "title": "Close FCStd save, reopen and resave: SBOM, licenses, signing, offline install and rollback drill", + "status": "pending", + "dependencies": [ + "REL-signed-release-F" + ], + "capability": "signed-release", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "REL-signed-release-H", + "title": "Replay in a real browser: SBOM, licenses, signing, offline install and rollback drill", + "status": "pending", + "dependencies": [ + "REL-signed-release-G" + ], + "capability": "signed-release", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "REL-signed-release-I", + "title": "Promote capability and synchronize blockers: SBOM, licenses, signing, offline install and rollback drill", + "status": "pending", + "dependencies": [ + "REL-signed-release-H" + ], + "capability": "signed-release", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + }, + { + "id": "REL-exact-promotion-A", + "title": "Lock native inventory and preconditions: 52-task, 34-module and zero-unknown promotion report", + "status": "pending", + "dependencies": [ + "REL-signed-release-I" + ], + "capability": "exact-promotion", + "phase": "A", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the native TypeId, inputs, defaults, dependencies and applicability are machine recorded" + }, + { + "id": "REL-exact-promotion-B", + "title": "Capture native success evidence: 52-task, 34-module and zero-unknown promotion report", + "status": "pending", + "dependencies": [ + "REL-exact-promotion-A" + ], + "capability": "exact-promotion", + "phase": "B", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "nominal and boundary successes record values, Shape, topology, status and diagnostics" + }, + { + "id": "REL-exact-promotion-C", + "title": "Capture native failure and cancel evidence: 52-task, 34-module and zero-unknown promotion report", + "status": "pending", + "dependencies": [ + "REL-exact-promotion-B" + ], + "capability": "exact-promotion", + "phase": "C", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "invalid input, disabled state, cancellation and document non-pollution are reproducible" + }, + { + "id": "REL-exact-promotion-D", + "title": "Capture parameter mutation and restore evidence: 52-task, 34-module and zero-unknown promotion report", + "status": "pending", + "dependencies": [ + "REL-exact-promotion-C" + ], + "capability": "exact-promotion", + "phase": "D", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "edit, recompute and restore return geometry and semantics to the classified native state" + }, + { + "id": "REL-exact-promotion-E", + "title": "Implement the Facade capability: 52-task, 34-module and zero-unknown promotion report", + "status": "pending", + "dependencies": [ + "REL-exact-promotion-D" + ], + "capability": "exact-promotion", + "phase": "E", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "the production Facade uses the declared native or explicit proxy path without hidden fallback" + }, + { + "id": "REL-exact-promotion-F", + "title": "Close transaction and recovery behavior: 52-task, 34-module and zero-unknown promotion report", + "status": "pending", + "dependencies": [ + "REL-exact-promotion-E" + ], + "capability": "exact-promotion", + "phase": "F", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "abort, undo, redo, stale, failure and resource ownership return to the expected state" + }, + { + "id": "REL-exact-promotion-G", + "title": "Close FCStd save, reopen and resave: 52-task, 34-module and zero-unknown promotion report", + "status": "pending", + "dependencies": [ + "REL-exact-promotion-F" + ], + "capability": "exact-promotion", + "phase": "G", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift" + }, + { + "id": "REL-exact-promotion-H", + "title": "Replay in a real browser: 52-task, 34-module and zero-unknown promotion report", + "status": "pending", + "dependencies": [ + "REL-exact-promotion-G" + ], + "capability": "exact-promotion", + "phase": "H", + "evidenceRequired": [ + "one-native-or-production-artifact", + "one-focused-check" + ], + "exit": "Chrome Worker, OPFS, UI state and resource release evidence pass" + }, + { + "id": "REL-exact-promotion-I", + "title": "Promote capability and synchronize blockers: 52-task, 34-module and zero-unknown promotion report", + "status": "pending", + "dependencies": [ + "REL-exact-promotion-H" + ], + "capability": "exact-promotion", + "phase": "I", + "evidenceRequired": [ + "all-prior-phases-pass", + "focused-check", + "exact-blocker-sync" + ], + "exit": "all eight evidence tasks pass and machine reports alone advance the capability level" + } + ] } ] } diff --git a/config/freecad-follow-up-task-progress.json b/config/freecad-follow-up-task-progress.json new file mode 100644 index 0000000..f2784ab --- /dev/null +++ b/config/freecad-follow-up-task-progress.json @@ -0,0 +1,12 @@ +{ + "schemaVersion": 1, + "baseline": { + "freecadVersion": "1.1.1", + "commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d" + }, + "policy": { + "ordering": "completed task IDs must form a contiguous prefix of the generated follow-up queue", + "evidence": "every completed task must name at least one machine-checkable artifact or focused check" + }, + "completedTasks": [] +} diff --git a/config/freecad-ordered-operation-pair-classification.json b/config/freecad-ordered-operation-pair-classification.json index 41fbfcc..a1fc723 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": 14390, - "sha256": "ec6cc4556269d538f1c979886e7cc9b6cca0a194b6e4b67291e140b773d595db" + "bytes": 20865, + "sha256": "b30ff0534ff1681b9a7f966dba0687bd71e23ef9f71ee461f48f80c59643c51b" }, "matrix": { "path": "scripts/freecad-naming-production-matrix.mjs", @@ -20,8 +20,8 @@ }, "resave": { "path": "scripts/freecad-ordered-operation-pair-resave.py", - "bytes": 4467, - "sha256": "d02f2cc0c6427fc324693692a1bce036e58feb238bf5259fb17803a454d6d22b" + "bytes": 13776, + "sha256": "6a293f3c043230115759c72f97045a445e5012cdb0a0026ada29a13e197ccce4" }, "artifacts": [ { @@ -193,6 +193,7 @@ "namingEvidenceStable": true, "shapeStable": true }, + "decision": "accepted", "freecadVersion": "1.1.1", "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", "pair": "fuse->fuse", @@ -419,6 +420,7 @@ "namingEvidenceStable": true, "shapeStable": true }, + "decision": "accepted", "freecadVersion": "1.1.1", "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", "pair": "fuse->cut", @@ -645,6 +647,7 @@ "namingEvidenceStable": true, "shapeStable": true }, + "decision": "accepted", "freecadVersion": "1.1.1", "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", "pair": "fuse->common", @@ -871,6 +874,7 @@ "namingEvidenceStable": true, "shapeStable": true }, + "decision": "accepted", "freecadVersion": "1.1.1", "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", "pair": "fuse->rotate", @@ -945,14 +949,1368 @@ "schemaVersion": 1, "status": "pass" } + }, + { + "taskId": "TSN-PAIR-fuse-pad", + "pair": "fuse->pad", + "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": "1169606a880655c1d1cbc55af37b4e83fe9fdbfbc089069c511c42a00f1f7440", + "namingSemanticSha256": "72b04525740386718d0d2fc8b1285c47ccf0840cbc6c04279c2946057ce01f3d" + }, + "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": 660, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 29, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 18, + "volume": 1075 + }, + "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": "fuse->pad", + "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-pocket", + "pair": "fuse->pocket", + "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": "081b2236f2756400152fd4f8246d933bb9e91aa435f976ed98d794dc70868069", + "namingSemanticSha256": "b310dc32da509dc7665d075332f8d7c6a5a8af7cdd4be3d4bb54f4822268453a" + }, + "second": { + "operation": "pocket", + "builder": "BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 16, + "edges": 38, + "vertices": 24, + "volume": 1045, + "area": 660, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 42, + "selectedRecords": 3, + "ambiguousResults": 9, + "historySha256": "685a9cdf1f6991b3c4dfeede67c29141ef7e010f34635c95c9ab9c43b49a9f92", + "namingEvidenceSha256": "ff118840aba4ebdc140beb3586790fbebb6fa225a42b1e99f2609c5454e22196", + "namingSemanticSha256": "d72214a08c8ad4780243aa1c46c52b06347e78fe47909486ed4c7a7a359b5322" + }, + "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": 16, + "edges": 38, + "vertices": 24, + "volume": 1051, + "area": 660, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 42, + "selectedRecords": 3, + "ambiguousResults": 9, + "historySha256": "685a9cdf1f6991b3c4dfeede67c29141ef7e010f34635c95c9ab9c43b49a9f92", + "namingEvidenceSha256": "b46f2f85a24cabe4cf35425cbb5a541d5ea24ec776d361c3eaa3e28dd1f2bfcd", + "namingSemanticSha256": "d72214a08c8ad4780243aa1c46c52b06347e78fe47909486ed4c7a7a359b5322" + }, + "restoredEvidence": { + "operation": "pocket", + "builder": "BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut", + "inputCount": 2, + "historyProvider": "occt-native", + "namingStatus": "ambiguous", + "summary": { + "isValid": true, + "solids": 1, + "faces": 16, + "edges": 38, + "vertices": 24, + "volume": 1045, + "area": 660, + "bounds": [ + -1e-7, + -1e-7, + -1e-7, + 13.0000001, + 10.0000001, + 10.0000001 + ] + }, + "historyRecords": 42, + "selectedRecords": 3, + "ambiguousResults": 9, + "historySha256": "685a9cdf1f6991b3c4dfeede67c29141ef7e010f34635c95c9ab9c43b49a9f92", + "namingEvidenceSha256": "8eb4193e10401b17950a6d900b8ffb15ee5792deeb5908b39e6a29aa882d0992", + "namingSemanticSha256": "d72214a08c8ad4780243aa1c46c52b06347e78fe47909486ed4c7a7a359b5322" + } + }, + "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->pocket", + "phases": { + "initial": { + "namingEvidenceBytes": 4472, + "namingEvidenceSha256": "ff118840aba4ebdc140beb3586790fbebb6fa225a42b1e99f2609c5454e22196", + "pair": "fuse->pocket", + "shape": { + "area": 660, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 38, + "faces": 16, + "solids": 1, + "valid": true, + "vertices": 24, + "volume": 1045 + } + }, + "reopened": { + "namingEvidenceBytes": 4472, + "namingEvidenceSha256": "ff118840aba4ebdc140beb3586790fbebb6fa225a42b1e99f2609c5454e22196", + "pair": "fuse->pocket", + "shape": { + "area": 660, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 38, + "faces": 16, + "solids": 1, + "valid": true, + "vertices": 24, + "volume": 1045 + } + }, + "resaved": { + "namingEvidenceBytes": 4472, + "namingEvidenceSha256": "ff118840aba4ebdc140beb3586790fbebb6fa225a42b1e99f2609c5454e22196", + "pair": "fuse->pocket", + "shape": { + "area": 660, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 38, + "faces": 16, + "solids": 1, + "valid": true, + "vertices": 24, + "volume": 1045 + } + } + }, + "schemaVersion": 1, + "status": "pass" + } + }, + { + "taskId": "TSN-PAIR-fuse-loft", + "pair": "fuse->loft", + "classification": "rejected", + "reasonCode": "freecad-input-precondition-reject-with-kernel-diagnostic-and-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": "a8c49791319027adde4462940a01f0d38503ca8660790c1d461c25925fceb0a4", + "namingSemanticSha256": "ed827ba5065ddca163bca634b02d30a0dd9eb1f148b0437df4e178d29827baf6" + }, + "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": 660, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 29, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 18, + "volume": 1075 + }, + "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": "fuse->loft", + "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-pipe", + "pair": "fuse->pipe", + "classification": "rejected", + "reasonCode": "freecad-input-precondition-reject-with-kernel-diagnostic-and-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": "96f0c7103f8b7a1964a017e24c687b287b6c9e749e08deacc722776f88f40893", + "namingSemanticSha256": "dee4bbec7e0940a6035f6af3d22633f6ef0d1a574db0b5ba5872446e7ad6de15" + }, + "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": 660, + "bounds": [ + 0, + 0, + 0, + 13, + 10, + 10 + ], + "edges": 29, + "faces": 13, + "solids": 1, + "valid": true, + "vertices": 18, + "volume": 1075 + }, + "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": "fuse->pipe", + "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" + } + } } ], "summary": { "registeredOperations": 19, "orderedPairs": 361, - "classifiedPairs": 4, - "accepted": 4, - "rejected": 0, - "unknown": 357 + "classifiedPairs": 8, + "accepted": 5, + "rejected": 3, + "unknown": 353 } } diff --git a/config/freecad-web-exact-parity-plan.json b/config/freecad-web-exact-parity-plan.json index f59e2ba..eac320b 100644 --- a/config/freecad-web-exact-parity-plan.json +++ b/config/freecad-web-exact-parity-plan.json @@ -34,7 +34,7 @@ { "id": "EX-TSN-01", "title": "Capture native stage Shape and Generated/Modified/Deleted for every builder", "priority": "P0", "status": "completed", "dependencies": ["EX-KER-01", "EX-TSN-00"], "deliverables": ["All builder-stage captures", "Multi-input and one-to-many lineage", "Local feature recompute history"], "acceptance": ["Every feature result relation has a producing native stage", "No final-result index is applied to an intermediate Shape"], "evidence": ["check:freecad-composite-history-elementmap", "check:freecad-tsn-stage-evidence"], "exactBlockedBy": [] }, { "id": "EX-TSN-02", "title": "Expose native MappedNameRef and StringHasher decisions for every feature", "priority": "P0", "status": "completed", "dependencies": ["EX-TSN-01"], "deliverables": ["Native naming callback ABI", "Per-stage StringHasher evidence", "Lossless ElementMap2 token generation"], "acceptance": ["All new tokens originate in native evidence", "FreeCAD round-trip names remain byte and semantic stable"], "evidence": ["check:freecad-native-naming-evidence", "check:freecad-sketcher-partdesign-abi", "check:freecad-naming-sdk", "check:freecad-naming-production", "check:chrome-freecad-naming-production", "check:freecad-private-naming-boundary", "check:occt-history-artifact"], "exactBlockedBy": [] }, { "id": "EX-TSN-03", "title": "Resolve isomorphic topology only from unique native provenance", "priority": "P0", "status": "completed", "dependencies": ["EX-TSN-01", "EX-TSN-02"], "deliverables": ["Symmetric Boolean corpus", "Candidate provenance graph", "Ambiguity repair lifecycle"], "acceptance": ["Unique native sources resolve deterministically", "Non-unique sources remain ambiguous across save, undo and recompute"], "evidence": ["test:topology-replay", "test:facade", "check:freecad-isomorphic-provenance", "check:freecad-naming-production", "check:chrome-freecad-naming-production", "check:freecad-exact-history-elementmap-gate"], "exactBlockedBy": [] }, - { "id": "EX-TSN-04", "title": "Close topology naming across all feature edits and FCStd round-trips", "priority": "P0", "status": "in_progress", "dependencies": ["EX-TSN-02", "EX-TSN-03"], "deliverables": ["Cross-feature mutation matrix", "ElementMap2 history migration", "Long-chain LinkSub stability report"], "acceptance": ["Wrong bindings, unexplained relations and name drift are zero for the exhaustive corpus"], "evidence": ["check:freecad-isomorphic-provenance", "check:freecad-composite-history-elementmap", "check:freecad-tsn-stage-correlation", "check:freecad-fcstd-roundtrip", "check:freecad-exact-history-elementmap-gate", "check:freecad-recovered-naming-classification", "check:freecad-production-drift-classification", "check:freecad-ordered-operation-pairs"], "exactBlockedBy": ["The locked 30-case corpus passes 30/30 native property mutations, final-shape propagation and 219/219 geometry-stage restores; all 11 PartDesign recovered-naming cases/28 stages and both production restore-topology cases/5 stages are classified as allowed native evolution from independent deterministic replays with stable resave; the five-stage chain still has 3/5 generic Shape proxies and no registered rotate mutation family, while only 8/361 ordered operation pairs are classified and replayed"] } + { "id": "EX-TSN-04", "title": "Close topology naming across all feature edits and FCStd round-trips", "priority": "P0", "status": "in_progress", "dependencies": ["EX-TSN-02", "EX-TSN-03"], "deliverables": ["Cross-feature mutation matrix", "ElementMap2 history migration", "Long-chain LinkSub stability report"], "acceptance": ["Wrong bindings, unexplained relations and name drift are zero for the exhaustive corpus"], "evidence": ["check:freecad-isomorphic-provenance", "check:freecad-composite-history-elementmap", "check:freecad-tsn-stage-correlation", "check:freecad-fcstd-roundtrip", "check:freecad-exact-history-elementmap-gate", "check:freecad-recovered-naming-classification", "check:freecad-production-drift-classification", "check:freecad-ordered-operation-pairs"], "exactBlockedBy": ["The locked mutation and recovery corpora have zero unclassified drift, but the five-stage chain still contains generic Shape proxies, the registered rotate mutation family is open, and the ordered operation-pair matrix remains incomplete; current counts and the unique next task are generated from config/freecad-active-work-queue.json"] } ] }, { diff --git a/docs/current-work.zh-CN.md b/docs/current-work.zh-CN.md index cf4bc23..f86f20d 100644 --- a/docs/current-work.zh-CN.md +++ b/docs/current-work.zh-CN.md @@ -113,14 +113,9 @@ M3 不要求把 FreeCAD 本身拒绝的组合强行实现为顺序特征链。 ### 6.1 微任务队列 -机器真值为 `config/freecad-active-work-queue.json`,由 `generate:freecad-active-work-queue` 从原生报告生成,并由 `check:freecad-active-work-queue` fail-closed 校验。当前共 487 个微任务:134 `completed`、1 `in_progress`、352 `pending`;`maxInProgress=1`,唯一下一任务是 `TSN-PAIR-fuse-pad`。 +机器真值为 `config/freecad-active-work-queue.json`,由 `generate:freecad-active-work-queue` 从原生报告、Property 语义报告、exact 计划和后续进度账本生成,并由 `check:freecad-active-work-queue` fail-closed 校验。实时任务数、里程碑状态和唯一下一任务只发布在 `docs/freecad-active-work-status.generated.zh-CN.md`,本手写文档不再复制动态数字。 -| 微里程碑 | 任务粒度 | 数量 | 状态 | 下一退出条件 | -| --- | --- | ---: | --- | --- | -| `ORA-GUI-BASELINE` | 1 个配置边界或 1 个 GUI 命令分片 | 106 | 106 completed | 已关闭:100/100 分片、1111/1111 命令状态、2 个上下文延迟命令均有证据 | -| `ORA-GUI-WORKFLOWS` | 1 个命令族的 1 种工作流状态 | 7 | 7 completed | `PartDesign_Pad` 五态原生工作流、聚焦断言和 exact blocker 更新已关闭 | -| `TSN-RECOVERY-DRIFT` | 1 个原生 case 或 1 个生产 mutation | 13 | 13 completed | 11 个 PartDesign case 与生产 `cut`/`rotate` 漂移均已分类为允许演进 | -| `TSN-ORDERED-PAIRS` | 1 个有序操作对 | 361 | 8 completed / 1 in_progress / 352 pending | `fuse->rotate` 已关闭;当前只分类 `fuse->pad` | +队列现在覆盖 GUI oracle、TSN 漂移、全部有序操作对、逐 Property codec、Document 语义、核心建模、FCStd/格式、GUI 全量、文档/工程工作台、平台/脚本/代理和 QA/发布。每个后续能力拆为 A-I 九个串行任务;完成证据记录在 `config/freecad-follow-up-task-progress.json`,跳号、未知任务、空证据和第二个活动任务都会使生成器失败。 `ORA-GUI-WORKFLOWS` 已按七步关闭:选定命令族、成功、禁用、失败、取消、恢复、更新 blocker/门禁。一步只新增一种原生状态证据,前一步未通过时不启动后一步。 diff --git a/docs/freecad-active-work-status.generated.zh-CN.md b/docs/freecad-active-work-status.generated.zh-CN.md new file mode 100644 index 0000000..ce1d87d --- /dev/null +++ b/docs/freecad-active-work-status.generated.zh-CN.md @@ -0,0 +1,28 @@ + +# FreeCAD 后续工作机器状态 + +生成日期: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 +- Property:27/85 native types / 58 opaque types +- exact 任务:5/52 completed +- 模块能力:0 exact / 26 compatible / 5 proxy / 3 development + +| 里程碑 | 任务数 | completed | in_progress | pending | 当前任务 | +| --- | ---: | ---: | ---: | ---: | --- | +| `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` | +| `PROPERTY-CODECS` | 522 | 0 | 0 | 522 | `-` | +| `DOCUMENT-SEMANTICS` | 90 | 0 | 0 | 90 | `-` | +| `CORE-MODELING` | 171 | 0 | 0 | 171 | `-` | +| `FCSTD-AND-FORMATS` | 72 | 0 | 0 | 72 | `-` | +| `GUI-CLOSURE` | 135 | 0 | 0 | 135 | `-` | +| `DOCUMENT-ENGINEERING-WORKBENCHES` | 90 | 0 | 0 | 90 | `-` | +| `PLATFORM-SCRIPT-PROXY` | 117 | 0 | 0 | 117 | `-` | +| `QA-RELEASE` | 72 | 0 | 0 | 72 | `-` | + +详细任务、依赖、阶段、证据要求和退出条件见 `config/freecad-active-work-queue.json`。完成证据只能追加到 `config/freecad-follow-up-task-progress.json`,生成器会拒绝跳号、未知任务和无证据完成项。 diff --git a/docs/freecad-follow-up-execution-plan.zh-CN.md b/docs/freecad-follow-up-execution-plan.zh-CN.md new file mode 100644 index 0000000..a29792b --- /dev/null +++ b/docs/freecad-follow-up-execution-plan.zh-CN.md @@ -0,0 +1,55 @@ +# FreeCAD 后续工作细粒度执行计划 + +## 1. 机器真值 + +- `config/freecad-active-work-queue.json`:全部微任务、依赖、阶段、证据要求、退出条件和唯一活动任务。 +- `docs/freecad-active-work-status.generated.zh-CN.md`:由同一生成器产生的实时摘要;禁止手工编辑或在其他计划中复制动态数字。 +- `config/freecad-follow-up-task-progress.json`:A-I 后续任务的完成证据账本;只能追加连续前缀。 +- `config/freecad-ordered-operation-pair-classification.json`:19×19 操作对的原生接受/拒绝事实。 + +`./npmw run generate:freecad-active-work-queue` 同时生成队列和状态页;`./npmw run check:freecad-active-work-queue` 对两个产物 fail-closed。任何时刻必须恰好有一个 `in_progress` 任务。 + +## 2. 里程碑顺序 + +1. `ORA-GUI-BASELINE`:原生 GUI 命令清册和隔离探针。 +2. `ORA-GUI-WORKFLOWS`:命令族成功、禁用、失败、取消和恢复。 +3. `TSN-RECOVERY-DRIFT`:恢复命名与生产拓扑漂移分类。 +4. `TSN-ORDERED-PAIRS`:19×19 操作对逐对接受/拒绝、变异、命名和往返。 +5. `PROPERTY-CODECS`:从原生语义报告自动枚举所有 opaque Property 类型。 +6. `DOCUMENT-SEMANTICS`:observer、事务、DAG、失败恢复、Extension、FeaturePython 和多文档。 +7. `CORE-MODELING`:19 个生产建模操作的纵向闭环。 +8. `FCSTD-AND-FORMATS`:FCStd 资源、对抗输入和 STEP/IGES/BREP 双向往返。 +9. `GUI-CLOSURE`:应用壳、MDI、树、Task、属性编辑器、对话框、焦点、选择和响应式无障碍。 +10. `DOCUMENT-ENGINEERING-WORKBENCHES`:Draft、Spreadsheet、TechDraw、Plot、Assembly、BIM、Surface、Mesh 和 Material。 +11. `PLATFORM-SCRIPT-PROXY`:FEM、CAM、Robot、数据模块、Python/Macro、Addon 及正式代理边界。 +12. `QA-RELEASE`:浏览器/OS/GPU、无障碍/locale、fuzz/长稳、资源、签名发布和 exact promotion。 + +前一里程碑未完成时,后一里程碑全部保持 `pending`。只读 oracle 可以准备,但不能写入第二个活动任务或提前提升能力。 + +## 3. 每个能力的九个最小任务 + +| 阶段 | 单一交付物 | 退出条件 | +| --- | --- | --- | +| 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 全过,聚焦门禁与 exact blocker 由机器报告同步 | + +每个阶段只允许一个主要产物和一个聚焦检查。缺少任一阶段时,能力最多保持 `compatible` 或既有的显式 proxy 等级。 + +## 4. 单轮执行协议 + +1. 读取队列的 `nextTask`,确认依赖和输入 artifact 哈希。 +2. 只修改该任务直接需要的 oracle、实现、检查器和报告。 +3. 先运行原生 probe 或真实浏览器 test,再运行对应只读 check。 +4. 验证 Shape/Worker/OPFS 等资源回到基线,失败不污染文档。 +5. 运行相关 Facade、FCStd、TSN/执行计划门禁。 +6. 仅在退出条件全部满足后记录完成证据并重新生成队列。 +7. 运行 `git diff --check`、全部 JSON 解析和与风险相称的回归;发布点运行完整 `./npmw run verify`。 + +原生拒绝是有效分类,不应被强行实现为接受;但必须固定失败阶段、诊断、事务回滚和干净往返。原生接受则必须使用真实 builder,不能用通用 Shape 代理冒充。 diff --git a/docs/freecad-web-execution-master-plan.zh-CN.md b/docs/freecad-web-execution-master-plan.zh-CN.md index df3d755..998a5ee 100644 --- a/docs/freecad-web-execution-master-plan.zh-CN.md +++ b/docs/freecad-web-execution-master-plan.zh-CN.md @@ -50,29 +50,14 @@ - Property status:15 类已观察状态均已进入类型化 Facade 行为;`LockDynamic` 和 `PartialTrigger` 已有原生事务证据,但完整 observer 与局部重算序列未关闭。 - TSN:30/30 原生 mutation、219/219 几何阶段恢复通过;11 个 PartDesign case/28 个恢复命名阶段均已通过第二次独立原生复跑分类为允许演进。 - 生产命名链:五阶段 5/5 几何恢复,2 个恢复拓扑 case/5 个下游阶段已分类为允许演进;仍有 3/5 通用 Shape 代理并缺注册 rotate mutation family。 -- 有序操作:19×19 共 361 对,8 对已有分类回放,353 对待原生接受/拒绝判定。 +- 有序操作:19×19 的逐对分类持续执行;实时已完成数、未知数和唯一活动项只从生成状态读取。 - FCStd:支持的原生 codec 与未知资源保留已有证据,但所有对象/属性/Extension/Shape/ElementMap2/StringHasher 的 FreeCAD-Web-FreeCAD 双向变异未穷尽。 - GUI:应用壳和代表性工作流已有浏览器证据,但动态命令、Task、对话框、焦点、上下文和逐工作台流程没有完整原生对照。 - 发布:系统级 exact 为 false,`EX-REL-01` 为 pending,跨浏览器、长期运行和全模块 exact promotion 尚未开始。 ### 2.4 可机器核对的完成度仪表盘 -| 范围 | 当前值 | 已完成代表什么 | 下一个可关闭单元 | -| --- | --- | --- | --- | -| 兼容实现计划 | 83/83 completed | 已有可运行 Web 实现、门禁和能力边界 | 不再用该数字表示 exact 进度 | -| exact 计划 | 5/52 completed,36 in_progress,11 pending | 仅 `EX-TSN-00..03` 与 `EX-PD-02` 达到自身验收范围 | `EX-TSN-04` 的恢复漂移与有序组合 | -| 模块能力 | 0 exact / 26 compatible / 5 proxy / 3 development | 34 模块均有明确对外等级,无 unexplained | 任一模块提升前必须关闭其 exact task | -| 原生 GUI 清册 | 1111 runtime / 19 source-only / 2 context-only | 命令 ID 和三种激活上下文已分类 | 选择下一命令族并逐个关闭五态 | -| Pad GUI 工作流 | 7/7 completed | success/disabled/failure/cancel/recovery 和 blocker 已对齐 | 不因单命令族完成而关闭 `EX-ORA-01` | -| TSN 30-case corpus | 30/30 mutation,219/219 几何恢复 | 几何传播与恢复已闭环 | 逐 case 解释 11 个命名漂移 | -| TSN 恢复命名 | 11/11 case,28/28 stage 已分类 | 全部具备第二次原生复跑与稳定 resave | 已关闭该队列,保持分类门禁 | -| 生产五阶段链 | 5/5 几何恢复,2/2 漂移 case 已分类,2/5 原生 builder | 漂移已解释且不错绑 | 逐 stage 去代理并补 rotate mutation family | -| 19x19 有序组合 | 8/361 已分类回放 | 4 条五阶段转换与 4 条 `fuse->*` 已覆盖 | `TSN-PAIR-fuse-pad` | -| Property codec | 27/85 类原生 codec,58 类 opaque | 4987/5510 记录可结构化处理 | 按 M04 顺序一次关闭 1 类 | -| FCStd | 23 个往返场景,未知差异 0 | 已支持范围内的当前样本稳定 | 对每种对象/Property/资源做双向 mutation | -| 活动微任务 | 487 项:134 completed / 1 in_progress / 352 pending | 队列满足 `maxInProgress=1` | 只允许执行 `TSN-PAIR-fuse-pad` | - -仪表盘的任何数字变化都必须由配置/报告生成器证明;文档不能单独改变状态。 +实时仪表盘为 `docs/freecad-active-work-status.generated.zh-CN.md`,由 `generate:freecad-active-work-queue` 同活动队列一起生成,并由 `check:freecad-active-work-queue` 逐字校验。此处不再复制任务数、完成数、操作对覆盖数、Property 覆盖数或下一任务;任何手工状态摘要均不具备治理效力。 ## 3. 目标架构和不可破坏边界 @@ -161,7 +146,7 @@ FCStd / STEP / IGES / mesh / CAM / engineering resources 每项必须得到且只能得到一种结论:FreeCAD 稳定语义、允许的命名演进、实现缺陷。实现缺陷必须增加回归测试;未知不能作为结论。 -每个 case 再拆成六个不计入 487 项队列总数、但必须依次完成的最小检查点: +每个 case 再拆成六个必须依次完成的最小检查点;后续能力的 A-I 检查点已经全部进入生成队列: | 检查点 | 唯一产物 | fail-closed 验收 | | --- | --- | --- | @@ -174,7 +159,7 @@ FCStd / STEP / IGES / mesh / CAM / engineering resources 任一检查点失败时,当前任务保持 `in_progress`,不得领取下一 case。如果分类为 `implementation_defect`,还必须在同一队列项内完成最小修复、回归测试、原生/Web 对照和资源释放,不另行跳过。 -### 5.4 TSN 有序操作对,361 项,8 完成/1 进行中/352 待办 +### 5.4 TSN 有序操作对 操作全集为 Fuse、Cut、Common、Rotate、Pad、Pocket、Loft、Pipe、Revolution、Groove、Fillet、Chamfer、Hole、Draft、Thickness、LinearPattern、PolarPattern、Mirrored、MultiTransform。 @@ -189,7 +174,7 @@ FCStd / STEP / IGES / mesh / CAM / engineering resources 7. 在生产 Worker 回放并检查释放。 8. 拒绝时固定原生错误类型和文档未污染证据。 -已覆盖的八对为 `cut->rotate`、`rotate->fillet`、`fillet->mirrored`、`mirrored->linear-pattern`、`fuse->fuse`、`fuse->cut`、`fuse->common`、`fuse->rotate`。当前只处理 `fuse->pad`,其余严格按机器队列逐对领取。 +初始五阶段转换和 `fuse->*` 连续前缀均已进入机器分类账本;实时覆盖集合与当前操作对严格从生成状态和 `config/freecad-ordered-operation-pair-classification.json` 读取,其余逐对领取。 ## 6. 后续关键路径微里程碑 @@ -227,7 +212,7 @@ FCStd / STEP / IGES / mesh / CAM / engineering resources ### M03 `EX-TSN-04B` builder 与 19×19 转换矩阵 -状态:`in_progress`;已覆盖 8/361 对,当前执行 `TSN-PAIR-fuse-pad`。 +状态:`in_progress`;实时覆盖数和当前操作对见生成状态。 - M03.1:用真实 builder 替换五阶段链中 Cut 之后的通用 Shape 代理,一次替换一个 stage。 - M03.2:增加 Rotate 原生 mutation family。 @@ -422,6 +407,6 @@ M00 `TSN-DRIFT-003` 已完成:`partdesign-taper` 的 `Length 6 -> 6.75 -> 6` 在 Body13 和 Pad13 两个阶段恢复相同几何,关系与语义命名摘要演进为新的稳定历史。锁定报告与第二次独立 FreeCAD 1.1.1 复跑的逐阶段摘要一致,演进值在 save/reopen/resave 中保持,因此同样分类为 `allowed_evolution`,不是 Web 实现缺陷。 -`TSN-DRIFT-004..010` 与生产 `cut`/`rotate` 漂移均已完成独立复跑,并唯一分类为 `allowed_evolution`;恢复漂移队列因此以 13/13 关闭。`fuse->fuse`、`fuse->cut`、`fuse->common`、`fuse->rotate` 的新增分类与既有五阶段四条转换合计覆盖 8/361 对。 +`TSN-DRIFT-004..010` 与生产 `cut`/`rotate` 漂移均已完成独立复跑,并唯一分类为 `allowed_evolution`;恢复漂移队列因此关闭。 -当前唯一下一任务为 `TSN-PAIR-fuse-pad`。退出条件是记录原生接受或拒绝;接受时必须具备真实 builder、mutation/restore、history/naming 与 FreeCAD save/reopen/resave 证据,拒绝时必须固定原生错误与无文档污染证据。 +`fuse->pad` 已由原生 OCCT builder 和 FreeCAD `PartDesign::Pad` 文档路径稳定拒绝,事务 abort 后对象集与源 Shape 恢复,干净 FCStd save/reopen/resave 不受污染。`fuse->pocket` 已由真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 接受,长度变异与恢复、history/naming 和 FCStd 三阶段均通过。唯一下一任务不在此手工记录,只读取生成状态。 diff --git a/scripts/check-freecad-ordered-operation-pair-classification.mjs b/scripts/check-freecad-ordered-operation-pair-classification.mjs index a4fa5c5..7c5adc4 100644 --- a/scripts/check-freecad-ordered-operation-pair-classification.mjs +++ b/scripts/check-freecad-ordered-operation-pair-classification.mjs @@ -18,25 +18,54 @@ for (const artifact of report.nativeProbe?.artifacts ?? []) { if (bytes !== artifact.bytes || sha256(content) !== artifact.sha256) fail(`${artifact.name} provenance is stale.`) } const expectedPairs = [ - { pair: 'fuse->fuse', secondBuilder: 'BRepAlgoAPI_Fuse', secondInputCount: 2, mutationParameter: 'toolOffsetX', mutationTrajectory: [12, 11, 12] }, - { pair: 'fuse->cut', secondBuilder: 'BRepAlgoAPI_Cut', secondInputCount: 2, mutationParameter: 'toolSize', mutationTrajectory: [4, 3, 4] }, - { pair: 'fuse->common', secondBuilder: 'BRepAlgoAPI_Common', secondInputCount: 2, mutationParameter: 'toolOffsetX', mutationTrajectory: [10, 9, 10] }, - { pair: 'fuse->rotate', secondBuilder: 'BRepBuilderAPI_Transform', secondInputCount: 1, mutationParameter: 'angle', mutationTrajectory: [15, 22.5, 15] }, + { pair: 'fuse->fuse', decision: 'accepted', reasonCode: 'native-builders-mutation-naming-and-fcstd-resave-pass', secondBuilder: 'BRepAlgoAPI_Fuse', secondInputCount: 2, mutationParameter: 'toolOffsetX', mutationTrajectory: [12, 11, 12] }, + { 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->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' }, ] 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 !== 'accepted' || entry.nativeDecision !== 'accepted' || entry.first?.operation !== 'fuse' || entry.first.builder !== 'BRepAlgoAPI_Fuse' || entry.first.inputCount !== 2 || entry.second?.operation !== secondOperation || entry.second.builder !== expected.secondBuilder || entry.second.inputCount !== expected.secondInputCount || entry.first.historyProvider !== 'occt-native' || entry.second.historyProvider !== 'occt-native') fail(`${expected.pair} decision contract is invalid.`) - if (entry.first.summary?.isValid !== true || entry.second.summary?.isValid !== true || entry.first.historyRecords < 1 || entry.second.historyRecords < 1 || entry.mutation?.changed !== true || entry.mutation?.restoredExactly !== true) fail(`${expected.pair} builder or mutation evidence is incomplete.`) + 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.`) + 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 + if (rejection?.scope !== 'second-operation-only' || rejection.authority !== expected.rejectionAuthority || rejection.parameter !== expected.mutationParameter || JSON.stringify(rejection.trajectory) !== JSON.stringify(expected.mutationTrajectory)) fail(`${expected.pair} rejection trajectory is invalid.`) + if (expected.rejectionAuthority === 'occt-builder') { + if (rejection.stable !== true || rejection.attempts?.length !== 3) fail(`${expected.pair} OCCT rejection is unstable.`) + for (const [attemptIndex, attempt] of rejection.attempts.entries()) { + if (attempt.operation !== secondOperation || attempt.builder !== expected.secondBuilder || attempt.inputCount !== expected.secondInputCount || attempt.parameter !== expected.mutationParameter || attempt.parameterValue !== expected.mutationTrajectory[attemptIndex] || attempt.runtime !== 'occt-native' || attempt.outcome !== 'rejected' || attempt.resultProduced !== false || attempt.shapeProduced !== false || attempt.historyProduced !== false || attempt.rejectionStage !== 'builder' || attempt.exceptionTransport !== 'emscripten-cpp-exception' || attempt.thrownType !== 'number') fail(`${expected.pair} OCCT attempt ${attemptIndex} is invalid.`) + for (const absent of ['summary', 'historyProvider', 'historyRecords', 'historySha256', 'namingStatus', 'namingEvidenceSha256', 'namingSemanticSha256', 'resultStep', 'resultBrep', 'shape', 'history']) if (absent in attempt) fail(`${expected.pair} OCCT attempt ${attemptIndex} fabricates ${absent}.`) + } + } else { + if (rejection.kernelRestoredExactly !== true || rejection.kernelAttempts?.length !== 3) fail(`${expected.pair} OCCT diagnostic trajectory is incomplete.`) + for (const [attemptIndex, attempt] of rejection.kernelAttempts.entries()) if (attempt.operation !== secondOperation || attempt.builder !== expected.secondBuilder || attempt.inputCount !== expected.secondInputCount || attempt.parameter !== expected.mutationParameter || attempt.parameterValue !== expected.mutationTrajectory[attemptIndex] || attempt.runtime !== 'occt-native' || attempt.outcome !== expected.kernelOutcome || attempt.resultProduced !== true || attempt.shapeProduced !== true || attempt.validShapeProduced !== (expected.kernelOutcome === 'accepted') || attempt.historyProduced !== true || attempt.historyProvider !== 'occt-native' || attempt.summary?.isValid !== (expected.kernelOutcome === 'accepted') || attempt.historyRecords < 1 || !attempt.historySha256 || attempt.authority !== (expected.kernelOutcome === 'accepted' ? 'kernel-superset-only' : 'kernel-invalid-result')) fail(`${expected.pair} OCCT compatibility attempt ${attemptIndex} is invalid.`) + } + const persistence = rejection.persistence + 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 (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.`) + 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.`) + if (entry.second.summary?.isValid !== true || entry.second.historyRecords < 1 || entry.mutation?.changed !== true || entry.mutation?.restoredExactly !== true) fail(`${expected.pair} builder or mutation evidence is incomplete.`) if (entry.mutation.scope !== 'second-operation-only' || entry.mutation.parameter !== expected.mutationParameter || JSON.stringify(entry.mutation.trajectory) !== JSON.stringify(expected.mutationTrajectory) || entry.mutation.beforeValue !== expected.mutationTrajectory[0] || entry.mutation.editedValue !== expected.mutationTrajectory[1] || entry.mutation.restoredValue !== expected.mutationTrajectory[2]) fail(`${expected.pair} mutation trajectory is invalid.`) if (entry.mutation.editedEvidence?.operation !== secondOperation || entry.mutation.restoredEvidence?.operation !== secondOperation || entry.mutation.editedEvidence?.builder !== expected.secondBuilder || entry.mutation.restoredEvidence?.builder !== expected.secondBuilder || entry.mutation.editedEvidence?.inputCount !== expected.secondInputCount || entry.mutation.restoredEvidence?.inputCount !== expected.secondInputCount || entry.mutation.editedEvidence?.historyProvider !== 'occt-native' || entry.mutation.restoredEvidence?.historyProvider !== 'occt-native') fail(`${expected.pair} mutation history provider is invalid.`) if (entry.second.namingSemanticSha256 !== entry.mutation.restoredEvidence?.namingSemanticSha256) fail(`${expected.pair} semantic naming evidence did not restore to nominal.`) if (entry.naming?.upstreamEvidenceRestored !== true || entry.naming?.downstreamEvidence !== true || entry.naming?.jsonRoundtripStable !== true) fail(`${expected.pair} naming evidence is incomplete.`) - if (entry.persistence?.status !== 'pass' || entry.persistence.pair !== entry.pair || entry.persistence.freecadVersion !== '1.1.1' || !Object.values(entry.persistence.checks ?? {}).every(Boolean)) fail(`${expected.pair} FCStd persistence evidence is incomplete.`) + if (entry.persistence?.status !== 'pass' || entry.persistence.decision !== 'accepted' || entry.persistence.pair !== entry.pair || entry.persistence.freecadVersion !== '1.1.1' || !Object.values(entry.persistence.checks ?? {}).every(Boolean)) fail(`${expected.pair} FCStd persistence evidence is incomplete.`) 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: 4, accepted: 4, rejected: 0, unknown: 357 } +const expectedSummary = { registeredOperations: 19, orderedPairs: 361, classifiedPairs: 8, accepted: 5, rejected: 3, unknown: 353 } 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 02ff869..5331871 100644 --- a/scripts/freecad-ordered-operation-pair-resave.py +++ b/scripts/freecad-ordered-operation-pair-resave.py @@ -14,12 +14,11 @@ def version_text(): return ".".join(str(value) for value in App.Version()[:3]) -def shape_snapshot(feature): - shape = feature.Shape +def shape_snapshot_from_shape(shape, include_brep=False): if shape.isNull(): raise RuntimeError("ordered pair produced a null Shape") bounds = shape.BoundBox - return { + snapshot = { "valid": bool(shape.isValid()), "solids": len(shape.Solids), "faces": len(shape.Faces), @@ -29,6 +28,15 @@ def shape_snapshot(feature): "area": round(float(shape.Area), 7), "bounds": [round(float(value), 7) for value in (bounds.XMin, bounds.YMin, bounds.ZMin, bounds.XMax, bounds.YMax, bounds.ZMax)], } + if include_brep: + brep = shape.exportBrepToString() + brep_bytes = brep.encode("utf-8") if isinstance(brep, str) else bytes(brep) + snapshot["brepSha256"] = hashlib.sha256(brep_bytes).hexdigest() + return snapshot + + +def shape_snapshot(feature): + return shape_snapshot_from_shape(feature.Shape) def phase_snapshot(document): @@ -44,7 +52,35 @@ def phase_snapshot(document): } -def collect(): +def document_snapshot(document): + return { + "objects": [{ + "name": obj.Name, + "typeId": obj.TypeId, + **({"shape": shape_snapshot(obj)} if hasattr(obj, "Shape") and not obj.Shape.isNull() else {}), + } for obj in document.Objects], + } + + +def object_set_snapshot(document): + return [{"name": obj.Name, "typeId": obj.TypeId} for obj in document.Objects] + + +def link_snapshot(value): + linked = value + subelements = [] + if isinstance(value, tuple): + linked = value[0] + if len(value) > 1: + subelements = [str(item) for item in value[1]] + return { + "name": linked.Name if linked is not None else None, + "typeId": linked.TypeId if linked is not None else None, + "subelements": subelements, + } + + +def collect_accepted(): step_path = os.environ["FREECAD_PAIR_STEP_PATH"] evidence_path = os.environ["FREECAD_PAIR_EVIDENCE_PATH"] pair = os.environ["FREECAD_ORDERED_PAIR"] @@ -85,6 +121,7 @@ def collect(): "freecadVersion": version_text(), "gitCommit": FREECAD_COMMIT, "pair": pair, + "decision": "accepted", "phases": {"initial": initial, "reopened": reopened_snapshot, "resaved": resaved_snapshot}, "checks": { "shapeStable": initial["shape"] == reopened_snapshot["shape"] and initial["shape"] == resaved_snapshot["shape"], @@ -97,8 +134,162 @@ def collect(): App.closeDocument(name) +def collect_rejected(): + step_path = os.environ["FREECAD_PAIR_STEP_PATH"] + pair = os.environ["FREECAD_ORDERED_PAIR"] + operation = pair.split("->", 1)[1] + output_directory = os.environ["FREECAD_PAIR_OUTPUT_DIRECTORY"] + document = App.newDocument("FreeCadOrderedPairRejection") + try: + Import.insert(step_path, document.Name) + document.recompute() + source_objects = [obj for obj in document.Objects if hasattr(obj, "Shape") and not obj.Shape.isNull()] + if len(source_objects) != 1: + raise RuntimeError("Fuse STEP import must produce exactly one Shape object") + source = source_objects[0] + if len(source.Shape.Solids) != 1: + raise RuntimeError("Fuse STEP import did not produce one Solid") + if source.Shape.isNull(): + raise RuntimeError("STEP import produced no Shape") + source_name = source.Name + source_type_id = source.TypeId + document.UndoMode = 1 + baseline = document_snapshot(document) + baseline_objects = object_set_snapshot(document) + baseline_source_shape = shape_snapshot_from_shape(source.Shape, include_brep=True) + diagnostic = { + "exceptionType": None, + "exception": None, + "recomputeResult": None, + "statusString": None, + "state": [], + "shapeNull": True, + "shapeValid": False, + } + document.openTransaction("ordered-pair-rejection") + try: + if operation == "pad": + body = document.addObject("PartDesign::Body", "Body") + feature = body.newObject("PartDesign::Pad", "PairResult") + feature.Profile = source + feature.Length = 5.0 + diagnostic["parameter"] = {"name": "length", "value": round(float(feature.Length), 7)} + diagnostic["input"] = link_snapshot(feature.Profile) + elif operation == "loft": + section = document.addObject("Part::Feature", "Section") + section.Shape = Part.makePolygon([ + App.Vector(0.0, 0.0, 15.0), + App.Vector(2.0, 0.0, 15.0), + App.Vector(2.0, 3.0, 15.0), + App.Vector(0.0, 3.0, 15.0), + App.Vector(0.0, 0.0, 15.0), + ]) + feature = document.addObject("Part::Loft", "PairResult") + feature.Sections = [source, section] + feature.Solid = True + feature.Ruled = False + diagnostic["parameter"] = {"name": "ruled", "value": bool(feature.Ruled)} + diagnostic["input"] = { + "sections": [{"name": item.Name, "typeId": item.TypeId} for item in feature.Sections], + } + elif operation == "pipe": + spine = document.addObject("Part::Feature", "Spine") + spine.Shape = Part.makePolygon([App.Vector(0.0, 0.0, 0.0), App.Vector(0.0, 0.0, 15.0)]) + feature = document.addObject("Part::Sweep", "PairResult") + feature.Sections = [source] + feature.Spine = spine + feature.Solid = True + feature.Frenet = False + diagnostic["parameter"] = {"name": "spineLength", "value": 15.0} + diagnostic["input"] = { + "sections": [{"name": item.Name, "typeId": item.TypeId} for item in feature.Sections], + "spine": link_snapshot(feature.Spine), + } + else: + raise RuntimeError("Unsupported rejected ordered-pair operation: " + operation) + diagnostic["nativeTypeId"] = feature.TypeId + diagnostic["inputShape"] = shape_snapshot_from_shape(source.Shape) + diagnostic["objects"] = object_set_snapshot(document) + try: + diagnostic["recomputeResult"] = bool(document.recompute()) + except Exception as error: + diagnostic["exceptionType"] = type(error).__name__ + diagnostic["exception"] = str(error) + diagnostic["statusString"] = str(feature.getStatusString()) + diagnostic["state"] = [str(value) for value in feature.State] + diagnostic["shapeNull"] = bool(feature.Shape.isNull()) + diagnostic["shapeValid"] = False if feature.Shape.isNull() else bool(feature.Shape.isValid()) + finally: + document.abortTransaction() + document.recompute() + initial = document_snapshot(document) + restored_objects = object_set_snapshot(document) + restored_source = document.getObject(source_name) + if restored_source is None or not hasattr(restored_source, "Shape") or restored_source.Shape.isNull(): + raise RuntimeError("Fuse source Shape is absent after transaction abort") + restored_source_shape = shape_snapshot_from_shape(restored_source.Shape, include_brep=True) + initial_path = os.path.join(output_directory, "ordered-pair-rejection.FCStd") + resaved_path = os.path.join(output_directory, "ordered-pair-rejection-resaved.FCStd") + document.saveAs(initial_path) + App.closeDocument(document.Name) + reopened = App.openDocument(initial_path) + reopened.recompute() + reopened_snapshot = document_snapshot(reopened) + reopened.saveAs(resaved_path) + App.closeDocument(reopened.Name) + resaved = App.openDocument(resaved_path) + resaved.recompute() + resaved_snapshot = document_snapshot(resaved) + App.closeDocument(resaved.Name) + feature_rejected = diagnostic["shapeNull"] and ( + diagnostic["exceptionType"] is not None + or diagnostic["recomputeResult"] is False + or diagnostic["statusString"] != "Valid" + 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", [])] + checks = { + "nativeFeatureConstructed": diagnostic.get("nativeTypeId") == expected_type_id, + "fuseSolidUsedAsInput": source_name in input_names and diagnostic.get("inputShape", {}).get("solids") == 1, + "recomputeStatusCaptured": diagnostic["recomputeResult"] is not None or diagnostic["exceptionType"] is not None, + "nativeFeatureRejected": feature_rejected, + "objectSetRestored": baseline_objects == restored_objects, + "sourceShapeRestored": baseline_source_shape == restored_source_shape, + "documentUnpolluted": baseline == initial, + "documentStable": initial == reopened_snapshot and initial == resaved_snapshot, + } + return { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1-ordered-operation-pair-resave", + "freecadVersion": version_text(), + "gitCommit": FREECAD_COMMIT, + "pair": pair, + "decision": "rejected", + "operation": operation, + "nativeTypeId": expected_type_id, + "source": { + "name": source_name, + "typeId": source_type_id, + "shape": baseline_source_shape, + }, + "diagnostic": diagnostic, + "rollback": { + "before": {"objects": baseline_objects, "sourceShape": baseline_source_shape}, + "after": {"objects": restored_objects, "sourceShape": restored_source_shape}, + }, + "phases": {"initial": initial, "reopened": reopened_snapshot, "resaved": resaved_snapshot}, + "checks": checks, + "status": "pass" if all(checks.values()) else "failed", + } + finally: + for name in list(App.listDocuments().keys()): + App.closeDocument(name) + + try: - report = collect() + report = collect_rejected() if os.environ.get("FREECAD_PAIR_DECISION") == "rejected" else collect_accepted() except Exception as error: report = { "schemaVersion": 1, diff --git a/scripts/generate-freecad-active-work-queue.mjs b/scripts/generate-freecad-active-work-queue.mjs index 6c29322..0216477 100644 --- a/scripts/generate-freecad-active-work-queue.mjs +++ b/scripts/generate-freecad-active-work-queue.mjs @@ -3,8 +3,9 @@ import { resolve } from 'node:path' const root = resolve(new URL('..', import.meta.url).pathname) const outputPath = resolve(root, 'config/freecad-active-work-queue.json') +const statusOutputPath = resolve(root, 'docs/freecad-active-work-status.generated.zh-CN.md') const load = (path) => readFile(resolve(root, path), 'utf8').then(JSON.parse) -const [gui, workflowPlan, composite, correlation, production, recoveredNaming, productionDriftClassification, orderedPairClassification] = await Promise.all([ +const [gui, workflowPlan, composite, correlation, production, recoveredNaming, productionDriftClassification, orderedPairClassification, propertySemantics, exactPlan, platformCoverage, followUpProgress] = await Promise.all([ load('.cache/freecad/reference-desktop-gui-commands.json'), load('config/freecad-gui-workflow-plan.json'), load('config/freecad-composite-history-elementmap-oracle.json'), @@ -13,6 +14,10 @@ const [gui, workflowPlan, composite, correlation, production, recoveredNaming, p load('config/freecad-recovered-naming-classification.json'), load('config/freecad-production-drift-classification.json'), load('config/freecad-ordered-operation-pair-classification.json'), + load('config/freecad-native-property-semantics.json'), + load('config/freecad-web-exact-parity-plan.json'), + load('config/platform-module-coverage.json'), + load('config/freecad-follow-up-task-progress.json'), ]) const guiShardTasks = gui.guiCommands.mergedShards.map((shard, index) => ({ @@ -108,6 +113,127 @@ const transitionTasks = production.operations.flatMap((from) => production.opera } })) +const completionSteps = [ + { id: 'A', title: 'Lock native inventory and preconditions', exit: 'the native TypeId, inputs, defaults, dependencies and applicability are machine recorded' }, + { id: 'B', title: 'Capture native success evidence', exit: 'nominal and boundary successes record values, Shape, topology, status and diagnostics' }, + { id: 'C', title: 'Capture native failure and cancel evidence', exit: 'invalid input, disabled state, cancellation and document non-pollution are reproducible' }, + { id: 'D', title: 'Capture parameter mutation and restore evidence', exit: 'edit, recompute and restore return geometry and semantics to the classified native state' }, + { id: 'E', title: 'Implement the Facade capability', exit: 'the production Facade uses the declared native or explicit proxy path without hidden fallback' }, + { id: 'F', title: 'Close transaction and recovery behavior', exit: 'abort, undo, redo, stale, failure and resource ownership return to the expected state' }, + { id: 'G', title: 'Close FCStd save, reopen and resave', exit: 'FreeCAD to Web to FreeCAD persistence has zero unknown semantic drift' }, + { id: 'H', title: 'Replay in a real browser', exit: 'Chrome Worker, OPFS, UI state and resource release evidence pass' }, + { id: 'I', title: 'Promote capability and synchronize blockers', exit: 'all eight evidence tasks pass and machine reports alone advance the capability level' }, +] +const slug = (value) => value.replaceAll('::', '-').replace(/[^A-Za-z0-9]+/g, '-').replace(/^-|-$/g, '').toLowerCase() +const makeCapabilityTasks = (prefix, capabilities, firstDependency) => { + const tasks = [] + for (const capability of capabilities) { + for (const step of completionSteps) { + const id = `${prefix}-${slug(capability.id)}-${step.id}` + const previous = tasks.at(-1)?.id + tasks.push({ + id, + title: `${step.title}: ${capability.title}`, + status: 'pending', + dependencies: [previous ?? firstDependency], + capability: capability.id, + phase: step.id, + ...(capability.recordCount === undefined ? {} : { recordCount: capability.recordCount }), + evidenceRequired: step.id === 'I' ? ['all-prior-phases-pass', 'focused-check', 'exact-blocker-sync'] : ['one-native-or-production-artifact', 'one-focused-check'], + exit: step.exit, + }) + } + } + return tasks +} +const propertyCapabilities = propertySemantics.types + .filter(({ support }) => support === 'opaque-fcstd-proxy') + .map(({ typeId, recordCount }) => ({ id: typeId, title: typeId, recordCount })) +if (propertyCapabilities.length !== propertySemantics.supportSummary?.['opaque-fcstd-proxy']?.typeCount) throw new Error('Opaque Property capability inventory is inconsistent.') + +const followUpMilestoneDefinitions = [ + { + id: 'PROPERTY-CODECS', exactTasks: ['EX-DOC-01'], title: 'Close every opaque Property type', prefix: 'PROP', capabilities: propertyCapabilities, + }, + { + id: 'DOCUMENT-SEMANTICS', exactTasks: ['EX-DOC-02', 'EX-DOC-03', 'EX-DOC-04'], title: 'Close document, transaction and lifecycle semantics', prefix: 'DOC', capabilities: [ + ['observer-object-order', 'Object add/remove/rename observer order'], + ['observer-property-order', 'Property add/remove/rename/change observer order'], + ['nested-transactions', 'Nested commit/abort/undo/redo transactions'], + ['dag-partial-recompute', 'DAG dirty propagation and partial recompute'], + ['recompute-failure-recovery', 'Last-valid Shape and diagnostic recovery'], + ['partial-document-load', 'Partial document load and PartialTrigger'], + ['object-lifecycle', 'Copy/clone/delete/relink/group lifecycle'], + ['extension-lifecycle', 'Extension schema, migration and unknown preservation'], + ['feature-python-boundary', 'FeaturePython proxy, signature and execution boundary'], + ['multi-document-links', 'External links, close/reopen, merge and recovery'], + ].map(([id, title]) => ({ id, title })), + }, + { + id: 'CORE-MODELING', exactTasks: ['EX-KER-01', 'EX-SK-01', 'EX-SK-02', 'EX-PART-01', 'EX-PD-01'], title: 'Close core modeling operations', prefix: 'CORE', capabilities: production.operations.map((operation) => ({ id: operation, title: `core operation ${operation}` })), + }, + { + id: 'FCSTD-AND-FORMATS', exactTasks: ['EX-FC-01', 'EX-FMT-01', 'EX-FMT-02', 'EX-FMT-03', 'EX-FMT-04'], title: 'Close FCStd and interchange formats', prefix: 'IO', capabilities: [ + ['fcstd-readonly-roundtrip', 'FCStd unchanged object and Property round-trip'], + ['fcstd-edited-roundtrip', 'Web edit, FreeCAD reopen/resave and Web reopen'], + ['fcstd-shape-resources', 'Shape, ElementMap2, StringHasher, Expression and GuiDocument resources'], + ['fcstd-unknown-resources', 'Unknown XML, BRep, script and Extension preservation'], + ['fcstd-adversarial-input', 'Corrupt ZIP, traversal, compression limit and cancellation'], + ['step', 'STEP units, colors, layers, names, assemblies and metadata'], + ['iges', 'IGES units, colors, layers, names, assemblies and metadata'], + ['brep', 'BREP tolerance, topology and editable round-trip'], + ].map(([id, title]) => ({ id, title })), + }, + { + id: 'GUI-CLOSURE', exactTasks: ['EX-UI-01', 'EX-UI-02', 'EX-UI-03', 'EX-UI-04', 'EX-UI-05'], title: 'Close full GUI behavior', prefix: 'GUI', capabilities: [ + 'application-shell', 'menus', 'toolbars', 'workbench-switching', 'mdi', 'combo-view', 'model-tree', 'task-panels', 'data-view-editors', 'dialogs', 'shortcuts', 'context-menus', 'status-report-jobs', '3d-selection', 'responsive-accessibility', + ].map((id) => ({ id, title: id.replaceAll('-', ' ') })), + }, + { + id: 'DOCUMENT-ENGINEERING-WORKBENCHES', exactTasks: ['EX-DOCWB-01', 'EX-ASM-01', 'EX-BIM-01', 'EX-SURF-01', 'EX-MESH-01', 'EX-MAT-01'], title: 'Close document and engineering workbenches', prefix: 'WB', capabilities: [ + 'draft', 'spreadsheet', 'techdraw', 'plot', 'cross-workbench-document', 'assembly', 'bim-ifc', 'surface', 'mesh-meshpart', 'material', + ].map((id) => ({ id, title: id.replaceAll('-', ' ') })), + }, + { + id: 'PLATFORM-SCRIPT-PROXY', exactTasks: ['EX-FEM-01', 'EX-CAM-01', 'EX-ROBOT-01', 'EX-DATA-01', 'EX-INSPECT-01', 'EX-SCRIPT-01', 'EX-ADDON-01', 'EX-PROXY-01', 'EX-PLATFORM-01'], title: 'Close platform, scripting and proxy capabilities', prefix: 'PLAT', capabilities: [ + 'fem', 'cam', 'robot', 'points-reverseengineering', 'inspection-measure', 'python-macro', 'addon', 'cloud', 'help', 'idf', 'jt', 'openscad', 'platform-boundaries', + ].map((id) => ({ id, title: id.replaceAll('-', ' ') })), + }, + { + id: 'QA-RELEASE', exactTasks: ['EX-QA-01', 'EX-QA-02', 'EX-QA-03', 'EX-REL-01'], title: 'Close QA and exact release', prefix: 'REL', capabilities: [ + ['chrome-baseline', 'Chrome locked baseline'], + ['browser-matrix', 'Firefox, Safari and explicit unsupported boundaries'], + ['os-gpu-matrix', 'Windows, macOS, Linux and GPU/software rendering'], + ['accessibility-locale', 'Keyboard, screen reader, locale, long text and narrow viewport'], + ['fuzz-soak-recovery', 'Fuzz, 1000 recomputes, long session, crash, migration and rollback'], + ['resource-performance', 'Performance and WASM/JS/GPU/OPFS release accounting'], + ['signed-release', 'SBOM, licenses, signing, offline install and rollback drill'], + ['exact-promotion', '52-task, 34-module and zero-unknown promotion report'], + ].map(([id, title]) => ({ id, title })), + }, +] + +let followUpDependency = transitionTasks.at(-1).id +const followUpMilestones = followUpMilestoneDefinitions.map((definition) => { + const tasks = makeCapabilityTasks(definition.prefix, definition.capabilities, followUpDependency) + followUpDependency = tasks.at(-1).id + return { id: definition.id, title: definition.title, exactTasks: definition.exactTasks, status: 'pending', tasks } +}) +const followUpTasks = followUpMilestones.flatMap(({ tasks }) => tasks) +if (followUpProgress.schemaVersion !== 1 || followUpProgress.baseline?.freecadVersion !== '1.1.1' || followUpProgress.baseline?.commit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || !Array.isArray(followUpProgress.completedTasks)) throw new Error('Follow-up task progress ledger is invalid.') +const followUpTaskIds = new Set(followUpTasks.map(({ id }) => id)) +const completedFollowUpIds = new Set() +for (const entry of followUpProgress.completedTasks) { + if (!followUpTaskIds.has(entry.id) || completedFollowUpIds.has(entry.id) || !Array.isArray(entry.evidence) || entry.evidence.length === 0) throw new Error(`Follow-up progress entry ${entry.id} is invalid.`) + completedFollowUpIds.add(entry.id) +} +const completedFollowUpPrefix = followUpTasks.findIndex(({ id }) => !completedFollowUpIds.has(id)) +const completedFollowUpCount = completedFollowUpPrefix < 0 ? followUpTasks.length : completedFollowUpPrefix +if (followUpTasks.slice(completedFollowUpCount).some(({ id }) => completedFollowUpIds.has(id))) throw new Error('Follow-up completed tasks must form one contiguous serial prefix.') +const orderedPairsClosed = transitionTasks.every(({ status }) => status === 'completed') +for (const [index, task] of followUpTasks.entries()) task.status = index < completedFollowUpCount ? 'completed' : orderedPairsClosed && index === completedFollowUpCount ? 'in_progress' : 'pending' +for (const milestone of followUpMilestones) milestone.status = milestone.tasks.every(({ status }) => status === 'completed') ? 'completed' : milestone.tasks.some(({ status }) => status === 'in_progress') ? 'in_progress' : 'pending' + const setupTasks = [ { id: 'ORA-GUI-SETUP-000', title: 'Split GUI state probing from object/property probing', status: 'completed' }, { id: 'ORA-GUI-SETUP-001', title: 'Diagnose the BIM first-run modal block', status: 'completed', dependencies: ['ORA-GUI-SETUP-000'] }, @@ -122,12 +248,18 @@ const milestones = [ { id: 'ORA-GUI-BASELINE', exactTask: 'EX-ORA-01', status: 'completed', tasks: [...setupTasks, ...guiShardTasks, ...closureTasks] }, { id: 'ORA-GUI-WORKFLOWS', exactTask: 'EX-ORA-01', status: workflowClosed ? 'completed' : 'in_progress', tasks: workflowTasks }, { id: 'TSN-RECOVERY-DRIFT', exactTask: 'EX-TSN-04', status: productionDriftClosed ? 'completed' : workflowClosed ? 'in_progress' : 'pending', tasks: [...driftTasks, ...productionDriftTasks] }, - { id: 'TSN-ORDERED-PAIRS', exactTask: 'EX-TSN-04', status: productionDriftClosed ? 'in_progress' : 'pending', tasks: transitionTasks }, + { id: 'TSN-ORDERED-PAIRS', exactTask: 'EX-TSN-04', status: orderedPairsClosed ? 'completed' : productionDriftClosed ? 'in_progress' : 'pending', tasks: transitionTasks }, + ...followUpMilestones, ] const allTasks = milestones.flatMap((milestone) => milestone.tasks) +const allTaskIds = new Set(allTasks.map(({ id }) => id)) +if (allTaskIds.size !== allTasks.length) throw new Error('FreeCAD active work queue contains duplicate task IDs.') +for (const milestone of followUpMilestones) for (const exactTask of milestone.exactTasks) if (!exactPlan.programs.some(({ tasks }) => tasks.some(({ id }) => id === exactTask))) throw new Error(`${milestone.id} references unknown exact task ${exactTask}.`) +for (const task of allTasks) for (const dependency of task.dependencies ?? []) if (!allTaskIds.has(dependency)) throw new Error(`${task.id} depends on unknown task ${dependency}.`) const count = (status) => allTasks.filter((task) => task.status === status).length const nextTask = allTasks.find((task) => task.status === 'in_progress')?.id if (!nextTask) throw new Error('FreeCAD active work queue requires one in-progress task.') +if (count('in_progress') !== 1) throw new Error('FreeCAD active work queue requires exactly one in-progress task.') const queue = { schemaVersion: 1, baseline: { freecadVersion: '1.1.1', commit: '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' }, @@ -138,17 +270,46 @@ const queue = { unit: 'one artifact, one focused check, one explicit exit condition', transitionUnit: 'one ordered operation pair', driftUnit: 'one native case', + capabilityDefinition: completionSteps.map(({ id, title }) => `${id}: ${title}`), + followUpProgress: 'config/freecad-follow-up-task-progress.json', }, nextTask, summary: { tasks: allTasks.length, completed: count('completed'), inProgress: count('in_progress'), pending: count('pending') }, milestones, } const content = `${JSON.stringify(queue, null, 2)}\n` +const exactTasks = exactPlan.programs.flatMap(({ tasks }) => tasks) +const moduleCounts = Object.fromEntries(['exact', 'compatible', 'proxy', 'development'].map((level) => [level, platformCoverage.modules.filter((module) => module.level === level).length])) +const milestoneRows = queue.milestones.map((milestone) => { + const taskCount = (status) => milestone.tasks.filter((task) => task.status === status).length + const active = milestone.tasks.find((task) => task.status === 'in_progress')?.id ?? '-' + return `| \`${milestone.id}\` | ${milestone.tasks.length} | ${taskCount('completed')} | ${taskCount('in_progress')} | ${taskCount('pending')} | \`${active}\` |` +}) +const statusContent = ` +# FreeCAD 后续工作机器状态 + +生成日期:${queue.updatedAt}。基线:FreeCAD ${queue.baseline.freecadVersion} / \`${queue.baseline.commit}\`。 + +- 唯一活动任务:\`${queue.nextTask}\` +- 微任务:${queue.summary.tasks} total / ${queue.summary.completed} completed / ${queue.summary.inProgress} in_progress / ${queue.summary.pending} pending +- 有序操作对:${coveredTransitions.size}/${transitionTasks.length} classified / ${transitionTasks.length - coveredTransitions.size} unknown +- Property:${propertySemantics.supportSummary['native-editable-codec'].typeCount + propertySemantics.supportSummary['native-specialized-codec'].typeCount}/${propertySemantics.types.length} native types / ${propertySemantics.supportSummary['opaque-fcstd-proxy'].typeCount} opaque types +- exact 任务:${exactTasks.filter(({ status }) => status === 'completed').length}/${exactTasks.length} completed +- 模块能力:${moduleCounts.exact} exact / ${moduleCounts.compatible} compatible / ${moduleCounts.proxy} proxy / ${moduleCounts.development} development + +| 里程碑 | 任务数 | completed | in_progress | pending | 当前任务 | +| --- | ---: | ---: | ---: | ---: | --- | +${milestoneRows.join('\n')} + +详细任务、依赖、阶段、证据要求和退出条件见 \`config/freecad-active-work-queue.json\`。完成证据只能追加到 \`config/freecad-follow-up-task-progress.json\`,生成器会拒绝跳号、未知任务和无证据完成项。 +` if (process.argv.includes('--check')) { const current = await readFile(outputPath, 'utf8').catch(() => '') if (current !== content) throw new Error('FreeCAD active work queue is stale; run generate:freecad-active-work-queue.') + const currentStatus = await readFile(statusOutputPath, 'utf8').catch(() => '') + if (currentStatus !== statusContent) throw new Error('FreeCAD active work status is stale; run generate:freecad-active-work-queue.') console.log(JSON.stringify({ status: 'freecad-active-work-queue-pass', nextTask: queue.nextTask, ...queue.summary }, null, 2)) } else { - await writeFile(outputPath, content) - console.log(JSON.stringify({ status: 'freecad-active-work-queue-generated', output: outputPath, nextTask: queue.nextTask, ...queue.summary }, null, 2)) + await Promise.all([writeFile(outputPath, content), writeFile(statusOutputPath, statusContent)]) + console.log(JSON.stringify({ status: 'freecad-active-work-queue-generated', output: outputPath, statusOutput: 'docs/freecad-active-work-status.generated.zh-CN.md', nextTask: queue.nextTask, ...queue.summary }, null, 2)) } diff --git a/scripts/run-freecad-ordered-operation-pair-classification.mjs b/scripts/run-freecad-ordered-operation-pair-classification.mjs index ccc4f8d..ee9d3d5 100644 --- a/scripts/run-freecad-ordered-operation-pair-classification.mjs +++ b/scripts/run-freecad-ordered-operation-pair-classification.mjs @@ -50,12 +50,38 @@ const operationSpecs = { cut: { builder: 'BRepAlgoAPI_Cut', nominal: { toolSize: 4, toolOffset: 2 }, edited: { toolSize: 3, toolOffset: 2 }, parameter: 'toolSize', beforeValue: 4, editedValue: 3 }, common: { builder: 'BRepAlgoAPI_Common', nominal: { toolSize: 5, toolOffset: 10 }, edited: { toolSize: 5, toolOffset: 9 }, parameter: 'toolOffsetX', beforeValue: 10, editedValue: 9 }, rotate: { builder: 'BRepBuilderAPI_Transform', nominal: { angle: 15 }, edited: { angle: 22.5 }, parameter: 'angle', beforeValue: 15, editedValue: 22.5 }, + pad: { builder: 'BRepPrimAPI_MakePrism', nominal: { length: 5 }, edited: { length: 7.5 }, parameter: 'length', beforeValue: 5, editedValue: 7.5, decision: 'rejected' }, + 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' }, } -const createOperation = (module, { operation, objectStep, toolSize, toolOffset, angle, stage }) => { +const createOperation = (module, { operation, objectStep, toolSize, toolOffset, angle, length, ruled, spineLength, 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 === 'pad') return { response: module.prismHistoryFromStep(baseStep, 0, 0, length), inputs: [objectInput] } + if (operation === 'pocket') { + const profileStep = shapeStep(module, 'makeRectangleFace', 2, 3) + return { + response: module.pocketHistoryFromStep(baseStep, profileStep, 0, 0, length), + inputs: [objectInput, input('tool', 'tool', `${stage.resultObjectId}:profile`, stage.objectTag + 1, profileStep)], + } + } + if (operation === 'loft') { + const sectionStep = shapeStep(module, 'makeRectangleFacePlaced', 2, 3, 0, 0, 15) + return { + response: module.loftHistoryFromStep(baseStep, sectionStep, ruled), + inputs: [objectInput, input('tool', 'tool', `${stage.resultObjectId}:section`, stage.objectTag + 1, sectionStep)], + } + } + if (operation === 'pipe') { + const spineStep = shapeStep(module, 'makeLineWire', 0, 0, 0, 0, 0, spineLength) + return { + response: module.pipeHistoryFromStep(baseStep, spineStep), + inputs: [objectInput, input('tool', 'tool', `${stage.resultObjectId}:spine`, stage.objectTag + 1, spineStep)], + } + } const toolStep = shapeStep(module, 'makeBoxPlaced', toolSize, toolSize, toolSize, toolOffset, 0, 0) const inputs = [ objectInput, @@ -64,6 +90,61 @@ const createOperation = (module, { operation, objectStep, toolSize, toolOffset, return { response: module.booleanHistoryFromStep(baseStep, toolStep, operation), inputs } } +const captureRejectedStage = (module, definition) => { + let capture + try { + capture = createOperation(module, definition) + } catch (error) { + return { + operation: definition.operation, + builder: operationSpecs[definition.operation].builder, + inputCount: 1, + parameter: operationSpecs[definition.operation].parameter, + parameterValue: definition.length, + runtime: 'occt-native', + outcome: 'rejected', + resultProduced: false, + shapeProduced: false, + historyProduced: false, + rejectionStage: 'builder', + exceptionTransport: typeof error === 'number' ? 'emscripten-cpp-exception' : 'javascript-exception', + thrownType: typeof error, + } + } + capture.response.result?.delete?.() + fail(`${definition.stage.stageId} unexpectedly produced a native result.`) +} + +const rejectionSignature = ({ parameterValue: _parameterValue, ...attempt }) => JSON.stringify(attempt) + +const captureKernelCompatibilityStage = (module, definition, parameterValue, expectedOutcome) => { + const { response, inputs } = createOperation(module, definition) + try { + const outcome = response.summary?.isValid === true ? 'accepted' : 'invalid-result' + if (response.provider !== 'occt-native' || outcome !== expectedOutcome || !response.resultStep?.startsWith('ISO-10303-21;') || response.records?.length < 1) fail(`${definition.stage.stageId} OCCT compatibility probe returned an unexpected result.`) + return { + operation: definition.operation, + builder: operationSpecs[definition.operation].builder, + inputCount: inputs.length, + parameter: operationSpecs[definition.operation].parameter, + parameterValue, + runtime: 'occt-native', + outcome, + resultProduced: true, + shapeProduced: true, + validShapeProduced: response.summary.isValid === true, + historyProduced: true, + historyProvider: response.provider, + summary: canonicalSummary(response.summary), + historyRecords: response.records.length, + historySha256: sha256(JSON.stringify(response.records)), + authority: outcome === 'accepted' ? 'kernel-superset-only' : 'kernel-invalid-result', + } + } finally { + response.result?.delete?.() + } +} + const captureStage = (module, definition) => { const { response, inputs } = createOperation(module, definition) try { @@ -114,12 +195,12 @@ const captureStage = (module, definition) => { const createModule = (await import(pathToFileURL(modulePath).href)).default const module = await createModule({ locateFile: (path) => resolve(dist, path) }) -const persistAcceptedPair = async (pair, second) => { +const persistPair = async (pair, step, namingEvidence, decision) => { const temporaryDirectory = await mkdtemp(join(tmpdir(), 'freecad-ordered-pair-')) try { const stepPath = join(temporaryDirectory, 'pair-result.step') const evidencePath = join(temporaryDirectory, 'pair-naming.json') - await Promise.all([writeFile(stepPath, second.response.resultStep), writeFile(evidencePath, JSON.stringify(second.namingEvidence))]) + await Promise.all([writeFile(stepPath, step), writeFile(evidencePath, JSON.stringify(namingEvidence ?? null))]) const execution = spawnSync(freecad, ['--python-path', resolve(sysroot, 'usr/lib/python3/dist-packages'), resaveHarnessPath], { cwd: root, encoding: 'utf8', @@ -128,6 +209,7 @@ const persistAcceptedPair = async (pair, second) => { env: { ...process.env, FREECAD_ORDERED_PAIR: pair, + FREECAD_PAIR_DECISION: decision, FREECAD_PAIR_STEP_PATH: stepPath, FREECAD_PAIR_EVIDENCE_PATH: evidencePath, FREECAD_PAIR_OUTPUT_DIRECTORY: temporaryDirectory, @@ -143,7 +225,7 @@ const persistAcceptedPair = async (pair, second) => { const payload = markerIndex >= 0 ? output.slice(markerIndex + marker.length).match(/\{.*\}/s)?.[0] : undefined if (execution.error || execution.status !== 0 || !payload) fail(`FreeCAD FCStd replay exited with ${execution.status}: ${execution.error?.message || output.trim()}`) const persistence = JSON.parse(payload) - if (persistence.status !== 'pass' || persistence.freecadVersion !== '1.1.1' || persistence.gitCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || !Object.values(persistence.checks).every(Boolean)) fail(`FreeCAD FCStd replay failed: ${JSON.stringify(persistence)}`) + if (persistence.status !== 'pass' || persistence.decision !== decision || persistence.freecadVersion !== '1.1.1' || persistence.gitCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || !Object.values(persistence.checks).every(Boolean)) fail(`FreeCAD FCStd replay failed: ${JSON.stringify(persistence)}`) return persistence } finally { await rm(temporaryDirectory, { recursive: true, force: true }) @@ -164,6 +246,41 @@ const classifyFusePair = async (toOperation, pairIndex) => { ...spec.nominal, stage: { stageId: `pair:${pairId}:second`, ordinal: 1, objectId: `pair:${pairId}:first`, objectTag: 1101 + pairIndex * 100, resultObjectId: `pair:${pairId}:second`, resultObjectTag: 1201 + pairIndex * 100, namingEvidence: first.namingEvidence }, } + if (spec.decision === 'rejected') { + try { + const trajectory = [spec.beforeValue, spec.editedValue, spec.beforeValue] + if (spec.rejectionAuthority === 'freecad-document') { + const kernelAttempts = trajectory.map((value) => captureKernelCompatibilityStage(module, { ...secondDefinition, [spec.parameter]: value }, value, spec.kernelOutcome)) + const kernelRestoredExactly = JSON.stringify(kernelAttempts[0]) === JSON.stringify(kernelAttempts[2]) + 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}`, + pair, + classification: 'rejected', + reasonCode: 'freecad-input-precondition-reject-with-kernel-diagnostic-and-clean-resave', + nativeDecision: 'rejected', + first: first.report, + 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 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}`, + pair, + classification: 'rejected', + reasonCode: 'native-builder-and-freecad-profile-reject-with-clean-resave', + nativeDecision: 'rejected', + first: first.report, + rejection: { scope: 'second-operation-only', authority: 'occt-builder', parameter: spec.parameter, trajectory, stable: stableRejection, attempts, persistence }, + } + } finally { + first.response.result?.delete?.() + } + } const second = captureStage(module, secondDefinition) const mutated = captureStage(module, { ...secondDefinition, ...spec.edited }) const restored = captureStage(module, secondDefinition) @@ -171,7 +288,7 @@ const classifyFusePair = async (toOperation, pairIndex) => { const mutationChanged = JSON.stringify(second.report.summary) !== JSON.stringify(mutated.report.summary) const restoredExactly = JSON.stringify(second.report.summary) === JSON.stringify(restored.report.summary) && second.report.historySha256 === restored.report.historySha256 && second.report.namingSemanticSha256 === restored.report.namingSemanticSha256 if (!mutationChanged || !restoredExactly) fail(`${pair} mutation did not change and restore native geometry/history.`) - const persistence = await persistAcceptedPair(pair, second) + const persistence = await persistPair(pair, second.response.resultStep, second.namingEvidence, 'accepted') return { taskId: `TSN-PAIR-fuse-${toOperation}`, pair, @@ -190,7 +307,7 @@ const classifyFusePair = async (toOperation, pairIndex) => { } const classifications = [] -for (const [index, operation] of ['fuse', 'cut', 'common', 'rotate'].entries()) classifications.push(await classifyFusePair(operation, index)) +for (const [index, operation] of ['fuse', 'cut', 'common', 'rotate', 'pad', 'pocket', 'loft', 'pipe'].entries()) classifications.push(await classifyFusePair(operation, index)) const [artifacts, executorHarness, matrixHarness, resaveHarness] = await Promise.all([ Promise.all(artifactNames.map(async (name) => { diff --git a/后续工作.txt b/后续工作.txt new file mode 100644 index 0000000..9c4971a --- /dev/null +++ b/后续工作.txt @@ -0,0 +1,132 @@ +• 本项目应继续以锁定的 FreeCAD 1.1.1 为基线。当前已有可运行的 Web CAD 兼 + 容基线,但距离“全部功能对标”仍较远:exact 任务为 5/52 completed,34 个 + 模块中 0 exact / 26 compatible / 5 proxy / 3 development。 + + 详细机器账本见 config/freecad-web-exact-parity-plan.json:1,当前执行总 + 览见 docs/freecad-web-execution-master-plan.zh-CN.md:194。 + + 需要完善的工作 + + 工作域 当前主要缺口 完成标准 + ━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━ + 原生 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 和完整无障碍 发布和回滚演练通过 + 认证未完成 + + 各工作台的细分任务范围已列在 docs/freecad-complete-parity-backlog.zh- + CN.md:88 和 docs/freecad-full-parity-execution-wbs.zh-CN.md:55。 + + 建议执行顺序 + + 1. 先关闭 EX-ORA-01 和 EX-TSN-04,不要继续横向增加工作台。 + 2. 完成 7 个剩余命名漂移 case、生产 Cut/Rotate 漂移和 361 个有序操作 + 对。 + + 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、代理模块和跨平台发布。 + + 立即执行入口 + + 当前唯一机器任务是 config/freecad-active-work-queue.json:1563。完成后 + 依次处理剩余 Pocket 系列、生产 Cut、生产 Rotate,再进入 357 个未分类操 + 作对。 + + 此外需要修复规划治理本身: + + - EX-TSN-04 的 blocker 文本仍写着旧的 1/11,实际已经是 4/11。 + - 早期 Backlog/WBS 仍包含过期完成度描述。 + - 当前 487 项队列只细化了 GUI Oracle 和 TSN,尚未为 Property、 + Document、核心建模及 M10-M14 生成同等粒度的机器任务。 + + - 必须让状态摘要由机器报告自动生成,禁止手工维护重复数字。 + + 每个能力应统一采用“原生清册、成功、失败/取消、参数变异、Facade 实现、 + 事务恢复、FCStd 往返、真实浏览器、能力提升”九步完成定义;缺任何一步只 + 能保持 compatible。