feat: close hidden link property evidence
Some checks failed
real-verification / chrome (push) Has been cancelled
real-verification / freecad-oracle (push) Has been cancelled
real-verification / wasm (push) Has been cancelled

This commit is contained in:
2026-08-17 17:31:34 -04:00
parent 8f6053089a
commit 7bd7ff5055
92 changed files with 7827 additions and 151 deletions

View File

@@ -0,0 +1,85 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36",
"crossOriginIsolated": true,
"ui": {
"visibleLabelInput": true,
"hiddenControlCountBefore": 0,
"hiddenControlCountAfter": 0,
"hiddenTextPresentBefore": false,
"hiddenTextPresentAfter": false,
"hiddenStatus": true,
"beforeValue": [
"ExportA",
"ExportB"
],
"afterValue": [
"ExportB",
"ExportA",
"ExportB"
],
"documentVersion": 2,
"dirty": true,
"objectState": "touched",
"dependencyCount": 0,
"errors": []
},
"persistence": {
"mode": "sqlite-opfs",
"sqliteWasm": true,
"opfs": true,
"savedMode": "sqlite-opfs",
"loadedValue": [
"ExportB",
"ExportA",
"ExportB"
],
"loadedType": "App::PropertyLinkListHidden",
"loadedDependencyCount": 0,
"checkpointVersion": 2,
"recoveryIntegrity": "ok",
"fcstdElement": "LinkList",
"fcstdValue": [
"ExportB",
"ExportA",
"ExportB"
],
"fcstdNativeStatus": 67108864
},
"resource": {
"byteLength": 44,
"roundTrip": true,
"released": true,
"markerRemoved": true
},
"worker": {
"constructed": [
{
"name": "bitbybit-persistence",
"url": "http://127.0.0.1:37495/src/facade/persistenceWorker.ts?worker_file&type=module"
}
],
"requestTypes": [
"initialize",
"save-document",
"load-document",
"load-checkpoint",
"recovery-report",
"put-resource",
"get-resource",
"release-resource",
"get-resource",
"dispose"
],
"terminated": [
"bitbybit-persistence"
]
},
"release": {
"shapeCount": 0,
"kernelReferenceCount": 0,
"workerTerminated": true
}
}

View File

@@ -24,12 +24,12 @@
],
"followUpProgress": "config/freecad-follow-up-task-progress.json"
},
"nextTask": "PROP-app-propertyintegerset-A",
"nextTask": "PROP-app-propertylinksubhidden-D",
"summary": {
"tasks": 1756,
"completed": 586,
"completed": 607,
"inProgress": 1,
"pending": 1169
"pending": 1148
},
"milestones": [
{
@@ -8037,7 +8037,7 @@
{
"id": "PROP-app-propertyintegerset-A",
"title": "Lock native inventory and preconditions: App::PropertyIntegerSet",
"status": "in_progress",
"status": "completed",
"dependencies": [
"PROP-app-propertyheatflux-I"
],
@@ -8053,7 +8053,7 @@
{
"id": "PROP-app-propertyintegerset-B",
"title": "Capture native success evidence: App::PropertyIntegerSet",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyintegerset-A"
],
@@ -8069,7 +8069,7 @@
{
"id": "PROP-app-propertyintegerset-C",
"title": "Capture native failure and cancel evidence: App::PropertyIntegerSet",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyintegerset-B"
],
@@ -8085,7 +8085,7 @@
{
"id": "PROP-app-propertyintegerset-D",
"title": "Capture parameter mutation and restore evidence: App::PropertyIntegerSet",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyintegerset-C"
],
@@ -8101,7 +8101,7 @@
{
"id": "PROP-app-propertyintegerset-E",
"title": "Implement the Facade capability: App::PropertyIntegerSet",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyintegerset-D"
],
@@ -8117,7 +8117,7 @@
{
"id": "PROP-app-propertyintegerset-F",
"title": "Close transaction and recovery behavior: App::PropertyIntegerSet",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyintegerset-E"
],
@@ -8133,7 +8133,7 @@
{
"id": "PROP-app-propertyintegerset-G",
"title": "Close FCStd save, reopen and resave: App::PropertyIntegerSet",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyintegerset-F"
],
@@ -8149,7 +8149,7 @@
{
"id": "PROP-app-propertyintegerset-H",
"title": "Replay in a real browser: App::PropertyIntegerSet",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyintegerset-G"
],
@@ -8165,7 +8165,7 @@
{
"id": "PROP-app-propertyintegerset-I",
"title": "Promote capability and synchronize blockers: App::PropertyIntegerSet",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyintegerset-H"
],
@@ -8182,7 +8182,7 @@
{
"id": "PROP-app-propertylinklisthidden-A",
"title": "Lock native inventory and preconditions: App::PropertyLinkListHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyintegerset-I"
],
@@ -8198,7 +8198,7 @@
{
"id": "PROP-app-propertylinklisthidden-B",
"title": "Capture native success evidence: App::PropertyLinkListHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinklisthidden-A"
],
@@ -8214,7 +8214,7 @@
{
"id": "PROP-app-propertylinklisthidden-C",
"title": "Capture native failure and cancel evidence: App::PropertyLinkListHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinklisthidden-B"
],
@@ -8230,7 +8230,7 @@
{
"id": "PROP-app-propertylinklisthidden-D",
"title": "Capture parameter mutation and restore evidence: App::PropertyLinkListHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinklisthidden-C"
],
@@ -8246,7 +8246,7 @@
{
"id": "PROP-app-propertylinklisthidden-E",
"title": "Implement the Facade capability: App::PropertyLinkListHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinklisthidden-D"
],
@@ -8262,7 +8262,7 @@
{
"id": "PROP-app-propertylinklisthidden-F",
"title": "Close transaction and recovery behavior: App::PropertyLinkListHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinklisthidden-E"
],
@@ -8278,7 +8278,7 @@
{
"id": "PROP-app-propertylinklisthidden-G",
"title": "Close FCStd save, reopen and resave: App::PropertyLinkListHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinklisthidden-F"
],
@@ -8294,7 +8294,7 @@
{
"id": "PROP-app-propertylinklisthidden-H",
"title": "Replay in a real browser: App::PropertyLinkListHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinklisthidden-G"
],
@@ -8310,7 +8310,7 @@
{
"id": "PROP-app-propertylinklisthidden-I",
"title": "Promote capability and synchronize blockers: App::PropertyLinkListHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinklisthidden-H"
],
@@ -8327,7 +8327,7 @@
{
"id": "PROP-app-propertylinksubhidden-A",
"title": "Lock native inventory and preconditions: App::PropertyLinkSubHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinklisthidden-I"
],
@@ -8343,7 +8343,7 @@
{
"id": "PROP-app-propertylinksubhidden-B",
"title": "Capture native success evidence: App::PropertyLinkSubHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksubhidden-A"
],
@@ -8359,7 +8359,7 @@
{
"id": "PROP-app-propertylinksubhidden-C",
"title": "Capture native failure and cancel evidence: App::PropertyLinkSubHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksubhidden-B"
],
@@ -8375,7 +8375,7 @@
{
"id": "PROP-app-propertylinksubhidden-D",
"title": "Capture parameter mutation and restore evidence: App::PropertyLinkSubHidden",
"status": "pending",
"status": "in_progress",
"dependencies": [
"PROP-app-propertylinksubhidden-C"
],

View File

@@ -777,6 +777,58 @@
{
"id": "PROP-app-propertyintegerset-H",
"evidence": ["config/chrome-property-integerset-verification.json", "check:chrome-property-integerset"]
},
{
"id": "PROP-app-propertyintegerset-I",
"evidence": ["config/freecad-property-integerset-promotion.json", "check:freecad-property-integerset-promotion"]
},
{
"id": "PROP-app-propertylinklisthidden-A",
"evidence": ["config/freecad-property-linklisthidden-inventory.json", "check:freecad-property-linklisthidden-inventory"]
},
{
"id": "PROP-app-propertylinklisthidden-B",
"evidence": ["config/freecad-property-linklisthidden-success.json", "check:freecad-property-linklisthidden-success"]
},
{
"id": "PROP-app-propertylinklisthidden-C",
"evidence": ["config/freecad-property-linklisthidden-failure.json", "check:freecad-property-linklisthidden-failure"]
},
{
"id": "PROP-app-propertylinklisthidden-D",
"evidence": ["config/freecad-property-linklisthidden-mutation.json", "check:freecad-property-linklisthidden-mutation"]
},
{
"id": "PROP-app-propertylinklisthidden-E",
"evidence": ["src/facade/types.ts", "src/facade/fcstd.ts", "src/facade/mockFacade.ts", "src/App.tsx", "tests/propertyLinkListHiddenFacade.test.ts", "test:freecad-property-linklisthidden-facade"]
},
{
"id": "PROP-app-propertylinklisthidden-F",
"evidence": ["tests/propertyLinkListHiddenTransaction.test.ts", "test:freecad-property-linklisthidden-transaction"]
},
{
"id": "PROP-app-propertylinklisthidden-G",
"evidence": ["config/freecad-property-linklisthidden-roundtrip.json", "check:freecad-property-linklisthidden-roundtrip"]
},
{
"id": "PROP-app-propertylinklisthidden-H",
"evidence": ["config/chrome-property-linklisthidden-verification.json", "check:chrome-property-linklisthidden"]
},
{
"id": "PROP-app-propertylinklisthidden-I",
"evidence": ["config/freecad-property-linklisthidden-promotion.json", "check:freecad-property-linklisthidden-promotion"]
},
{
"id": "PROP-app-propertylinksubhidden-A",
"evidence": ["config/freecad-property-linksubhidden-inventory.json", "check:freecad-property-linksubhidden-inventory"]
},
{
"id": "PROP-app-propertylinksubhidden-B",
"evidence": ["config/freecad-property-linksubhidden-success.json", "check:freecad-property-linksubhidden-success"]
},
{
"id": "PROP-app-propertylinksubhidden-C",
"evidence": ["config/freecad-property-linksubhidden-failure.json", "check:freecad-property-linksubhidden-failure"]
}
]
}

View File

@@ -37,16 +37,16 @@
},
"supportSummary": {
"native-editable-codec": {
"typeCount": 34,
"recordCount": 4370
"typeCount": 35,
"recordCount": 4372
},
"native-specialized-codec": {
"typeCount": 5,
"recordCount": 683
},
"opaque-fcstd-proxy": {
"typeCount": 46,
"recordCount": 457
"typeCount": 45,
"recordCount": 455
}
},
"types": [
@@ -327,7 +327,7 @@
},
{
"typeId": "App::PropertyLinkListHidden",
"support": "opaque-fcstd-proxy",
"support": "native-editable-codec",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": [
@@ -902,10 +902,10 @@
},
"harness": {
"path": "scripts/run-freecad-native-property-semantics.mjs",
"bytes": 6710,
"sha256": "7362b5e31dfcfba144c78f525cf5e1c94ab687e2a57dd34118d4428e79867804"
"bytes": 6741,
"sha256": "7f97a99a107ac51ddbd96d1b7034e5ad365e04fbd8ad6e49bc6db08b50cb3025"
},
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics",
"generatedAt": "2026-08-17T13:03:27.855Z"
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics",
"generatedAt": "2026-08-17T20:51:42.339Z"
}

View File

@@ -54,13 +54,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"nativeEditableTypes": 35,
"nativeEditableRecords": 4372,
"opaqueTypes": 45,
"opaqueRecords": 455,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:42.988Z"
"generatedAt": "2026-08-17T20:51:52.484Z"
}

View File

@@ -59,13 +59,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"nativeEditableTypes": 35,
"nativeEditableRecords": 4372,
"opaqueTypes": 45,
"opaqueRecords": 455,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.029Z"
"generatedAt": "2026-08-17T20:51:52.476Z"
}

View File

@@ -68,13 +68,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"nativeEditableTypes": 35,
"nativeEditableRecords": 4372,
"opaqueTypes": 45,
"opaqueRecords": 455,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.058Z"
"generatedAt": "2026-08-17T20:51:52.509Z"
}

View File

@@ -68,13 +68,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"nativeEditableTypes": 35,
"nativeEditableRecords": 4372,
"opaqueTypes": 45,
"opaqueRecords": 455,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.033Z"
"generatedAt": "2026-08-17T20:51:52.509Z"
}

View File

@@ -85,13 +85,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"nativeEditableTypes": 35,
"nativeEditableRecords": 4372,
"opaqueTypes": 45,
"opaqueRecords": 455,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:42.988Z"
"generatedAt": "2026-08-17T20:51:52.481Z"
}

View File

@@ -65,13 +65,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"nativeEditableTypes": 35,
"nativeEditableRecords": 4372,
"opaqueTypes": 45,
"opaqueRecords": 455,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.033Z"
"generatedAt": "2026-08-17T20:51:52.546Z"
}

View File

@@ -59,13 +59,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"nativeEditableTypes": 35,
"nativeEditableRecords": 4372,
"opaqueTypes": 45,
"opaqueRecords": 455,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.095Z"
"generatedAt": "2026-08-17T20:51:52.501Z"
}

View File

@@ -64,13 +64,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"nativeEditableTypes": 35,
"nativeEditableRecords": 4372,
"opaqueTypes": 45,
"opaqueRecords": 455,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.103Z"
"generatedAt": "2026-08-17T20:51:52.483Z"
}

View File

@@ -60,13 +60,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"nativeEditableTypes": 35,
"nativeEditableRecords": 4372,
"opaqueTypes": 45,
"opaqueRecords": 455,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.084Z"
"generatedAt": "2026-08-17T20:51:52.528Z"
}

View File

@@ -67,13 +67,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"nativeEditableTypes": 35,
"nativeEditableRecords": 4372,
"opaqueTypes": 45,
"opaqueRecords": 455,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.093Z"
"generatedAt": "2026-08-17T20:51:52.542Z"
}

View File

@@ -66,13 +66,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"nativeEditableTypes": 35,
"nativeEditableRecords": 4372,
"opaqueTypes": 45,
"opaqueRecords": 455,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.078Z"
"generatedAt": "2026-08-17T20:51:52.566Z"
}

View File

@@ -68,13 +68,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"nativeEditableTypes": 35,
"nativeEditableRecords": 4372,
"opaqueTypes": 45,
"opaqueRecords": 455,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.129Z"
"generatedAt": "2026-08-17T20:51:52.579Z"
}

View File

@@ -0,0 +1,928 @@
{
"baselineId": "freecad-1.1.1-property-linklisthidden-failure",
"cancellationBoundary": {
"classification": "synchronous-property-setter",
"reason": "no-native-cancel-hook",
"replacement": "abort-active-document-transaction",
"supported": false
},
"documentIntegrity": {
"finalObjects": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"foreignDocumentObjects": [
{
"name": "ForeignExport",
"typeId": "Part::Feature"
}
],
"initialObjects": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"objectsPreserved": true
},
"editorReadOnly": {
"after": {
"editorMode": [
"ReadOnly",
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Touched"
],
"propertyStatus": [
"ReadOnly",
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Touched",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportB"
]
},
"before": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"classification": "editor-read-only-python-setter-accepted",
"editorMode": [
"ReadOnly",
"Hidden"
],
"exception": null,
"pythonBypassesEditorReadOnly": true,
"restoredEditorMode": [
"Hidden"
]
},
"failures": [
{
"after": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"before": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"documentPreserved": true,
"exception": {
"message": "Type must be App.DocumentObject or None, not str",
"type": "TypeError"
},
"id": "string-scalar",
"requested": "'ExportA'",
"valuePreserved": true
},
{
"after": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"before": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"documentPreserved": true,
"exception": {
"message": "Type must be App.DocumentObject or None, not str",
"type": "TypeError"
},
"id": "string-item",
"requested": "['ExportA']",
"valuePreserved": true
},
{
"after": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"before": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"documentPreserved": true,
"exception": {
"message": "Type must be App.DocumentObject or None, not int",
"type": "TypeError"
},
"id": "integer-scalar",
"requested": "7",
"valuePreserved": true
},
{
"after": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"before": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"documentPreserved": true,
"exception": {
"message": "Type must be App.DocumentObject or None, not int",
"type": "TypeError"
},
"id": "integer-item",
"requested": "[7]",
"valuePreserved": true
},
{
"after": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"before": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"documentPreserved": true,
"exception": {
"message": "PropertyLinkList does not support external object",
"type": "ValueError"
},
"id": "cross-document",
"requested": "[<Part::Feature>]",
"valuePreserved": true
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"immutable": {
"after": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Touched"
],
"propertyStatus": [
"Immutable",
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Touched",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportB"
]
},
"before": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"Immutable",
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"classification": "immutable-python-setter-accepted",
"exception": null,
"pythonBypassesImmutable": true,
"restoredStatus": [
"26"
]
},
"initial": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"object": {
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
"property": {
"name": "Exports",
"typeId": "App::PropertyLinkListHidden"
},
"propertyType": "App::PropertyLinkListHidden",
"schemaVersion": 1,
"status": "pass",
"transaction": {
"activeAfterAbort": {
"id": 0,
"name": ""
},
"activeAfterEdit": {
"id": 1,
"name": "property-linklisthidden-cancel"
},
"afterAbort": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"afterAbortBeforeRecompute": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Touched"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Touched",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"before": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportA",
"ExportB"
]
},
"edited": {
"editorMode": [
"Hidden"
],
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShapeNull": true,
"ownerState": [
"Touched"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Touched",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapeHashes": {
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851"
},
"value": [
"ExportB",
"ExportA",
"ExportB"
]
},
"pendingAfterAbort": false,
"pendingAfterEdit": true,
"recomputeAfterAbort": true,
"restored": true,
"undoMode": 1
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"status": "pass",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyLinkListHidden",
"recordCount": 2,
"objectTypeCount": 2,
"writableRecordCount": 2,
"records": [
{
"objectTypeId": "Sketcher::SketchObject",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "Exports",
"group": "Sketch",
"statusRaw": [
26
],
"statusNames": [
"PropHidden"
],
"defaultRaw": [],
"valueModel": {
"kind": "hidden-document-object-list",
"inheritedFrom": "App::PropertyLinkList",
"elementType": "same-document App::DocumentObject reference",
"orderPreserved": true,
"duplicatesPreserved": true,
"writable": true
},
"inputs": {
"nativeCppSetValues": "attached same-document DocumentObject list",
"emptyListClears": true,
"singleNullListClears": true,
"detachedObjectRejected": true,
"crossDocumentRejectedWithoutLinkAllowExternal": true
},
"dependencies": {
"linkScope": "Hidden",
"createsBacklinks": false,
"includedByDefaultGetLinks": false,
"includedByGetLinksAll": true,
"defaultDagDependency": false
},
"applicability": {
"requiredObjectTypeId": "Sketcher::SketchObject",
"role": "Sketch exported child geometry lookup by object name",
"propertyWriteRequiresShape": false,
"source": "Document.supportedTypes runtime inventory and SketchObject::getSubObject"
}
},
{
"objectTypeId": "Sketcher::SketchObjectPython",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "Exports",
"group": "Sketch",
"statusRaw": [
26
],
"statusNames": [
"PropHidden"
],
"defaultRaw": [],
"valueModel": {
"kind": "hidden-document-object-list",
"inheritedFrom": "App::PropertyLinkList",
"elementType": "same-document App::DocumentObject reference",
"orderPreserved": true,
"duplicatesPreserved": true,
"writable": true
},
"inputs": {
"nativeCppSetValues": "attached same-document DocumentObject list",
"emptyListClears": true,
"singleNullListClears": true,
"detachedObjectRejected": true,
"crossDocumentRejectedWithoutLinkAllowExternal": true
},
"dependencies": {
"linkScope": "Hidden",
"createsBacklinks": false,
"includedByDefaultGetLinks": false,
"includedByGetLinksAll": true,
"defaultDagDependency": false
},
"applicability": {
"requiredObjectTypeId": "Sketcher::SketchObjectPython",
"role": "Sketch exported child geometry lookup by object name",
"propertyWriteRequiresShape": false,
"source": "Document.supportedTypes runtime inventory and SketchObject::getSubObject"
}
}
],
"typeContract": {
"inheritedFrom": "App::PropertyLinkList",
"linkScope": "Hidden",
"propertyStatus": "PropHidden",
"propertyStatusPurpose": "hide the Exports property from the ordinary editor surface",
"linkScopePurpose": "exclude Exports from ordinary backlink and dependency traversal",
"xmlElement": "LinkList",
"xmlChildElement": "Link",
"legacyRestoreType": "App::PropertyLinkList"
},
"provenance": {
"runtime": {
"path": ".cache/freecad/reference-desktop.json",
"bytes": 2298709,
"sha256": "082400ec7379e8efc2af16709032d45890d7092277967b714acb05761fd1c2a7"
},
"sources": [
{
"path": ".cache/freecad/FreeCAD/src/App/PropertyLinks.h",
"bytes": 58046,
"sha256": "03176b14948d43fcae3ff290711a913ae4fa43f3ba286d66ceb610e074555d1c"
},
{
"path": ".cache/freecad/FreeCAD/src/App/PropertyLinks.cpp",
"bytes": 202779,
"sha256": "b4221dd89d2b0b668dc8a3c2852ba53bc67bcb721830e3a6011ea53c1a32edb0"
},
{
"path": ".cache/freecad/FreeCAD/src/Mod/Sketcher/App/SketchObject.h",
"bytes": 52959,
"sha256": "a21018ddcfc2bda32f15eeadc5c63015677b87cd441e829beae575323fd0fea0"
},
{
"path": ".cache/freecad/FreeCAD/src/Mod/Sketcher/App/SketchObject.cpp",
"bytes": 467084,
"sha256": "1762c9bb9d7fc54ff171be638094c5f4a50b8d2bcefe3af5cff6010d2478ef9a"
}
]
},
"classification": "opaque-fcstd-proxy",
"nextPhases": [
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I"
]
}

View File

@@ -0,0 +1,663 @@
{
"baselineId": "freecad-1.1.1-property-linklisthidden-mutation",
"caseCount": 2,
"cases": [
{
"before": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShape": {
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportA",
"ExportB"
]
},
"editRecomputeResult": true,
"edited": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShape": {
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportB",
"ExportA",
"ExportB"
]
},
"objectName": "SketchProbe",
"objectTypeId": "Sketcher::SketchObject",
"propertyName": "Exports",
"restoreRecomputeResult": true,
"restored": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShape": {
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportA",
"ExportB"
]
},
"semanticStateRestored": true,
"touchedAfterEdit": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShape": {
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"ownerState": [
"Touched"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Touched",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportB",
"ExportA",
"ExportB"
]
},
"touchedAfterRestore": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShape": {
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"ownerState": [
"Touched"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Touched",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportA",
"ExportB"
]
},
"valueRestored": true
},
{
"before": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchPythonProbe",
"typeId": "Sketcher::SketchObjectPython"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShape": {
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportA",
"ExportB"
]
},
"editRecomputeResult": true,
"edited": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchPythonProbe",
"typeId": "Sketcher::SketchObjectPython"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShape": {
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportB",
"ExportA",
"ExportB"
]
},
"objectName": "SketchPythonProbe",
"objectTypeId": "Sketcher::SketchObjectPython",
"propertyName": "Exports",
"restoreRecomputeResult": true,
"restored": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchPythonProbe",
"typeId": "Sketcher::SketchObjectPython"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShape": {
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportA",
"ExportB"
]
},
"semanticStateRestored": true,
"touchedAfterEdit": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchPythonProbe",
"typeId": "Sketcher::SketchObjectPython"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShape": {
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"ownerState": [
"Touched"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Touched",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportB",
"ExportA",
"ExportB"
]
},
"touchedAfterRestore": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchPythonProbe",
"typeId": "Sketcher::SketchObjectPython"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerShape": {
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"ownerState": [
"Touched"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"statusString": "Touched",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportA",
"ExportB"
]
},
"valueRestored": true
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"propertyType": "App::PropertyLinkListHidden",
"schemaVersion": 1,
"status": "pass"
}

View File

@@ -0,0 +1,84 @@
{
"schemaVersion": 1,
"status": "pass",
"taskId": "PROP-app-propertylinklisthidden-I",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyLinkListHidden",
"recordCount": 2,
"phaseEvidence": {
"A": [
"config/freecad-property-linklisthidden-inventory.json",
"check:freecad-property-linklisthidden-inventory"
],
"B": [
"config/freecad-property-linklisthidden-success.json",
"check:freecad-property-linklisthidden-success"
],
"C": [
"config/freecad-property-linklisthidden-failure.json",
"check:freecad-property-linklisthidden-failure"
],
"D": [
"config/freecad-property-linklisthidden-mutation.json",
"check:freecad-property-linklisthidden-mutation"
],
"E": [
"src/facade/types.ts",
"src/facade/fcstd.ts",
"src/facade/mockFacade.ts",
"src/App.tsx",
"tests/propertyLinkListHiddenFacade.test.ts",
"test:freecad-property-linklisthidden-facade"
],
"F": [
"tests/propertyLinkListHiddenTransaction.test.ts",
"test:freecad-property-linklisthidden-transaction"
],
"G": [
"config/freecad-property-linklisthidden-roundtrip.json",
"check:freecad-property-linklisthidden-roundtrip"
],
"H": [
"config/chrome-property-linklisthidden-verification.json",
"check:chrome-property-linklisthidden"
]
},
"promotion": {
"from": "opaque-fcstd-proxy",
"to": "native-editable-codec",
"facadeValueModel": "ordered-duplicate-preserving-same-document-object-name-array",
"writableRecords": 2,
"objectTypeCount": 2,
"propertyStatus": "PropHidden",
"linkScope": "Hidden",
"runtimeDependencyEdges": 0,
"fcstdElement": "LinkList",
"nativeRoundTripValue": [
"ExportB",
"ExportA",
"ExportB"
],
"browserRoundTripValue": [
"ExportB",
"ExportA",
"ExportB"
],
"hiddenUiFiltered": true,
"hiddenLinksPreserved": true,
"nativeDependencyMetadataNormalized": true,
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 35,
"nativeEditableRecords": 4372,
"opaqueTypes": 45,
"opaqueRecords": 455,
"exactPromotionReady": false,
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T20:51:52.575Z"
}

View File

@@ -0,0 +1,375 @@
{
"schemaVersion": 1,
"status": "pass",
"baselineId": "freecad-1.1.1-property-linklisthidden-roundtrip",
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"propertyType": "App::PropertyLinkListHidden",
"archives": {
"nativeInitial": {
"path": ".cache/freecad/property-linklisthidden-roundtrip/native-initial.FCStd",
"bytes": 3839,
"sha256": "3f9a950c0acadae61581844b35436f0ff0a340a9c1dc358e6659b90092737936"
},
"webEdited": {
"path": ".cache/freecad/property-linklisthidden-roundtrip/web-edited.FCStd",
"bytes": 3712,
"sha256": "63bbffbee9b7d7e4c9356697251da61cf300f721c8be12027917ab0466a256cc"
},
"nativeResaved": {
"path": ".cache/freecad/property-linklisthidden-roundtrip/native-resaved.FCStd",
"bytes": 3851,
"sha256": "02329f1ba06f8eaba4e9ec38f632f1cbcbaa342cfe37fca14851f18b74909e41"
}
},
"nativeInitial": {
"object": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"name": "SketchProbe",
"outList": [],
"propertyName": "Exports",
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"shape": {
"area": 0,
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"shapeType": "Null",
"solids": 0,
"valid": false,
"vertices": 0,
"volume": 0
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Sketcher::SketchObject",
"value": [
"ExportA",
"ExportB"
]
},
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"targets": {
"ExportA": {
"inList": [],
"shape": {
"area": 52,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 24
},
"typeId": "Part::Feature"
},
"ExportB": {
"inList": [],
"shape": {
"area": 61.261056745,
"brepSha256": "82bf07000178ed1f34895ff3e2510f838cd26a6247e2e395fff73feb2117960c",
"edges": 3,
"faces": 3,
"isNull": false,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 2,
"volume": 35.342917353
},
"typeId": "Part::Feature"
}
}
},
"web": {
"before": {
"name": "Exports",
"typeId": "App::PropertyLinkListHidden",
"element": "LinkList",
"value": "",
"nativeStatus": 67108864,
"statusNames": [
"PropHidden"
],
"links": [
"ExportA",
"ExportB"
]
},
"after": {
"name": "Exports",
"typeId": "App::PropertyLinkListHidden",
"element": "LinkList",
"value": "",
"nativeStatus": 67108864,
"statusNames": [
"PropHidden"
],
"links": [
"ExportB",
"ExportA",
"ExportB"
]
},
"targetMarkedTouched": true,
"initialDependencyTargets": [
"ExportA",
"ExportB"
],
"webDependencyTargets": [
"ExportA",
"ExportB"
],
"hiddenDependencyMetadataPreserved": true,
"webOutputMatches": true,
"objectSetPreserved": true,
"semanticObjectsPreserved": true,
"opaquePathsPreserved": 4,
"opaqueEntriesPreserved": true
},
"nativeAfter": {
"reopened": {
"object": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"name": "SketchProbe",
"outList": [],
"propertyName": "Exports",
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"shape": {
"area": 0,
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"shapeType": "Null",
"solids": 0,
"valid": false,
"vertices": 0,
"volume": 0
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Sketcher::SketchObject",
"value": [
"ExportB",
"ExportA",
"ExportB"
]
},
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"targets": {
"ExportA": {
"inList": [],
"shape": {
"area": 52,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 24
},
"typeId": "Part::Feature"
},
"ExportB": {
"inList": [],
"shape": {
"area": 61.261056745,
"brepSha256": "82bf07000178ed1f34895ff3e2510f838cd26a6247e2e395fff73feb2117960c",
"edges": 3,
"faces": 3,
"isNull": false,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 2,
"volume": 35.342917353
},
"typeId": "Part::Feature"
}
}
},
"resaved": {
"object": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"name": "SketchProbe",
"outList": [],
"propertyName": "Exports",
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"shape": {
"area": 0,
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"shapeType": "Null",
"solids": 0,
"valid": false,
"vertices": 0,
"volume": 0
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Sketcher::SketchObject",
"value": [
"ExportB",
"ExportA",
"ExportB"
]
},
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"targets": {
"ExportA": {
"inList": [],
"shape": {
"area": 52,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 24
},
"typeId": "Part::Feature"
},
"ExportB": {
"inList": [],
"shape": {
"area": 61.261056745,
"brepSha256": "82bf07000178ed1f34895ff3e2510f838cd26a6247e2e395fff73feb2117960c",
"edges": 3,
"faces": 3,
"isNull": false,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 2,
"volume": 35.342917353
},
"typeId": "Part::Feature"
}
}
}
},
"classification": {
"requestedValue": [
"ExportB",
"ExportA",
"ExportB"
],
"webValue": [
"ExportB",
"ExportA",
"ExportB"
],
"reopenedValue": [
"ExportB",
"ExportA",
"ExportB"
],
"resavedValue": [
"ExportB",
"ExportA",
"ExportB"
],
"nativeOutputMatches": true,
"hiddenLinksPreserved": true,
"nativeResavedDependencyTargets": [
"ExportB",
"ExportA",
"ExportB"
],
"nativeDependencyMetadataNormalized": true,
"targetShapeStructurePreserved": true,
"ownerShapePreserved": true,
"nativeTargetBrepHashes": [
{
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "82bf07000178ed1f34895ff3e2510f838cd26a6247e2e395fff73feb2117960c"
},
{
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "82bf07000178ed1f34895ff3e2510f838cd26a6247e2e395fff73feb2117960c"
},
{
"ExportA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ExportB": "82bf07000178ed1f34895ff3e2510f838cd26a6247e2e395fff73feb2117960c"
}
],
"unknownSemanticDrift": false,
"zeroUnknownDrift": true
}
}

View File

@@ -0,0 +1,691 @@
{
"baselineId": "freecad-1.1.1-property-linklisthidden-success",
"bindingBoundary": {
"oracleDefault": [],
"safeFirstRead": "assign-empty-list-before-read"
},
"caseCount": 2,
"cases": [
{
"group": "Sketch",
"mode": "direct-native-property-setter",
"objectName": "SketchProbe",
"objectTypeId": "Sketcher::SketchObject",
"phases": {
"duplicates": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"recomputeResult": true,
"shape": {
"applicable": true,
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"applicable": true,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"applicable": true,
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportA",
"ExportB",
"ExportA"
]
},
"explicitEmpty": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"recomputeResult": true,
"shape": {
"applicable": true,
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"applicable": true,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"applicable": true,
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": []
},
"ordered": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"recomputeResult": true,
"shape": {
"applicable": true,
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"applicable": true,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"applicable": true,
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportB",
"ExportA"
]
},
"restored": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"recomputeResult": true,
"shape": {
"applicable": true,
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"applicable": true,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"applicable": true,
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": []
},
"single": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchProbe",
"typeId": "Sketcher::SketchObject"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"recomputeResult": true,
"shape": {
"applicable": true,
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"applicable": true,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"applicable": true,
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportA"
]
}
},
"propertyName": "Exports"
},
{
"group": "Sketch",
"mode": "direct-native-property-setter",
"objectName": "SketchPythonProbe",
"objectTypeId": "Sketcher::SketchObjectPython",
"phases": {
"duplicates": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchPythonProbe",
"typeId": "Sketcher::SketchObjectPython"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"recomputeResult": true,
"shape": {
"applicable": true,
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"applicable": true,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"applicable": true,
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportA",
"ExportB",
"ExportA"
]
},
"explicitEmpty": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchPythonProbe",
"typeId": "Sketcher::SketchObjectPython"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"recomputeResult": true,
"shape": {
"applicable": true,
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"applicable": true,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"applicable": true,
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": []
},
"ordered": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchPythonProbe",
"typeId": "Sketcher::SketchObjectPython"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"recomputeResult": true,
"shape": {
"applicable": true,
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"applicable": true,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"applicable": true,
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportB",
"ExportA"
]
},
"restored": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchPythonProbe",
"typeId": "Sketcher::SketchObjectPython"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"recomputeResult": true,
"shape": {
"applicable": true,
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"applicable": true,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"applicable": true,
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": []
},
"single": {
"editorMode": [
"Hidden"
],
"group": "Sketch",
"objectSet": [
{
"name": "SketchPythonProbe",
"typeId": "Sketcher::SketchObjectPython"
},
{
"name": "ExportA",
"typeId": "Part::Feature"
},
{
"name": "ExportB",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [
"26"
],
"propertyTypeId": "App::PropertyLinkListHidden",
"recomputeResult": true,
"shape": {
"applicable": true,
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"statusString": "Valid",
"targetInLists": {
"ExportA": [],
"ExportB": []
},
"targetShapes": {
"ExportA": {
"applicable": true,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8
},
"ExportB": {
"applicable": true,
"brepSha256": "c3786ce59c730f9b18585c41062b02591e323238119986649a96ef34eb439851",
"edges": 3,
"faces": 3,
"isNull": false,
"solids": 1,
"vertices": 2
}
},
"value": [
"ExportA"
]
}
},
"propertyName": "Exports"
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"propertyType": "App::PropertyLinkListHidden",
"schemaVersion": 1,
"status": "pass"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,246 @@
{
"schemaVersion": 1,
"status": "pass",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyLinkSubHidden",
"recordCount": 4,
"objectTypeCount": 4,
"writableRecordCount": 4,
"records": [
{
"objectTypeId": "App::Link",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "ColoredElements",
"group": " Link",
"statusRaw": [
"LockDynamic",
26
],
"statusNames": [
"LockDynamic",
"PropHidden"
],
"defaultRaw": null,
"valueModel": {
"kind": "hidden-document-object-sub-element-reference",
"inheritedFrom": "App::PropertyLinkSub",
"elementType": "same-document App::DocumentObject plus ordered sub-element names",
"orderPreserved": true,
"duplicatesPreserved": false,
"writable": true
},
"inputs": {
"nativeCppSetValues": "attached same-document DocumentObject plus sub-element string list",
"emptySubListMeansWholeObject": true,
"nullObjectClears": true,
"detachedObjectRejected": true,
"crossDocumentRejectedWithoutLinkAllowExternal": true,
"invalidSubElementAcceptedAsReference": true
},
"dependencies": {
"linkScope": "Hidden",
"createsBacklinks": false,
"includedByDefaultGetLinks": false,
"includedByGetLinksAll": true,
"defaultDagDependency": false
},
"applicability": {
"requiredObjectTypeId": "App::Link",
"role": "Link colored element override lookup",
"propertyWriteRequiresShape": false,
"source": "Link extension and Draft colored element implementation"
}
},
{
"objectTypeId": "App::LinkGroup",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "ColoredElements",
"group": " Link",
"statusRaw": [
"LockDynamic",
26
],
"statusNames": [
"LockDynamic",
"PropHidden"
],
"defaultRaw": null,
"valueModel": {
"kind": "hidden-document-object-sub-element-reference",
"inheritedFrom": "App::PropertyLinkSub",
"elementType": "same-document App::DocumentObject plus ordered sub-element names",
"orderPreserved": true,
"duplicatesPreserved": false,
"writable": true
},
"inputs": {
"nativeCppSetValues": "attached same-document DocumentObject plus sub-element string list",
"emptySubListMeansWholeObject": true,
"nullObjectClears": true,
"detachedObjectRejected": true,
"crossDocumentRejectedWithoutLinkAllowExternal": true,
"invalidSubElementAcceptedAsReference": true
},
"dependencies": {
"linkScope": "Hidden",
"createsBacklinks": false,
"includedByDefaultGetLinks": false,
"includedByGetLinksAll": true,
"defaultDagDependency": false
},
"applicability": {
"requiredObjectTypeId": "App::LinkGroup",
"role": "Link colored element override lookup",
"propertyWriteRequiresShape": false,
"source": "Link extension and Draft colored element implementation"
}
},
{
"objectTypeId": "App::LinkGroupPython",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "ColoredElements",
"group": " Link",
"statusRaw": [
"LockDynamic",
26
],
"statusNames": [
"LockDynamic",
"PropHidden"
],
"defaultRaw": null,
"valueModel": {
"kind": "hidden-document-object-sub-element-reference",
"inheritedFrom": "App::PropertyLinkSub",
"elementType": "same-document App::DocumentObject plus ordered sub-element names",
"orderPreserved": true,
"duplicatesPreserved": false,
"writable": true
},
"inputs": {
"nativeCppSetValues": "attached same-document DocumentObject plus sub-element string list",
"emptySubListMeansWholeObject": true,
"nullObjectClears": true,
"detachedObjectRejected": true,
"crossDocumentRejectedWithoutLinkAllowExternal": true,
"invalidSubElementAcceptedAsReference": true
},
"dependencies": {
"linkScope": "Hidden",
"createsBacklinks": false,
"includedByDefaultGetLinks": false,
"includedByGetLinksAll": true,
"defaultDagDependency": false
},
"applicability": {
"requiredObjectTypeId": "App::LinkGroupPython",
"role": "Link colored element override lookup",
"propertyWriteRequiresShape": false,
"source": "Link extension and Draft colored element implementation"
}
},
{
"objectTypeId": "App::LinkPython",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "ColoredElements",
"group": " Link",
"statusRaw": [
"LockDynamic",
26
],
"statusNames": [
"LockDynamic",
"PropHidden"
],
"defaultRaw": null,
"valueModel": {
"kind": "hidden-document-object-sub-element-reference",
"inheritedFrom": "App::PropertyLinkSub",
"elementType": "same-document App::DocumentObject plus ordered sub-element names",
"orderPreserved": true,
"duplicatesPreserved": false,
"writable": true
},
"inputs": {
"nativeCppSetValues": "attached same-document DocumentObject plus sub-element string list",
"emptySubListMeansWholeObject": true,
"nullObjectClears": true,
"detachedObjectRejected": true,
"crossDocumentRejectedWithoutLinkAllowExternal": true,
"invalidSubElementAcceptedAsReference": true
},
"dependencies": {
"linkScope": "Hidden",
"createsBacklinks": false,
"includedByDefaultGetLinks": false,
"includedByGetLinksAll": true,
"defaultDagDependency": false
},
"applicability": {
"requiredObjectTypeId": "App::LinkPython",
"role": "Link colored element override lookup",
"propertyWriteRequiresShape": false,
"source": "Link extension and Draft colored element implementation"
}
}
],
"typeContract": {
"inheritedFrom": "App::PropertyLinkSub",
"linkScope": "Hidden",
"propertyStatus": "PropHidden",
"dynamicStatus": "LockDynamic",
"propertyStatusPurpose": "hide the ColoredElements property from the ordinary editor surface",
"linkScopePurpose": "exclude ColoredElements from ordinary backlink and dependency traversal",
"xmlElement": "LinkSub",
"xmlChildElement": "Sub",
"legacyRestoreType": "App::PropertyLinkSub",
"emptySubListMeans": "whole-object-reference"
},
"provenance": {
"runtime": {
"path": ".cache/freecad/reference-desktop.json",
"bytes": 2298709,
"sha256": "082400ec7379e8efc2af16709032d45890d7092277967b714acb05761fd1c2a7"
},
"sources": [
{
"path": ".cache/freecad/FreeCAD/src/App/PropertyLinks.h",
"bytes": 58046,
"sha256": "03176b14948d43fcae3ff290711a913ae4fa43f3ba286d66ceb610e074555d1c"
},
{
"path": ".cache/freecad/FreeCAD/src/App/PropertyLinks.cpp",
"bytes": 202779,
"sha256": "b4221dd89d2b0b668dc8a3c2852ba53bc67bcb721830e3a6011ea53c1a32edb0"
},
{
"path": ".cache/freecad/FreeCAD/src/App/Link.h",
"bytes": 40417,
"sha256": "57df13bd156ad7f3a1e23a74ae4040fa159bbc3d38c4a49b087d0c92260721e6"
},
{
"path": ".cache/freecad/FreeCAD/src/Mod/Draft/draftobjects/draftlink.py",
"bytes": 11576,
"sha256": "2b781a0b18dc89a3e07dc576b508b8c331ad33bf64fc9dca53240bf943c05e57"
}
]
},
"classification": "opaque-fcstd-proxy",
"nextPhases": [
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I"
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -41,7 +41,7 @@
"id": "EX03",
"title": "Application document, property and recompute semantics",
"tasks": [
{ "id": "EX-DOC-01", "title": "Implement every native property type, flag, editor and serialization rule", "priority": "P0", "status": "in_progress", "dependencies": ["EX-ORA-01"], "deliverables": ["Complete Property schema", "Status and editor metadata", "Binary and XML codecs"], "acceptance": ["Every runtime property fixture round-trips without type coercion or unknown loss"], "evidence": ["check:freecad-type-properties", "check:freecad-native-property-semantics", "check:freecad-property-status", "check:freecad-fcstd-roundtrip"], "exactBlockedBy": ["Of 85 runtime property types and 5510 records, 46 types/457 records remain opaque-only; all 15 observed status classes now have typed Facade behavior, including LockDynamic dynamic mutation and PartialTrigger partial-document observer transactions, but the remaining codecs, editors and complete document observer semantics are not closed"] },
{ "id": "EX-DOC-01", "title": "Implement every native property type, flag, editor and serialization rule", "priority": "P0", "status": "in_progress", "dependencies": ["EX-ORA-01"], "deliverables": ["Complete Property schema", "Status and editor metadata", "Binary and XML codecs"], "acceptance": ["Every runtime property fixture round-trips without type coercion or unknown loss"], "evidence": ["check:freecad-type-properties", "check:freecad-native-property-semantics", "check:freecad-property-status", "check:freecad-fcstd-roundtrip"], "exactBlockedBy": ["Of 85 runtime property types and 5510 records, 45 types/455 records remain opaque-only; all 15 observed status classes now have typed Facade behavior, including LockDynamic dynamic mutation and PartialTrigger partial-document observer transactions, but the remaining codecs, editors and complete document observer semantics are not closed"] },
{ "id": "EX-DOC-02", "title": "Match transactions, DAG recompute, partial failure and document observers", "priority": "P0", "status": "in_progress", "dependencies": ["EX-DOC-01", "EX-TSN-04"], "deliverables": ["Transaction and observer event oracle", "Partial recompute scheduler", "Failure recovery contract"], "acceptance": ["Undo, redo, abort, stale and cyclic dependency behavior matches FreeCAD"], "evidence": ["check:document-closure", "test:facade"], "exactBlockedBy": ["Observer ordering and every partial-recompute branch are not yet oracle-backed"] },
{ "id": "EX-DOC-03", "title": "Complete expressions, links, extensions, groups and App object lifecycle", "priority": "P0", "status": "in_progress", "dependencies": ["EX-DOC-01"], "deliverables": ["Expression dependency grammar", "Link and extension lifecycle", "Group and clone semantics"], "acceptance": ["Copy, clone, delete, relink and expression edits survive native round-trip"], "evidence": ["check:fcstd-closure", "check:chrome-production-document"], "exactBlockedBy": ["FeaturePython-backed extensions remain non-executable"] },
{ "id": "EX-DOC-04", "title": "Complete multi-document, external link, merge and recovery workflows", "priority": "P1", "status": "pending", "dependencies": ["EX-DOC-02", "EX-DOC-03"], "deliverables": ["Cross-document Link corpus", "Merge and conflict semantics", "Crash and autosave recovery"], "acceptance": ["Open, close, relink, merge and recovery match the native document graph"], "evidence": ["check:chrome-persistence", "check:project-migration"], "exactBlockedBy": ["Current application is project-first and does not implement every desktop multi-document workflow"] },
@@ -63,7 +63,7 @@
"id": "EX05",
"title": "FCStd and all import/export entrypoints",
"tasks": [
{ "id": "EX-FC-01", "title": "Round-trip every native FCStd object, property, extension and resource", "priority": "P0", "status": "in_progress", "dependencies": ["EX-DOC-04", "EX-TSN-04"], "deliverables": ["Complete native archive model", "Unknown object preservation", "FreeCAD-Web-FreeCAD mutation corpus"], "acceptance": ["No supported object, property, GUI state or resource drifts after mutation and resave"], "evidence": ["check:freecad-native-property-semantics", "check:freecad-isomorphic-provenance", "check:fcstd-closure", "check:chrome-fcstd-roundtrip"], "exactBlockedBy": ["FCStd supports 35 native property codecs plus opaque preservation for 50 runtime types; exhaustive native mutation and resave remains open"] },
{ "id": "EX-FC-01", "title": "Round-trip every native FCStd object, property, extension and resource", "priority": "P0", "status": "in_progress", "dependencies": ["EX-DOC-04", "EX-TSN-04"], "deliverables": ["Complete native archive model", "Unknown object preservation", "FreeCAD-Web-FreeCAD mutation corpus"], "acceptance": ["No supported object, property, GUI state or resource drifts after mutation and resave"], "evidence": ["check:freecad-native-property-semantics", "check:freecad-isomorphic-provenance", "check:fcstd-closure", "check:chrome-fcstd-roundtrip"], "exactBlockedBy": ["FCStd supports 36 native property codecs plus opaque preservation for 49 runtime types; exhaustive native mutation and resave remains open"] },
{ "id": "EX-FMT-01", "title": "Close BREP, STEP and IGES import/export semantics", "priority": "P0", "status": "in_progress", "dependencies": ["EX-KER-01"], "deliverables": ["Assembly/color/name import", "Unit and tolerance handling", "Deterministic exports"], "acceptance": ["Native and Web topology, metadata and diagnostics match for each format"] , "evidence": ["check:chrome-secondary-formats", "check:browser-occt"], "exactBlockedBy": ["Advanced STEP/IGES metadata and assembly cases are incomplete"] },
{ "id": "EX-FMT-02", "title": "Close STL, OBJ, PLY, DXF, SVG and PDF round-trips", "priority": "P1", "status": "in_progress", "dependencies": ["EX-MESH-01", "EX-DRAFT-01", "EX-TD-01"], "deliverables": ["Mesh and 2D format codecs", "Style/layer metadata", "Import-export failure corpus"], "acceptance": ["All supported entities and metadata round-trip or fail with a registered difference"] , "evidence": ["check:chrome-secondary-formats", "check:document-closure"], "exactBlockedBy": ["Several formats remain read-only or omit advanced entity metadata"] },
{ "id": "EX-FMT-03", "title": "Close IFC, CSV and G-code native object semantics", "priority": "P1", "status": "in_progress", "dependencies": ["EX-BIM-01", "EX-SS-01", "EX-CAM-01"], "deliverables": ["IFC schema and property sets", "Spreadsheet CSV dialect parity", "Path/G-code object round-trip"], "acceptance": ["Import, edit, export and native reopen preserve the declared object graph"] , "evidence": ["check:chrome-bim", "check:document-closure", "check:cam-parity"], "exactBlockedBy": ["IFC and G-code entrypoint inventory still records unsupported desktop semantics"] },