feat: close link sub property codecs
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 21:37:33 -04:00
parent 7bd7ff5055
commit 54649da16c
69 changed files with 6383 additions and 76 deletions

View File

@@ -1059,8 +1059,8 @@
},
{
"path": "src/facade/mockFacade.ts",
"bytes": 172346,
"sha256": "100b84bd3ebfe1a620885d70e98e97c864f33f5d478126c8586cca6deddfd0ac"
"bytes": 174111,
"sha256": "d84691f3e1fb9d7ec522fdcabe93386158e12d567bf24d1e43de0f5ee369114c"
},
{
"path": "src/facade/geometryRuntime.ts",

View File

@@ -0,0 +1,95 @@
{
"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": {
"schemaVersion": 1,
"objectId": "ColorSourceA",
"subElements": [
"Face1",
"Face3"
]
},
"afterValue": {
"schemaVersion": 1,
"objectId": "ColorSourceB",
"subElements": [
"Face5"
]
},
"documentVersion": 2,
"dirty": true,
"objectState": "touched",
"dependencyCount": 0,
"errors": []
},
"persistence": {
"mode": "sqlite-opfs",
"sqliteWasm": true,
"opfs": true,
"savedMode": "sqlite-opfs",
"loadedValue": {
"schemaVersion": 1,
"objectId": "ColorSourceB",
"subElements": [
"Face5"
]
},
"loadedType": "App::PropertyLinkSubHidden",
"loadedDependencyCount": 0,
"checkpointVersion": 2,
"recoveryIntegrity": "ok",
"fcstdElement": "LinkSub",
"fcstdValue": {
"schemaVersion": 1,
"objectId": "ColorSourceB",
"subElements": [
"Face5"
]
},
"fcstdNativeStatus": 67108864
},
"resource": {
"byteLength": 43,
"roundTrip": true,
"released": true,
"markerRemoved": true
},
"worker": {
"constructed": [
{
"name": "bitbybit-persistence",
"url": "http://127.0.0.1:46041/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

@@ -0,0 +1,120 @@
{
"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,
"controlsBefore": 3,
"controlsAfter": 2,
"beforeValue": {
"schemaVersion": 1,
"entries": [
{
"objectId": "SourceBox",
"subElement": "Face1"
},
{
"objectId": "SourceBox",
"subElement": "Face2"
},
{
"objectId": "SecondBox",
"subElement": "Face1"
}
]
},
"afterValue": {
"schemaVersion": 1,
"entries": [
{
"objectId": "SecondBox",
"subElement": "Face1"
},
{
"objectId": "SourceBox",
"subElement": "Face1"
}
]
},
"documentVersion": 2,
"dirty": true,
"objectState": "touched",
"dependencyCount": 2,
"errors": []
},
"persistence": {
"mode": "sqlite-opfs",
"sqliteWasm": true,
"opfs": true,
"savedMode": "sqlite-opfs",
"loadedValue": {
"schemaVersion": 1,
"entries": [
{
"objectId": "SecondBox",
"subElement": "Face1"
},
{
"objectId": "SourceBox",
"subElement": "Face1"
}
]
},
"loadedType": "App::PropertyLinkSubListGlobal",
"loadedDependencyCount": 2,
"checkpointVersion": 2,
"recoveryIntegrity": "ok",
"fcstdElement": "LinkSubList",
"fcstdType": "App::PropertyLinkSubListGlobal",
"fcstdValue": {
"schemaVersion": 1,
"entries": [
{
"objectId": "SecondBox",
"subElement": "Face1"
},
{
"objectId": "SourceBox",
"subElement": "Face1"
}
]
},
"fcstdDecoded": true
},
"resource": {
"byteLength": 47,
"roundTrip": true,
"released": true,
"markerRemoved": true
},
"worker": {
"constructed": [
{
"name": "bitbybit-persistence",
"url": "http://127.0.0.1:36505/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-propertylinksubhidden-D",
"nextTask": "PROP-app-propertymap-A",
"summary": {
"tasks": 1756,
"completed": 607,
"completed": 622,
"inProgress": 1,
"pending": 1148
"pending": 1133
},
"milestones": [
{
@@ -8375,7 +8375,7 @@
{
"id": "PROP-app-propertylinksubhidden-D",
"title": "Capture parameter mutation and restore evidence: App::PropertyLinkSubHidden",
"status": "in_progress",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksubhidden-C"
],
@@ -8391,7 +8391,7 @@
{
"id": "PROP-app-propertylinksubhidden-E",
"title": "Implement the Facade capability: App::PropertyLinkSubHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksubhidden-D"
],
@@ -8407,7 +8407,7 @@
{
"id": "PROP-app-propertylinksubhidden-F",
"title": "Close transaction and recovery behavior: App::PropertyLinkSubHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksubhidden-E"
],
@@ -8423,7 +8423,7 @@
{
"id": "PROP-app-propertylinksubhidden-G",
"title": "Close FCStd save, reopen and resave: App::PropertyLinkSubHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksubhidden-F"
],
@@ -8439,7 +8439,7 @@
{
"id": "PROP-app-propertylinksubhidden-H",
"title": "Replay in a real browser: App::PropertyLinkSubHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksubhidden-G"
],
@@ -8455,7 +8455,7 @@
{
"id": "PROP-app-propertylinksubhidden-I",
"title": "Promote capability and synchronize blockers: App::PropertyLinkSubHidden",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksubhidden-H"
],
@@ -8472,7 +8472,7 @@
{
"id": "PROP-app-propertylinksublistglobal-A",
"title": "Lock native inventory and preconditions: App::PropertyLinkSubListGlobal",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksubhidden-I"
],
@@ -8488,7 +8488,7 @@
{
"id": "PROP-app-propertylinksublistglobal-B",
"title": "Capture native success evidence: App::PropertyLinkSubListGlobal",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksublistglobal-A"
],
@@ -8504,7 +8504,7 @@
{
"id": "PROP-app-propertylinksublistglobal-C",
"title": "Capture native failure and cancel evidence: App::PropertyLinkSubListGlobal",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksublistglobal-B"
],
@@ -8520,7 +8520,7 @@
{
"id": "PROP-app-propertylinksublistglobal-D",
"title": "Capture parameter mutation and restore evidence: App::PropertyLinkSubListGlobal",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksublistglobal-C"
],
@@ -8536,7 +8536,7 @@
{
"id": "PROP-app-propertylinksublistglobal-E",
"title": "Implement the Facade capability: App::PropertyLinkSubListGlobal",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksublistglobal-D"
],
@@ -8552,7 +8552,7 @@
{
"id": "PROP-app-propertylinksublistglobal-F",
"title": "Close transaction and recovery behavior: App::PropertyLinkSubListGlobal",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksublistglobal-E"
],
@@ -8568,7 +8568,7 @@
{
"id": "PROP-app-propertylinksublistglobal-G",
"title": "Close FCStd save, reopen and resave: App::PropertyLinkSubListGlobal",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksublistglobal-F"
],
@@ -8584,7 +8584,7 @@
{
"id": "PROP-app-propertylinksublistglobal-H",
"title": "Replay in a real browser: App::PropertyLinkSubListGlobal",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksublistglobal-G"
],
@@ -8600,7 +8600,7 @@
{
"id": "PROP-app-propertylinksublistglobal-I",
"title": "Promote capability and synchronize blockers: App::PropertyLinkSubListGlobal",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertylinksublistglobal-H"
],
@@ -8617,7 +8617,7 @@
{
"id": "PROP-app-propertymap-A",
"title": "Lock native inventory and preconditions: App::PropertyMap",
"status": "pending",
"status": "in_progress",
"dependencies": [
"PROP-app-propertylinksublistglobal-I"
],

View File

@@ -829,6 +829,66 @@
{
"id": "PROP-app-propertylinksubhidden-C",
"evidence": ["config/freecad-property-linksubhidden-failure.json", "check:freecad-property-linksubhidden-failure"]
},
{
"id": "PROP-app-propertylinksubhidden-D",
"evidence": ["config/freecad-property-linksubhidden-mutation.json", "check:freecad-property-linksubhidden-mutation"]
},
{
"id": "PROP-app-propertylinksubhidden-E",
"evidence": ["src/facade/types.ts", "src/facade/fcstd.ts", "src/facade/mockFacade.ts", "src/facade/index.ts", "tests/propertyLinkSubHiddenFacade.test.ts", "test:freecad-property-linksubhidden-facade"]
},
{
"id": "PROP-app-propertylinksubhidden-F",
"evidence": ["tests/propertyLinkSubHiddenTransaction.test.ts", "test:freecad-property-linksubhidden-transaction"]
},
{
"id": "PROP-app-propertylinksubhidden-G",
"evidence": ["config/freecad-property-linksubhidden-roundtrip.json", "check:freecad-property-linksubhidden-roundtrip"]
},
{
"id": "PROP-app-propertylinksubhidden-H",
"evidence": ["config/chrome-property-linksubhidden-verification.json", "check:chrome-property-linksubhidden"]
},
{
"id": "PROP-app-propertylinksubhidden-I",
"evidence": ["config/freecad-property-linksubhidden-promotion.json", "check:freecad-property-linksubhidden-promotion"]
},
{
"id": "PROP-app-propertylinksublistglobal-A",
"evidence": ["config/freecad-property-linksublistglobal-inventory.json", "check:freecad-property-linksublistglobal-inventory"]
},
{
"id": "PROP-app-propertylinksublistglobal-B",
"evidence": ["config/freecad-property-linksublistglobal-success.json", "check:freecad-property-linksublistglobal-success"]
},
{
"id": "PROP-app-propertylinksublistglobal-C",
"evidence": ["config/freecad-property-linksublistglobal-failure.json", "check:freecad-property-linksublistglobal-failure"]
},
{
"id": "PROP-app-propertylinksublistglobal-D",
"evidence": ["config/freecad-property-linksublistglobal-mutation.json", "check:freecad-property-linksublistglobal-mutation"]
},
{
"id": "PROP-app-propertylinksublistglobal-E",
"evidence": ["src/facade/types.ts", "src/facade/fcstd.ts", "src/facade/mockFacade.ts", "src/facade/index.ts", "tests/propertyLinkSubListGlobalFacade.test.ts", "test:freecad-property-linksublistglobal-facade"]
},
{
"id": "PROP-app-propertylinksublistglobal-F",
"evidence": ["tests/propertyLinkSubListGlobalTransaction.test.ts", "test:freecad-property-linksublistglobal-transaction"]
},
{
"id": "PROP-app-propertylinksublistglobal-G",
"evidence": ["config/freecad-property-linksublistglobal-roundtrip.json", "check:freecad-property-linksublistglobal-roundtrip"]
},
{
"id": "PROP-app-propertylinksublistglobal-H",
"evidence": ["config/chrome-property-linksublistglobal-verification.json", "check:chrome-property-linksublistglobal"]
},
{
"id": "PROP-app-propertylinksublistglobal-I",
"evidence": ["config/freecad-property-linksublistglobal-promotion.json", "check:freecad-property-linksublistglobal-promotion"]
}
]
}

View File

@@ -37,16 +37,16 @@
},
"supportSummary": {
"native-editable-codec": {
"typeCount": 35,
"recordCount": 4372
"typeCount": 37,
"recordCount": 4377
},
"native-specialized-codec": {
"typeCount": 5,
"recordCount": 683
},
"opaque-fcstd-proxy": {
"typeCount": 45,
"recordCount": 455
"typeCount": 43,
"recordCount": 450
}
},
"types": [
@@ -346,7 +346,7 @@
},
{
"typeId": "App::PropertyLinkSubHidden",
"support": "opaque-fcstd-proxy",
"support": "native-editable-codec",
"recordCount": 4,
"objectTypeCount": 4,
"statusNames": [
@@ -367,7 +367,7 @@
},
{
"typeId": "App::PropertyLinkSubListGlobal",
"support": "opaque-fcstd-proxy",
"support": "native-editable-codec",
"recordCount": 1,
"objectTypeCount": 1,
"statusNames": []
@@ -902,10 +902,10 @@
},
"harness": {
"path": "scripts/run-freecad-native-property-semantics.mjs",
"bytes": 6741,
"sha256": "7f97a99a107ac51ddbd96d1b7034e5ad365e04fbd8ad6e49bc6db08b50cb3025"
"bytes": 6805,
"sha256": "ec4151712eb31824997414ab86f9eb440faccd0302ef829de6e55d1b352b662e"
},
"exactPromotionReady": false,
"exactBlocker": "45 runtime property types and 455 records remain opaque-only; complete native document and property semantics",
"generatedAt": "2026-08-17T20:51:42.339Z"
"exactBlocker": "43 runtime property types and 450 records remain opaque-only; complete native document and property semantics",
"generatedAt": "2026-08-17T23:37:43.918Z"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,88 @@
{
"schemaVersion": 1,
"status": "pass",
"taskId": "PROP-app-propertylinksubhidden-I",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyLinkSubHidden",
"recordCount": 4,
"phaseEvidence": {
"A": [
"config/freecad-property-linksubhidden-inventory.json",
"check:freecad-property-linksubhidden-inventory"
],
"B": [
"config/freecad-property-linksubhidden-success.json",
"check:freecad-property-linksubhidden-success"
],
"C": [
"config/freecad-property-linksubhidden-failure.json",
"check:freecad-property-linksubhidden-failure"
],
"D": [
"config/freecad-property-linksubhidden-mutation.json",
"check:freecad-property-linksubhidden-mutation"
],
"E": [
"src/facade/types.ts",
"src/facade/fcstd.ts",
"src/facade/mockFacade.ts",
"src/facade/index.ts",
"tests/propertyLinkSubHiddenFacade.test.ts",
"test:freecad-property-linksubhidden-facade"
],
"F": [
"tests/propertyLinkSubHiddenTransaction.test.ts",
"test:freecad-property-linksubhidden-transaction"
],
"G": [
"config/freecad-property-linksubhidden-roundtrip.json",
"check:freecad-property-linksubhidden-roundtrip"
],
"H": [
"config/chrome-property-linksubhidden-verification.json",
"check:chrome-property-linksubhidden"
]
},
"promotion": {
"from": "opaque-fcstd-proxy",
"to": "native-editable-codec",
"facadeValueModel": "same-document-object-and-ordered-sub-element-name-array-or-null",
"writableRecords": 4,
"objectTypeCount": 4,
"propertyStatus": "LockDynamic,PropHidden",
"linkScope": "Hidden",
"runtimeDependencyEdges": 0,
"fcstdElement": "LinkSub",
"nativeRoundTripValue": {
"schemaVersion": 1,
"objectId": "ColorSourceB",
"subElements": [
"Face5"
]
},
"browserRoundTripValue": {
"schemaVersion": 1,
"objectId": "ColorSourceB",
"subElements": [
"Face5"
]
},
"hiddenUiFiltered": true,
"hiddenLinksPreserved": true,
"nativeDependencyMetadataNormalized": true,
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 37,
"nativeEditableRecords": 4377,
"opaqueTypes": 43,
"opaqueRecords": 450,
"exactPromotionReady": false,
"exactBlocker": "43 runtime property types and 450 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T23:38:19.736Z"
}

View File

@@ -0,0 +1,369 @@
{
"schemaVersion": 1,
"status": "pass",
"baselineId": "freecad-1.1.1-property-linksubhidden-roundtrip",
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"propertyType": "App::PropertyLinkSubHidden",
"archives": {
"nativeInitial": {
"path": ".cache/freecad/property-linksubhidden-roundtrip/native-initial.FCStd",
"bytes": 3123,
"sha256": "f707b0d65984e40a55e9538f76bc3a8953cafcfd3f7139deee10b494e966cac4"
},
"webEdited": {
"path": ".cache/freecad/property-linksubhidden-roundtrip/web-edited.FCStd",
"bytes": 3021,
"sha256": "ee2630b9866a996245692db6a0ce0c20419616449abe731ac94212ac5c1fdfcc"
},
"nativeResaved": {
"path": ".cache/freecad/property-linksubhidden-roundtrip/native-resaved.FCStd",
"bytes": 3117,
"sha256": "703168cea20dd1d8affafea452eed8ad7a85df21d2c2747cd944a359a290d9bf"
}
},
"nativeInitial": {
"object": {
"editorMode": [
"Hidden"
],
"group": " Link",
"name": "LinkGroupProbe",
"outList": [],
"propertyName": "ColoredElements",
"propertyStatus": [
"LockDynamic",
"26"
],
"propertyTypeId": "App::PropertyLinkSubHidden",
"shape": {
"applicable": false,
"reason": "host-has-no-shape-property"
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "App::LinkGroup",
"value": {
"object": "ColorSourceA",
"subElements": [
"Face1",
"Face3"
]
}
},
"objectSet": [
{
"name": "LinkGroupProbe",
"typeId": "App::LinkGroup"
},
{
"name": "ColorSourceA",
"typeId": "Part::Feature"
},
{
"name": "ColorSourceB",
"typeId": "Part::Feature"
}
],
"targets": {
"ColorSourceA": {
"inList": [],
"shape": {
"applicable": true,
"area": 52,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 24
},
"typeId": "Part::Feature"
},
"ColorSourceB": {
"inList": [],
"shape": {
"applicable": true,
"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": "ColoredElements",
"typeId": "App::PropertyLinkSubHidden",
"element": "LinkSub",
"value": "ColorSourceA",
"nativeStatus": 67109120,
"statusNames": [
"LockDynamic",
"PropHidden"
],
"subElements": [
"Face1",
"Face3"
]
},
"after": {
"name": "ColoredElements",
"typeId": "App::PropertyLinkSubHidden",
"element": "LinkSub",
"value": "ColorSourceB",
"nativeStatus": 67109120,
"statusNames": [
"LockDynamic",
"PropHidden"
],
"subElements": [
"Face5"
]
},
"targetMarkedTouched": true,
"initialDependencyTargets": [
"ColorSourceA"
],
"webDependencyTargets": [
"ColorSourceA"
],
"hiddenDependencyMetadataPreserved": true,
"webOutputMatches": true,
"objectSetPreserved": true,
"semanticObjectsPreserved": true,
"opaquePathsPreserved": 2,
"opaqueEntriesPreserved": true
},
"nativeAfter": {
"reopened": {
"object": {
"editorMode": [
"Hidden"
],
"group": " Link",
"name": "LinkGroupProbe",
"outList": [],
"propertyName": "ColoredElements",
"propertyStatus": [
"LockDynamic",
"26"
],
"propertyTypeId": "App::PropertyLinkSubHidden",
"shape": {
"applicable": false,
"reason": "host-has-no-shape-property"
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "App::LinkGroup",
"value": {
"object": "ColorSourceB",
"subElements": [
"Face5"
]
}
},
"objectSet": [
{
"name": "LinkGroupProbe",
"typeId": "App::LinkGroup"
},
{
"name": "ColorSourceA",
"typeId": "Part::Feature"
},
{
"name": "ColorSourceB",
"typeId": "Part::Feature"
}
],
"targets": {
"ColorSourceA": {
"inList": [],
"shape": {
"applicable": true,
"area": 52,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 24
},
"typeId": "Part::Feature"
},
"ColorSourceB": {
"inList": [],
"shape": {
"applicable": true,
"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": " Link",
"name": "LinkGroupProbe",
"outList": [],
"propertyName": "ColoredElements",
"propertyStatus": [
"LockDynamic",
"26"
],
"propertyTypeId": "App::PropertyLinkSubHidden",
"shape": {
"applicable": false,
"reason": "host-has-no-shape-property"
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "App::LinkGroup",
"value": {
"object": "ColorSourceB",
"subElements": [
"Face5"
]
}
},
"objectSet": [
{
"name": "LinkGroupProbe",
"typeId": "App::LinkGroup"
},
{
"name": "ColorSourceA",
"typeId": "Part::Feature"
},
{
"name": "ColorSourceB",
"typeId": "Part::Feature"
}
],
"targets": {
"ColorSourceA": {
"inList": [],
"shape": {
"applicable": true,
"area": 52,
"brepSha256": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"edges": 12,
"faces": 6,
"isNull": false,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 24
},
"typeId": "Part::Feature"
},
"ColorSourceB": {
"inList": [],
"shape": {
"applicable": true,
"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": {
"schemaVersion": 1,
"objectId": "ColorSourceB",
"subElements": [
"Face5"
]
},
"webValue": {
"schemaVersion": 1,
"objectId": "ColorSourceB",
"subElements": [
"Face5"
]
},
"reopenedValue": {
"schemaVersion": 1,
"objectId": "ColorSourceB",
"subElements": [
"Face5"
]
},
"resavedValue": {
"schemaVersion": 1,
"objectId": "ColorSourceB",
"subElements": [
"Face5"
]
},
"nativeOutputMatches": true,
"hiddenLinksPreserved": true,
"nativeResavedDependencyTargets": [
"ColorSourceB"
],
"nativeDependencyMetadataNormalized": true,
"targetShapeStructurePreserved": true,
"ownerShapePreserved": true,
"nativeTargetBrepHashes": [
{
"ColorSourceA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ColorSourceB": "82bf07000178ed1f34895ff3e2510f838cd26a6247e2e395fff73feb2117960c"
},
{
"ColorSourceA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ColorSourceB": "82bf07000178ed1f34895ff3e2510f838cd26a6247e2e395fff73feb2117960c"
},
{
"ColorSourceA": "8c42068f05129bb15610da52f3fef1132d8f4459ae9662549de0c14dbd6ee44b",
"ColorSourceB": "82bf07000178ed1f34895ff3e2510f838cd26a6247e2e395fff73feb2117960c"
}
],
"unknownSemanticDrift": false,
"zeroUnknownDrift": true
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,117 @@
{
"schemaVersion": 1,
"status": "pass",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyLinkSubListGlobal",
"recordCount": 1,
"objectTypeCount": 1,
"writableRecordCount": 1,
"records": [
{
"objectTypeId": "PartDesign::ShapeBinder",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "Support",
"group": "",
"statusRaw": [],
"statusNames": [],
"defaultRaw": [],
"valueModel": {
"kind": "same-document-object-and-ordered-sub-element-pair-list",
"inheritedFrom": "App::PropertyLinkSubList",
"orderPreserved": true,
"duplicatesPreserved": true,
"writable": true
},
"inputs": {
"nativeCppSetValues": "parallel DocumentObject and sub-element lists",
"emptyListMeansNoReferences": true,
"nullObjectClears": true,
"detachedObjectRejected": true,
"crossDocumentRejectedWithoutLinkAllowExternal": true,
"invalidSubElementAcceptedAsReference": true
},
"dependencies": {
"linkScope": "Global",
"createsBacklinks": true,
"includedByDefaultGetLinks": true,
"includedByGetLinksAll": true,
"defaultDagDependency": true
},
"applicability": {
"requiredObjectTypeId": "PartDesign::ShapeBinder",
"role": "ShapeBinder source geometry support",
"propertyWriteRequiresShape": false,
"source": "PartDesign ShapeBinder Support"
}
}
],
"typeContract": {
"inheritedFrom": "App::PropertyLinkSubList",
"linkScope": "Global",
"propertyStatus": [],
"xmlElement": "LinkSubList",
"xmlChildElement": "Link",
"emptyListMeans": "no-references",
"crossDocumentBoundary": "reject-without-LinkAllowExternal"
},
"nativeEvidence": {
"structureOracle": {
"path": "config/freecad-partdesign-structure-oracle.json",
"baselineId": "freecad-1.1.1-partdesign-structure-oracle",
"crossDocumentShapeBinderSupportType": "App::PropertyLinkSubListGlobal",
"crossDocumentAccepted": false,
"crossDocumentError": "PropertyLinkSubList does not support external object",
"crossDocumentShapeBinderSupport": []
},
"runtimeHost": "PartDesign::ShapeBinder.Support"
},
"provenance": {
"runtime": {
"path": ".cache/freecad/reference-desktop.json",
"bytes": 2298709,
"sha256": "082400ec7379e8efc2af16709032d45890d7092277967b714acb05761fd1c2a7"
},
"oracle": {
"path": "config/freecad-partdesign-structure-oracle.json",
"bytes": 6865,
"sha256": "b5bb2af23231997e3e0d821394eb76135acddc8e75c4a51d9f36715870cddf7e"
},
"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/PartDesign/App/ShapeBinder.h",
"bytes": 6455,
"sha256": "471206a4148fbe7008bbb961be3d7ee88da09ef05baef1fa2fe24bb24f765944"
},
{
"path": ".cache/freecad/FreeCAD/src/Mod/PartDesign/App/ShapeBinder.cpp",
"bytes": 44837,
"sha256": "189fe3b26f122ff93b9c7abfed2ba08988d3e82b143e423497be170997167876"
}
]
},
"classification": "opaque-fcstd-proxy",
"nextPhases": [
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I"
]
}

View File

@@ -0,0 +1,400 @@
{
"baselineId": "freecad-1.1.1-property-linksublistglobal-mutation",
"case": {
"before": {
"editorMode": [],
"group": "",
"objectSet": [
{
"name": "ShapeBinderProbe",
"typeId": "PartDesign::ShapeBinder"
},
{
"name": "SourceBox",
"typeId": "Part::Feature"
},
{
"name": "SecondBox",
"typeId": "Part::Feature"
}
],
"ownerOutList": [
"SourceBox",
"SourceBox",
"SecondBox"
],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyLinkSubListGlobal",
"shape": {
"brepSha256": "cdf63b68f7523256f757529d76f1a8ee791ee8520012e006431f965fe4c8eaa7",
"edges": 8,
"faces": 2,
"isNull": false,
"solids": 0,
"vertices": 8,
"volume": 40.0
},
"statusString": "Valid",
"targetInLists": {
"SecondBox": [
"ShapeBinderProbe"
],
"SourceBox": [
"ShapeBinderProbe",
"ShapeBinderProbe"
]
},
"targetShapes": {
"SecondBox": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24.0
},
"SourceBox": {
"brepSha256": "02946feeb666b112d0ff0b224301cf5e9aa877a951e97f8f41126c6d4151d417",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 120.0
}
},
"value": [
{
"object": "SourceBox",
"subElements": [
"Face1",
"Face2"
]
},
{
"object": "SecondBox",
"subElements": [
"Face1"
]
}
]
},
"editRecomputeResult": true,
"edited": {
"editorMode": [],
"group": "",
"objectSet": [
{
"name": "ShapeBinderProbe",
"typeId": "PartDesign::ShapeBinder"
},
{
"name": "SourceBox",
"typeId": "Part::Feature"
},
{
"name": "SecondBox",
"typeId": "Part::Feature"
}
],
"ownerOutList": [
"SecondBox"
],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyLinkSubListGlobal",
"shape": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24.0
},
"statusString": "Valid",
"targetInLists": {
"SecondBox": [
"ShapeBinderProbe"
],
"SourceBox": []
},
"targetShapes": {
"SecondBox": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24.0
},
"SourceBox": {
"brepSha256": "02946feeb666b112d0ff0b224301cf5e9aa877a951e97f8f41126c6d4151d417",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 120.0
}
},
"value": [
{
"object": "SecondBox",
"subElements": []
}
]
},
"objectName": "ShapeBinderProbe",
"objectTypeId": "PartDesign::ShapeBinder",
"propertyName": "Support",
"restoreRecomputeResult": true,
"restored": {
"editorMode": [],
"group": "",
"objectSet": [
{
"name": "ShapeBinderProbe",
"typeId": "PartDesign::ShapeBinder"
},
{
"name": "SourceBox",
"typeId": "Part::Feature"
},
{
"name": "SecondBox",
"typeId": "Part::Feature"
}
],
"ownerOutList": [
"SourceBox",
"SourceBox",
"SecondBox"
],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyLinkSubListGlobal",
"shape": {
"brepSha256": "cdf63b68f7523256f757529d76f1a8ee791ee8520012e006431f965fe4c8eaa7",
"edges": 8,
"faces": 2,
"isNull": false,
"solids": 0,
"vertices": 8,
"volume": 40.0
},
"statusString": "Valid",
"targetInLists": {
"SecondBox": [
"ShapeBinderProbe"
],
"SourceBox": [
"ShapeBinderProbe",
"ShapeBinderProbe"
]
},
"targetShapes": {
"SecondBox": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24.0
},
"SourceBox": {
"brepSha256": "02946feeb666b112d0ff0b224301cf5e9aa877a951e97f8f41126c6d4151d417",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 120.0
}
},
"value": [
{
"object": "SourceBox",
"subElements": [
"Face1",
"Face2"
]
},
{
"object": "SecondBox",
"subElements": [
"Face1"
]
}
]
},
"semanticStateRestored": true,
"touchedAfterEdit": {
"editorMode": [],
"group": "",
"objectSet": [
{
"name": "ShapeBinderProbe",
"typeId": "PartDesign::ShapeBinder"
},
{
"name": "SourceBox",
"typeId": "Part::Feature"
},
{
"name": "SecondBox",
"typeId": "Part::Feature"
}
],
"ownerOutList": [
"SecondBox"
],
"ownerState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyLinkSubListGlobal",
"shape": {
"brepSha256": "cdf63b68f7523256f757529d76f1a8ee791ee8520012e006431f965fe4c8eaa7",
"edges": 8,
"faces": 2,
"isNull": false,
"solids": 0,
"vertices": 8,
"volume": 40.0
},
"statusString": "Touched",
"targetInLists": {
"SecondBox": [
"ShapeBinderProbe"
],
"SourceBox": []
},
"targetShapes": {
"SecondBox": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24.0
},
"SourceBox": {
"brepSha256": "02946feeb666b112d0ff0b224301cf5e9aa877a951e97f8f41126c6d4151d417",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 120.0
}
},
"value": [
{
"object": "SecondBox",
"subElements": []
}
]
},
"touchedAfterRestore": {
"editorMode": [],
"group": "",
"objectSet": [
{
"name": "ShapeBinderProbe",
"typeId": "PartDesign::ShapeBinder"
},
{
"name": "SourceBox",
"typeId": "Part::Feature"
},
{
"name": "SecondBox",
"typeId": "Part::Feature"
}
],
"ownerOutList": [
"SourceBox",
"SourceBox",
"SecondBox"
],
"ownerState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyLinkSubListGlobal",
"shape": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24.0
},
"statusString": "Touched",
"targetInLists": {
"SecondBox": [
"ShapeBinderProbe"
],
"SourceBox": [
"ShapeBinderProbe",
"ShapeBinderProbe"
]
},
"targetShapes": {
"SecondBox": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24.0
},
"SourceBox": {
"brepSha256": "02946feeb666b112d0ff0b224301cf5e9aa877a951e97f8f41126c6d4151d417",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 120.0
}
},
"value": [
{
"object": "SourceBox",
"subElements": [
"Face1",
"Face2"
]
},
{
"object": "SecondBox",
"subElements": [
"Face1"
]
}
]
},
"valueRestored": true
},
"caseCount": 1,
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"propertyType": "App::PropertyLinkSubListGlobal",
"schemaVersion": 1,
"status": "pass"
}

View File

@@ -0,0 +1,100 @@
{
"schemaVersion": 1,
"status": "pass",
"taskId": "PROP-app-propertylinksublistglobal-I",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyLinkSubListGlobal",
"recordCount": 1,
"phaseEvidence": {
"A": [
"config/freecad-property-linksublistglobal-inventory.json",
"check:freecad-property-linksublistglobal-inventory"
],
"B": [
"config/freecad-property-linksublistglobal-success.json",
"check:freecad-property-linksublistglobal-success"
],
"C": [
"config/freecad-property-linksublistglobal-failure.json",
"check:freecad-property-linksublistglobal-failure"
],
"D": [
"config/freecad-property-linksublistglobal-mutation.json",
"check:freecad-property-linksublistglobal-mutation"
],
"E": [
"src/facade/types.ts",
"src/facade/fcstd.ts",
"src/facade/mockFacade.ts",
"src/facade/index.ts",
"tests/propertyLinkSubListGlobalFacade.test.ts",
"test:freecad-property-linksublistglobal-facade"
],
"F": [
"tests/propertyLinkSubListGlobalTransaction.test.ts",
"test:freecad-property-linksublistglobal-transaction"
],
"G": [
"config/freecad-property-linksublistglobal-roundtrip.json",
"check:freecad-property-linksublistglobal-roundtrip"
],
"H": [
"config/chrome-property-linksublistglobal-verification.json",
"check:chrome-property-linksublistglobal"
]
},
"promotion": {
"from": "opaque-fcstd-proxy",
"to": "native-editable-codec",
"facadeValueModel": "same-document-object-and-ordered-sub-element-pair-list",
"writableRecords": 1,
"objectTypeCount": 1,
"propertyStatus": "",
"linkScope": "Global",
"runtimeDependencyEdges": 2,
"fcstdElement": "LinkSubList",
"nativeRoundTripValue": [
{
"object": "SecondBox",
"subElements": [
"Face1"
]
},
{
"object": "SourceBox",
"subElements": [
"Face1"
]
}
],
"browserRoundTripValue": {
"schemaVersion": 1,
"entries": [
{
"objectId": "SecondBox",
"subElement": "Face1"
},
{
"objectId": "SourceBox",
"subElement": "Face1"
}
]
},
"globalBacklinksPreserved": true,
"nativeDependenciesNormalized": true,
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 37,
"nativeEditableRecords": 4377,
"opaqueTypes": 43,
"opaqueRecords": 450,
"exactPromotionReady": false,
"exactBlocker": "43 runtime property types and 450 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-18T00:49:36.963Z"
}

View File

@@ -0,0 +1,396 @@
{
"schemaVersion": 1,
"status": "pass",
"baselineId": "freecad-1.1.1-property-linksublistglobal-roundtrip",
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"native": {
"created": {
"object": {
"editorMode": [],
"group": "",
"name": "ShapeBinderProbe",
"outList": [
"SourceBox",
"SourceBox",
"SecondBox"
],
"propertyName": "Support",
"propertyStatus": [],
"propertyTypeId": "App::PropertyLinkSubListGlobal",
"shape": {
"brepSha256": "cdf63b68f7523256f757529d76f1a8ee791ee8520012e006431f965fe4c8eaa7",
"edges": 8,
"faces": 2,
"isNull": false,
"solids": 0,
"vertices": 8,
"volume": 40
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "PartDesign::ShapeBinder",
"value": [
{
"object": "SourceBox",
"subElements": [
"Face1",
"Face2"
]
},
{
"object": "SecondBox",
"subElements": [
"Face1"
]
}
]
},
"objectSet": [
{
"name": "ShapeBinderProbe",
"typeId": "PartDesign::ShapeBinder"
},
{
"name": "SourceBox",
"typeId": "Part::Feature"
},
{
"name": "SecondBox",
"typeId": "Part::Feature"
}
],
"targets": {
"SecondBox": {
"inList": [
"ShapeBinderProbe"
],
"shape": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24
},
"typeId": "Part::Feature"
},
"SourceBox": {
"inList": [
"ShapeBinderProbe",
"ShapeBinderProbe"
],
"shape": {
"brepSha256": "02946feeb666b112d0ff0b224301cf5e9aa877a951e97f8f41126c6d4151d417",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 120
},
"typeId": "Part::Feature"
}
}
},
"inspectedType": "App::PropertyLinkSubListGlobal",
"inspectedElement": "LinkSubList",
"decodedValue": {
"schemaVersion": 1,
"entries": [
{
"objectId": "SourceBox",
"subElement": "Face1"
},
{
"objectId": "SourceBox",
"subElement": "Face2"
},
{
"objectId": "SecondBox",
"subElement": "Face1"
}
]
},
"decoded": true,
"reopened": {
"object": {
"editorMode": [],
"group": "",
"name": "ShapeBinderProbe",
"outList": [
"SecondBox",
"SourceBox"
],
"propertyName": "Support",
"propertyStatus": [],
"propertyTypeId": "App::PropertyLinkSubListGlobal",
"shape": {
"brepSha256": "b8d41291bdc8b3c0ecf6b3ce516eb8e58dc57f7e98c7f61c066d7ce5371b2257",
"edges": 4,
"faces": 1,
"isNull": false,
"solids": 0,
"vertices": 4,
"volume": 0
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "PartDesign::ShapeBinder",
"value": [
{
"object": "SecondBox",
"subElements": [
"Face1"
]
},
{
"object": "SourceBox",
"subElements": [
"Face1"
]
}
]
},
"objectSet": [
{
"name": "ShapeBinderProbe",
"typeId": "PartDesign::ShapeBinder"
},
{
"name": "SourceBox",
"typeId": "Part::Feature"
},
{
"name": "SecondBox",
"typeId": "Part::Feature"
}
],
"targets": {
"SecondBox": {
"inList": [
"ShapeBinderProbe"
],
"shape": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24
},
"typeId": "Part::Feature"
},
"SourceBox": {
"inList": [
"ShapeBinderProbe"
],
"shape": {
"brepSha256": "02946feeb666b112d0ff0b224301cf5e9aa877a951e97f8f41126c6d4151d417",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 120
},
"typeId": "Part::Feature"
}
}
},
"resaved": {
"object": {
"editorMode": [],
"group": "",
"name": "ShapeBinderProbe",
"outList": [
"SecondBox",
"SourceBox"
],
"propertyName": "Support",
"propertyStatus": [],
"propertyTypeId": "App::PropertyLinkSubListGlobal",
"shape": {
"brepSha256": "b8d41291bdc8b3c0ecf6b3ce516eb8e58dc57f7e98c7f61c066d7ce5371b2257",
"edges": 4,
"faces": 1,
"isNull": false,
"solids": 0,
"vertices": 4,
"volume": 0
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "PartDesign::ShapeBinder",
"value": [
{
"object": "SecondBox",
"subElements": [
"Face1"
]
},
{
"object": "SourceBox",
"subElements": [
"Face1"
]
}
]
},
"objectSet": [
{
"name": "ShapeBinderProbe",
"typeId": "PartDesign::ShapeBinder"
},
{
"name": "SourceBox",
"typeId": "Part::Feature"
},
{
"name": "SecondBox",
"typeId": "Part::Feature"
}
],
"targets": {
"SecondBox": {
"inList": [
"ShapeBinderProbe"
],
"shape": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24
},
"typeId": "Part::Feature"
},
"SourceBox": {
"inList": [
"ShapeBinderProbe"
],
"shape": {
"brepSha256": "02946feeb666b112d0ff0b224301cf5e9aa877a951e97f8f41126c6d4151d417",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 120
},
"typeId": "Part::Feature"
}
}
}
},
"web": {
"beforeValue": {
"schemaVersion": 1,
"entries": [
{
"objectId": "SourceBox",
"subElement": "Face1"
},
{
"objectId": "SourceBox",
"subElement": "Face2"
},
{
"objectId": "SecondBox",
"subElement": "Face1"
}
]
},
"afterValue": {
"schemaVersion": 1,
"entries": [
{
"objectId": "SecondBox",
"subElement": "Face1"
},
{
"objectId": "SourceBox",
"subElement": "Face1"
}
]
},
"beforeDecoded": true,
"afterDecoded": true,
"archiveBytes": 4013,
"inspectedType": "App::PropertyLinkSubListGlobal",
"inspectedElement": "LinkSubList",
"objectCount": 3
},
"classification": {
"requestedValue": {
"schemaVersion": 1,
"entries": [
{
"objectId": "SecondBox",
"subElement": "Face1"
},
{
"objectId": "SourceBox",
"subElement": "Face1"
}
]
},
"nativeInitialValue": {
"schemaVersion": 1,
"entries": [
{
"objectId": "SourceBox",
"subElement": "Face1"
},
{
"objectId": "SourceBox",
"subElement": "Face2"
},
{
"objectId": "SecondBox",
"subElement": "Face1"
}
]
},
"webValue": {
"schemaVersion": 1,
"entries": [
{
"objectId": "SecondBox",
"subElement": "Face1"
},
{
"objectId": "SourceBox",
"subElement": "Face1"
}
]
},
"resavedValue": [
{
"object": "SecondBox",
"subElements": [
"Face1"
]
},
{
"object": "SourceBox",
"subElements": [
"Face1"
]
}
],
"zeroUnknownDrift": true,
"globalBacklinksPreserved": true,
"nativeDependenciesNormalized": true
}
}

View File

@@ -0,0 +1,312 @@
{
"baselineId": "freecad-1.1.1-property-linksublistglobal-success",
"bindingBoundary": {
"emptyListMeans": "no-references",
"multipleObjectReferencesPreserved": true,
"oracleDefault": [],
"safeFirstRead": "assign-empty-list-before-read",
"shapeBinderUsesFirstPartFeature": true
},
"caseCount": 1,
"cases": [
{
"group": "",
"mode": "direct-native-property-setter",
"objectName": "ShapeBinderProbe",
"objectTypeId": "PartDesign::ShapeBinder",
"phases": {
"empty": {
"editorMode": [],
"group": "",
"objectSet": [
{
"name": "ShapeBinderProbe",
"typeId": "PartDesign::ShapeBinder"
},
{
"name": "SourceBox",
"typeId": "Part::Feature"
},
{
"name": "SecondBox",
"typeId": "Part::Feature"
}
],
"ownerOutList": [],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyLinkSubListGlobal",
"recomputeResult": true,
"shape": {
"brepSha256": null,
"edges": 0,
"faces": 0,
"isNull": true,
"solids": 0,
"vertices": 0
},
"statusString": "Valid",
"targetInLists": {
"SecondBox": [],
"SourceBox": []
},
"targetShapes": {
"SecondBox": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24.0
},
"SourceBox": {
"brepSha256": "02946feeb666b112d0ff0b224301cf5e9aa877a951e97f8f41126c6d4151d417",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 120.0
}
},
"value": []
},
"multipleObjects": {
"editorMode": [],
"group": "",
"objectSet": [
{
"name": "ShapeBinderProbe",
"typeId": "PartDesign::ShapeBinder"
},
{
"name": "SourceBox",
"typeId": "Part::Feature"
},
{
"name": "SecondBox",
"typeId": "Part::Feature"
}
],
"ownerOutList": [
"SourceBox",
"SourceBox",
"SecondBox"
],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyLinkSubListGlobal",
"recomputeResult": true,
"shape": {
"brepSha256": "cdf63b68f7523256f757529d76f1a8ee791ee8520012e006431f965fe4c8eaa7",
"edges": 8,
"faces": 2,
"isNull": false,
"solids": 0,
"vertices": 8,
"volume": 40.0
},
"statusString": "Valid",
"targetInLists": {
"SecondBox": [
"ShapeBinderProbe"
],
"SourceBox": [
"ShapeBinderProbe",
"ShapeBinderProbe"
]
},
"targetShapes": {
"SecondBox": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24.0
},
"SourceBox": {
"brepSha256": "02946feeb666b112d0ff0b224301cf5e9aa877a951e97f8f41126c6d4151d417",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 120.0
}
},
"value": [
{
"object": "SourceBox",
"subElements": [
"Face1",
"Face2"
]
},
{
"object": "SecondBox",
"subElements": [
"Face1"
]
}
]
},
"sameObjectSubElements": {
"editorMode": [],
"group": "",
"objectSet": [
{
"name": "ShapeBinderProbe",
"typeId": "PartDesign::ShapeBinder"
},
{
"name": "SourceBox",
"typeId": "Part::Feature"
},
{
"name": "SecondBox",
"typeId": "Part::Feature"
}
],
"ownerOutList": [
"SourceBox",
"SourceBox"
],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyLinkSubListGlobal",
"recomputeResult": true,
"shape": {
"brepSha256": "cdf63b68f7523256f757529d76f1a8ee791ee8520012e006431f965fe4c8eaa7",
"edges": 8,
"faces": 2,
"isNull": false,
"solids": 0,
"vertices": 8,
"volume": 40.0
},
"statusString": "Valid",
"targetInLists": {
"SecondBox": [],
"SourceBox": [
"ShapeBinderProbe",
"ShapeBinderProbe"
]
},
"targetShapes": {
"SecondBox": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24.0
},
"SourceBox": {
"brepSha256": "02946feeb666b112d0ff0b224301cf5e9aa877a951e97f8f41126c6d4151d417",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 120.0
}
},
"value": [
{
"object": "SourceBox",
"subElements": [
"Face1",
"Face2"
]
}
]
},
"wholeObject": {
"editorMode": [],
"group": "",
"objectSet": [
{
"name": "ShapeBinderProbe",
"typeId": "PartDesign::ShapeBinder"
},
{
"name": "SourceBox",
"typeId": "Part::Feature"
},
{
"name": "SecondBox",
"typeId": "Part::Feature"
}
],
"ownerOutList": [
"SourceBox"
],
"ownerState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyLinkSubListGlobal",
"recomputeResult": true,
"shape": {
"brepSha256": "02946feeb666b112d0ff0b224301cf5e9aa877a951e97f8f41126c6d4151d417",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 120.0
},
"statusString": "Valid",
"targetInLists": {
"SecondBox": [],
"SourceBox": [
"ShapeBinderProbe"
]
},
"targetShapes": {
"SecondBox": {
"brepSha256": "e1a7def2954228be09134d37fae0aab512d591e4e2d42e37ede4272e49ca8259",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 24.0
},
"SourceBox": {
"brepSha256": "02946feeb666b112d0ff0b224301cf5e9aa877a951e97f8f41126c6d4151d417",
"edges": 12,
"faces": 6,
"isNull": false,
"solids": 1,
"vertices": 8,
"volume": 120.0
}
},
"value": [
{
"object": "SourceBox",
"subElements": []
}
]
}
},
"propertyName": "Support"
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"propertyType": "App::PropertyLinkSubListGlobal",
"schemaVersion": 1,
"status": "pass"
}

View File

@@ -24,7 +24,7 @@
"wrong-document-root": 77
},
"timing": {
"p95Ms": 0.135,
"maxMs": 2.707
"p95Ms": 0.123,
"maxMs": 2.653
}
}

View File

@@ -41,7 +41,7 @@
"zero-revolution-axis": 67
},
"timing": {
"p95Ms": 0.021,
"maxMs": 1.057
"p95Ms": 0.02,
"maxMs": 0.499
}
}

View File

@@ -22,7 +22,7 @@
"invalid": 800
},
"timing": {
"p95Ms": 0.04,
"maxMs": 0.907
"p95Ms": 0.029,
"maxMs": 0.77
}
}

View File

@@ -22,16 +22,16 @@
"bytes": 556597,
"sha256": "1679307fb0f01e9d7b9f37a081458bf44583e4d1899edf9224b49a1435ce7105"
},
{
"path": "assets/index-CMgfoKgp.js",
"bytes": 1215336,
"sha256": "1b64ba3601119cad5345af95457d701087124370070778c1f637db8130b84e43"
},
{
"path": "assets/index-CSuKYsCZ.css",
"bytes": 67322,
"sha256": "32d3157ecf81272245f0d8aa1a11887cefb8aa9502f966df90a83797519df208"
},
{
"path": "assets/index-N_Zqif4x.js",
"bytes": 1233820,
"sha256": "e2ce6dac513252b30a40a5a70d1a7a1b71759410fae147740e37413969554f9e"
},
{
"path": "assets/nativeHistoryWorkerEntry-BEDB1h7o.js",
"bytes": 26720,
@@ -335,7 +335,7 @@
{
"path": "index.html",
"bytes": 678,
"sha256": "215c8954a63826c2bfa193c7e38b3678357e61045b31382233d71353a84031da"
"sha256": "764ef600bfe7d428836d1058b8b58cb419367be9fe1c7d8470e98575279c9181"
},
{
"path": "manifest.webmanifest",
@@ -390,7 +390,7 @@
{
"path": "sw.js",
"bytes": 1390,
"sha256": "a480fa6da433c33ca56b3d12f983d210b9424ed9123c2e35b8e21926b4e054dd"
"sha256": "f03a7831f2a3a5e3106e7aa6c35017d294f772dacfe338cb7724d32ed8a89eb6"
},
{
"path": "vendor/camotics/camotics-sweep.wasm",
@@ -412,7 +412,7 @@
"status": "signed",
"algorithm": "Ed25519",
"keyId": "bitbybit-local-release-2026",
"payloadSha256": "b0fefc0b89c0e83124e7ea410bbde34b6f62a4955669b51fb821ba3df181f945",
"signature": "GJdf3bOkY9vdg/YKfFWeh1dkszxpg16VlYdTmrjpLe6PMfhlzvcYQnye4sWy5bFSPoLbXdD7FHom+6e4GTVFCw=="
"payloadSha256": "dee0cd0b74516c5ba582ea9b4fa507193b56564df833e59f519959891107f6dd",
"signature": "1vAcv9Tk6ejX0MmUECV0yamIQlzqZyueWLWsP35JAeEngyBQV2Zd7O6JpWcdy/kjwKqfHs13qaYmSIfXnQkMBQ=="
}
}