feat: promote font force heat flux and integer set properties
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 09:10:47 -04:00
parent d11566403d
commit 8f6053089a
159 changed files with 9687 additions and 163 deletions

View File

@@ -90,7 +90,7 @@
}
],
"area": 30,
"shapeId": "shape-mswzv1xd-1",
"shapeId": "shape-msx0x350-1",
"state": [
"Up-to-date"
],
@@ -139,7 +139,7 @@
"binder": {
"support": [],
"area": 30,
"shapeId": "shape-mswzv1xd-1",
"shapeId": "shape-msx0x350-1",
"state": [
"Up-to-date"
],
@@ -237,7 +237,7 @@
}
],
"area": 30,
"shapeId": "shape-mswzv1xd-1",
"shapeId": "shape-msx0x350-1",
"state": [
"Up-to-date"
],
@@ -286,7 +286,7 @@
"binder": {
"support": [],
"area": 30,
"shapeId": "shape-mswzv1xd-1",
"shapeId": "shape-msx0x350-1",
"state": [
"Up-to-date"
],
@@ -335,7 +335,7 @@
"binder": {
"support": [],
"area": 30,
"shapeId": "shape-mswzv1xd-1",
"shapeId": "shape-msx0x350-1",
"state": [
"Up-to-date"
],
@@ -433,7 +433,7 @@
}
],
"area": 30,
"shapeId": "shape-mswzv1xd-1",
"shapeId": "shape-msx0x350-1",
"state": [
"Up-to-date"
],
@@ -531,7 +531,7 @@
}
],
"area": 54,
"shapeId": "shape-mswzv1y3-3",
"shapeId": "shape-msx0x35t-3",
"state": [
"Up-to-date"
],
@@ -629,7 +629,7 @@
}
],
"area": 30,
"shapeId": "shape-mswzv1xd-1",
"shapeId": "shape-msx0x350-1",
"state": [
"Up-to-date"
],
@@ -727,7 +727,7 @@
}
],
"area": 54,
"shapeId": "shape-mswzv1y3-3",
"shapeId": "shape-msx0x35t-3",
"state": [
"Up-to-date"
],
@@ -825,7 +825,7 @@
}
],
"area": 54,
"shapeId": "shape-mswzv1y3-3",
"shapeId": "shape-msx0x35t-3",
"state": [
"Up-to-date"
],
@@ -923,7 +923,7 @@
}
],
"area": 30,
"shapeId": "shape-mswzv1xd-1",
"shapeId": "shape-msx0x350-1",
"state": [
"Up-to-date"
],
@@ -1021,7 +1021,7 @@
}
],
"area": 54,
"shapeId": "shape-mswzv1y3-3",
"shapeId": "shape-msx0x35t-3",
"state": [
"Up-to-date"
],
@@ -1059,8 +1059,8 @@
},
{
"path": "src/facade/mockFacade.ts",
"bytes": 171839,
"sha256": "5124f81066ec2a292d4c770d9f48b4908e844ac874542f2af34c70c5514514a6"
"bytes": 172346,
"sha256": "100b84bd3ebfe1a620885d70e98e97c864f33f5d478126c8586cca6deddfd0ac"
},
{
"path": "src/facade/geometryRuntime.ts",

View File

@@ -0,0 +1,63 @@
{
"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": {
"inputType": "text",
"label": "Font",
"beforeValue": "osifont",
"afterValue": "Noto Sans CJK SC",
"documentVersion": 2,
"dirty": true,
"objectState": "touched",
"errors": []
},
"persistence": {
"mode": "sqlite-opfs",
"sqliteWasm": true,
"opfs": true,
"savedMode": "sqlite-opfs",
"loadedValue": "Noto Sans CJK SC",
"loadedType": "App::PropertyFont",
"checkpointVersion": 2,
"recoveryIntegrity": "ok",
"fcstdElement": "String",
"fcstdValue": "Noto Sans CJK SC"
},
"resource": {
"byteLength": 34,
"roundTrip": true,
"released": true,
"markerRemoved": true
},
"worker": {
"constructed": [
{
"name": "bitbybit-persistence",
"url": "http://127.0.0.1:36431/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,64 @@
{
"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": {
"inputType": "number",
"label": "Force",
"unit": "mm*kg/s^2",
"beforeValue": 0,
"afterValue": 500000,
"documentVersion": 2,
"dirty": true,
"objectState": "touched",
"errors": []
},
"persistence": {
"mode": "sqlite-opfs",
"sqliteWasm": true,
"opfs": true,
"savedMode": "sqlite-opfs",
"loadedValue": 500000,
"loadedType": "App::PropertyForce",
"checkpointVersion": 2,
"recoveryIntegrity": "ok",
"fcstdElement": "Float",
"fcstdValue": "500000"
},
"resource": {
"byteLength": 35,
"roundTrip": true,
"released": true,
"markerRemoved": true
},
"worker": {
"constructed": [
{
"name": "bitbybit-persistence",
"url": "http://127.0.0.1:42533/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,64 @@
{
"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": {
"inputType": "number",
"label": "DFlux",
"unit": "kg/s^3",
"beforeValue": 0,
"afterValue": 500,
"documentVersion": 2,
"dirty": true,
"objectState": "touched",
"errors": []
},
"persistence": {
"mode": "sqlite-opfs",
"sqliteWasm": true,
"opfs": true,
"savedMode": "sqlite-opfs",
"loadedValue": 500,
"loadedType": "App::PropertyHeatFlux",
"checkpointVersion": 2,
"recoveryIntegrity": "ok",
"fcstdElement": "Float",
"fcstdValue": "500"
},
"resource": {
"byteLength": 38,
"roundTrip": true,
"released": true,
"markerRemoved": true
},
"worker": {
"constructed": [
{
"name": "bitbybit-persistence",
"url": "http://127.0.0.1:45625/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,74 @@
{
"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": {
"inputType": "text",
"label": "Nodes",
"beforeText": "1, 3",
"afterText": "-1, 8",
"beforeValue": [
1,
3
],
"afterValue": [
-1,
8
],
"documentVersion": 2,
"dirty": true,
"objectState": "touched",
"errors": []
},
"persistence": {
"mode": "sqlite-opfs",
"sqliteWasm": true,
"opfs": true,
"savedMode": "sqlite-opfs",
"loadedValue": [
-1,
8
],
"loadedType": "App::PropertyIntegerSet",
"checkpointVersion": 2,
"recoveryIntegrity": "ok",
"fcstdElement": "IntegerSet",
"fcstdValue": "[-1,8]"
},
"resource": {
"byteLength": 34,
"roundTrip": true,
"released": true,
"markerRemoved": true
},
"worker": {
"constructed": [
{
"name": "bitbybit-persistence",
"url": "http://127.0.0.1:41119/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-propertyfont-A",
"nextTask": "PROP-app-propertyintegerset-A",
"summary": {
"tasks": 1756,
"completed": 559,
"completed": 586,
"inProgress": 1,
"pending": 1196
"pending": 1169
},
"milestones": [
{
@@ -7602,7 +7602,7 @@
{
"id": "PROP-app-propertyfont-A",
"title": "Lock native inventory and preconditions: App::PropertyFont",
"status": "in_progress",
"status": "completed",
"dependencies": [
"PROP-app-propertyfileincluded-I"
],
@@ -7618,7 +7618,7 @@
{
"id": "PROP-app-propertyfont-B",
"title": "Capture native success evidence: App::PropertyFont",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyfont-A"
],
@@ -7634,7 +7634,7 @@
{
"id": "PROP-app-propertyfont-C",
"title": "Capture native failure and cancel evidence: App::PropertyFont",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyfont-B"
],
@@ -7650,7 +7650,7 @@
{
"id": "PROP-app-propertyfont-D",
"title": "Capture parameter mutation and restore evidence: App::PropertyFont",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyfont-C"
],
@@ -7666,7 +7666,7 @@
{
"id": "PROP-app-propertyfont-E",
"title": "Implement the Facade capability: App::PropertyFont",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyfont-D"
],
@@ -7682,7 +7682,7 @@
{
"id": "PROP-app-propertyfont-F",
"title": "Close transaction and recovery behavior: App::PropertyFont",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyfont-E"
],
@@ -7698,7 +7698,7 @@
{
"id": "PROP-app-propertyfont-G",
"title": "Close FCStd save, reopen and resave: App::PropertyFont",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyfont-F"
],
@@ -7714,7 +7714,7 @@
{
"id": "PROP-app-propertyfont-H",
"title": "Replay in a real browser: App::PropertyFont",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyfont-G"
],
@@ -7730,7 +7730,7 @@
{
"id": "PROP-app-propertyfont-I",
"title": "Promote capability and synchronize blockers: App::PropertyFont",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyfont-H"
],
@@ -7747,7 +7747,7 @@
{
"id": "PROP-app-propertyforce-A",
"title": "Lock native inventory and preconditions: App::PropertyForce",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyfont-I"
],
@@ -7763,7 +7763,7 @@
{
"id": "PROP-app-propertyforce-B",
"title": "Capture native success evidence: App::PropertyForce",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyforce-A"
],
@@ -7779,7 +7779,7 @@
{
"id": "PROP-app-propertyforce-C",
"title": "Capture native failure and cancel evidence: App::PropertyForce",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyforce-B"
],
@@ -7795,7 +7795,7 @@
{
"id": "PROP-app-propertyforce-D",
"title": "Capture parameter mutation and restore evidence: App::PropertyForce",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyforce-C"
],
@@ -7811,7 +7811,7 @@
{
"id": "PROP-app-propertyforce-E",
"title": "Implement the Facade capability: App::PropertyForce",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyforce-D"
],
@@ -7827,7 +7827,7 @@
{
"id": "PROP-app-propertyforce-F",
"title": "Close transaction and recovery behavior: App::PropertyForce",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyforce-E"
],
@@ -7843,7 +7843,7 @@
{
"id": "PROP-app-propertyforce-G",
"title": "Close FCStd save, reopen and resave: App::PropertyForce",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyforce-F"
],
@@ -7859,7 +7859,7 @@
{
"id": "PROP-app-propertyforce-H",
"title": "Replay in a real browser: App::PropertyForce",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyforce-G"
],
@@ -7875,7 +7875,7 @@
{
"id": "PROP-app-propertyforce-I",
"title": "Promote capability and synchronize blockers: App::PropertyForce",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyforce-H"
],
@@ -7892,7 +7892,7 @@
{
"id": "PROP-app-propertyheatflux-A",
"title": "Lock native inventory and preconditions: App::PropertyHeatFlux",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyforce-I"
],
@@ -7908,7 +7908,7 @@
{
"id": "PROP-app-propertyheatflux-B",
"title": "Capture native success evidence: App::PropertyHeatFlux",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyheatflux-A"
],
@@ -7924,7 +7924,7 @@
{
"id": "PROP-app-propertyheatflux-C",
"title": "Capture native failure and cancel evidence: App::PropertyHeatFlux",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyheatflux-B"
],
@@ -7940,7 +7940,7 @@
{
"id": "PROP-app-propertyheatflux-D",
"title": "Capture parameter mutation and restore evidence: App::PropertyHeatFlux",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyheatflux-C"
],
@@ -7956,7 +7956,7 @@
{
"id": "PROP-app-propertyheatflux-E",
"title": "Implement the Facade capability: App::PropertyHeatFlux",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyheatflux-D"
],
@@ -7972,7 +7972,7 @@
{
"id": "PROP-app-propertyheatflux-F",
"title": "Close transaction and recovery behavior: App::PropertyHeatFlux",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyheatflux-E"
],
@@ -7988,7 +7988,7 @@
{
"id": "PROP-app-propertyheatflux-G",
"title": "Close FCStd save, reopen and resave: App::PropertyHeatFlux",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyheatflux-F"
],
@@ -8004,7 +8004,7 @@
{
"id": "PROP-app-propertyheatflux-H",
"title": "Replay in a real browser: App::PropertyHeatFlux",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyheatflux-G"
],
@@ -8020,7 +8020,7 @@
{
"id": "PROP-app-propertyheatflux-I",
"title": "Promote capability and synchronize blockers: App::PropertyHeatFlux",
"status": "pending",
"status": "completed",
"dependencies": [
"PROP-app-propertyheatflux-H"
],
@@ -8037,7 +8037,7 @@
{
"id": "PROP-app-propertyintegerset-A",
"title": "Lock native inventory and preconditions: App::PropertyIntegerSet",
"status": "pending",
"status": "in_progress",
"dependencies": [
"PROP-app-propertyheatflux-I"
],

View File

@@ -542,6 +542,241 @@
"config/freecad-property-fileincluded-promotion.json",
"check:freecad-property-fileincluded-promotion"
]
},
{
"id": "PROP-app-propertyfont-A",
"evidence": [
"config/freecad-property-font-inventory.json",
"check:freecad-property-font-inventory"
]
},
{
"id": "PROP-app-propertyfont-B",
"evidence": [
"config/freecad-property-font-success.json",
"check:freecad-property-font-success"
]
},
{
"id": "PROP-app-propertyfont-C",
"evidence": [
"config/freecad-property-font-failure.json",
"check:freecad-property-font-failure"
]
},
{
"id": "PROP-app-propertyfont-D",
"evidence": [
"config/freecad-property-font-mutation.json",
"check:freecad-property-font-mutation"
]
},
{
"id": "PROP-app-propertyfont-E",
"evidence": [
"src/facade/types.ts",
"src/facade/fcstd.ts",
"src/facade/mockFacade.ts",
"src/App.tsx",
"tests/propertyFontFacade.test.ts",
"test:freecad-property-font-facade"
]
},
{
"id": "PROP-app-propertyfont-F",
"evidence": [
"tests/propertyFontTransaction.test.ts",
"test:freecad-property-font-transaction"
]
},
{
"id": "PROP-app-propertyfont-G",
"evidence": [
"config/freecad-property-font-roundtrip.json",
"check:freecad-property-font-roundtrip"
]
},
{
"id": "PROP-app-propertyfont-H",
"evidence": [
"config/chrome-property-font-verification.json",
"check:chrome-property-font"
]
},
{
"id": "PROP-app-propertyfont-I",
"evidence": [
"config/freecad-property-font-promotion.json",
"check:freecad-property-font-promotion"
]
},
{
"id": "PROP-app-propertyforce-A",
"evidence": [
"config/freecad-property-force-inventory.json",
"check:freecad-property-force-inventory"
]
},
{
"id": "PROP-app-propertyforce-B",
"evidence": [
"config/freecad-property-force-success.json",
"check:freecad-property-force-success"
]
},
{
"id": "PROP-app-propertyforce-C",
"evidence": [
"config/freecad-property-force-failure.json",
"check:freecad-property-force-failure"
]
},
{
"id": "PROP-app-propertyforce-D",
"evidence": [
"config/freecad-property-force-mutation.json",
"check:freecad-property-force-mutation"
]
},
{
"id": "PROP-app-propertyforce-E",
"evidence": [
"src/facade/units.ts",
"src/facade/types.ts",
"src/facade/fcstd.ts",
"src/facade/mockFacade.ts",
"src/App.tsx",
"tests/propertyForceFacade.test.ts",
"test:freecad-property-force-facade"
]
},
{
"id": "PROP-app-propertyforce-F",
"evidence": [
"tests/propertyForceTransaction.test.ts",
"test:freecad-property-force-transaction"
]
},
{
"id": "PROP-app-propertyforce-G",
"evidence": [
"config/freecad-property-force-roundtrip.json",
"check:freecad-property-force-roundtrip"
]
},
{
"id": "PROP-app-propertyforce-H",
"evidence": [
"config/chrome-property-force-verification.json",
"check:chrome-property-force"
]
},
{
"id": "PROP-app-propertyforce-I",
"evidence": [
"config/freecad-property-force-promotion.json",
"check:freecad-property-force-promotion"
]
},
{
"id": "PROP-app-propertyheatflux-A",
"evidence": [
"config/freecad-property-heatflux-inventory.json",
"check:freecad-property-heatflux-inventory"
]
},
{
"id": "PROP-app-propertyheatflux-B",
"evidence": [
"config/freecad-property-heatflux-success.json",
"check:freecad-property-heatflux-success"
]
},
{
"id": "PROP-app-propertyheatflux-C",
"evidence": [
"config/freecad-property-heatflux-failure.json",
"check:freecad-property-heatflux-failure"
]
},
{
"id": "PROP-app-propertyheatflux-D",
"evidence": [
"config/freecad-property-heatflux-mutation.json",
"check:freecad-property-heatflux-mutation"
]
},
{
"id": "PROP-app-propertyheatflux-E",
"evidence": [
"src/facade/units.ts",
"src/facade/types.ts",
"src/facade/fcstd.ts",
"src/facade/mockFacade.ts",
"src/App.tsx",
"tests/propertyHeatFluxFacade.test.ts",
"test:freecad-property-heatflux-facade"
]
},
{
"id": "PROP-app-propertyheatflux-F",
"evidence": [
"tests/propertyHeatFluxTransaction.test.ts",
"test:freecad-property-heatflux-transaction"
]
},
{
"id": "PROP-app-propertyheatflux-G",
"evidence": [
"config/freecad-property-heatflux-roundtrip.json",
"check:freecad-property-heatflux-roundtrip"
]
},
{
"id": "PROP-app-propertyheatflux-H",
"evidence": [
"config/chrome-property-heatflux-verification.json",
"check:chrome-property-heatflux"
]
},
{
"id": "PROP-app-propertyheatflux-I",
"evidence": [
"config/freecad-property-heatflux-promotion.json",
"check:freecad-property-heatflux-promotion"
]
},
{
"id": "PROP-app-propertyintegerset-A",
"evidence": ["config/freecad-property-integerset-inventory.json", "check:freecad-property-integerset-inventory"]
},
{
"id": "PROP-app-propertyintegerset-B",
"evidence": ["config/freecad-property-integerset-success.json", "check:freecad-property-integerset-success"]
},
{
"id": "PROP-app-propertyintegerset-C",
"evidence": ["config/freecad-property-integerset-failure.json", "check:freecad-property-integerset-failure"]
},
{
"id": "PROP-app-propertyintegerset-D",
"evidence": ["config/freecad-property-integerset-mutation.json", "check:freecad-property-integerset-mutation"]
},
{
"id": "PROP-app-propertyintegerset-E",
"evidence": ["src/facade/types.ts", "src/facade/fcstd.ts", "src/facade/mockFacade.ts", "src/App.tsx", "tests/propertyIntegerSetFacade.test.ts", "test:freecad-property-integerset-facade"]
},
{
"id": "PROP-app-propertyintegerset-F",
"evidence": ["tests/propertyIntegerSetTransaction.test.ts", "test:freecad-property-integerset-transaction"]
},
{
"id": "PROP-app-propertyintegerset-G",
"evidence": ["config/freecad-property-integerset-roundtrip.json", "check:freecad-property-integerset-roundtrip"]
},
{
"id": "PROP-app-propertyintegerset-H",
"evidence": ["config/chrome-property-integerset-verification.json", "check:chrome-property-integerset"]
}
]
}

View File

@@ -37,16 +37,16 @@
},
"supportSummary": {
"native-editable-codec": {
"typeCount": 30,
"recordCount": 4361
"typeCount": 34,
"recordCount": 4370
},
"native-specialized-codec": {
"typeCount": 5,
"recordCount": 683
},
"opaque-fcstd-proxy": {
"typeCount": 50,
"recordCount": 466
"typeCount": 46,
"recordCount": 457
}
},
"types": [
@@ -215,14 +215,14 @@
},
{
"typeId": "App::PropertyFont",
"support": "opaque-fcstd-proxy",
"support": "native-editable-codec",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": []
},
{
"typeId": "App::PropertyForce",
"support": "opaque-fcstd-proxy",
"support": "native-editable-codec",
"recordCount": 4,
"objectTypeCount": 2,
"statusNames": [
@@ -231,7 +231,7 @@
},
{
"typeId": "App::PropertyHeatFlux",
"support": "opaque-fcstd-proxy",
"support": "native-editable-codec",
"recordCount": 1,
"objectTypeCount": 1,
"statusNames": []
@@ -271,7 +271,7 @@
},
{
"typeId": "App::PropertyIntegerSet",
"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": 6615,
"sha256": "fad232fd5a013d40639069df2f8752f04fc5d373c6a7a7ece8ed3276612af9f3"
"bytes": 6710,
"sha256": "7362b5e31dfcfba144c78f525cf5e1c94ab687e2a57dd34118d4428e79867804"
},
"exactPromotionReady": false,
"exactBlocker": "50 runtime property types and 466 records remain opaque-only; complete native document and property semantics",
"generatedAt": "2026-08-17T08:49:24.621Z"
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics",
"generatedAt": "2026-08-17T13:03:27.855Z"
}

View File

@@ -54,13 +54,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 30,
"nativeEditableRecords": 4361,
"opaqueTypes": 50,
"opaqueRecords": 466,
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"exactPromotionReady": false,
"exactBlocker": "50 runtime property types and 466 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T08:49:33.800Z"
"generatedAt": "2026-08-17T13:03:42.988Z"
}

View File

@@ -59,13 +59,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 30,
"nativeEditableRecords": 4361,
"opaqueTypes": 50,
"opaqueRecords": 466,
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"exactPromotionReady": false,
"exactBlocker": "50 runtime property types and 466 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T08:49:33.776Z"
"generatedAt": "2026-08-17T13:03:43.029Z"
}

View File

@@ -68,13 +68,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 30,
"nativeEditableRecords": 4361,
"opaqueTypes": 50,
"opaqueRecords": 466,
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"exactPromotionReady": false,
"exactBlocker": "50 runtime property types and 466 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T08:49:33.825Z"
"generatedAt": "2026-08-17T13:03:43.058Z"
}

View File

@@ -68,13 +68,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 30,
"nativeEditableRecords": 4361,
"opaqueTypes": 50,
"opaqueRecords": 466,
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"exactPromotionReady": false,
"exactBlocker": "50 runtime property types and 466 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T08:49:33.829Z"
"generatedAt": "2026-08-17T13:03:43.033Z"
}

View File

@@ -85,13 +85,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 30,
"nativeEditableRecords": 4361,
"opaqueTypes": 50,
"opaqueRecords": 466,
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"exactPromotionReady": false,
"exactBlocker": "50 runtime property types and 466 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T08:49:33.826Z"
"generatedAt": "2026-08-17T13:03:42.988Z"
}

View File

@@ -65,13 +65,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 30,
"nativeEditableRecords": 4361,
"opaqueTypes": 50,
"opaqueRecords": 466,
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"exactPromotionReady": false,
"exactBlocker": "50 runtime property types and 466 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T08:49:33.839Z"
"generatedAt": "2026-08-17T13:03:43.033Z"
}

View File

@@ -59,13 +59,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 30,
"nativeEditableRecords": 4361,
"opaqueTypes": 50,
"opaqueRecords": 466,
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"exactPromotionReady": false,
"exactBlocker": "50 runtime property types and 466 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T08:49:33.800Z"
"generatedAt": "2026-08-17T13:03:43.095Z"
}

View File

@@ -64,13 +64,13 @@
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 30,
"nativeEditableRecords": 4361,
"opaqueTypes": 50,
"opaqueRecords": 466,
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"exactPromotionReady": false,
"exactBlocker": "50 runtime property types and 466 records remain opaque-only; complete native document and property semantics"
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T08:49:33.815Z"
"generatedAt": "2026-08-17T13:03:43.103Z"
}

View File

@@ -0,0 +1,252 @@
{
"baselineId": "freecad-1.1.1-property-font-failure",
"cancellationBoundary": {
"classification": "synchronous-property-setter",
"reason": "no-native-cancel-hook",
"replacement": "abort-active-document-transaction",
"supported": false
},
"disabled": {
"after": {
"editorMode": [
"ReadOnly"
],
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [
"Immutable",
"ReadOnly"
],
"propertyTypeId": "App::PropertyFont",
"statusString": "Valid",
"value": "osifont"
},
"afterObjects": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"before": {
"editorMode": [
"ReadOnly"
],
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [
"Immutable",
"ReadOnly"
],
"propertyTypeId": "App::PropertyFont",
"statusString": "Valid",
"value": "osifont"
},
"beforeObjects": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"classification": "editor-read-only-and-python-immutable",
"editorMode": [
"ReadOnly"
],
"exception": {
"message": "Object attribute 'Font' is read-only",
"type": "AttributeError"
},
"restoredEditorMode": [],
"restoredStatus": [],
"status": [
"Immutable",
"ReadOnly"
]
},
"documentIntegrity": {
"finalObjects": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"initialObjects": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectCount": 1,
"objectsPreserved": true
},
"failure": {
"after": {
"editorMode": [],
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"statusString": "Valid",
"value": "osifont"
},
"afterObjects": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"before": {
"editorMode": [],
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"statusString": "Valid",
"value": "osifont"
},
"beforeObjects": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"exception": {
"message": "type must be str or unicode, not int",
"type": "TypeError"
},
"id": "wrong-type",
"objectsPreserved": true,
"requested": 12345
},
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"initial": {
"editorMode": [],
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"statusString": "Valid",
"value": "osifont"
},
"object": {
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
},
"property": {
"name": "Font",
"typeId": "App::PropertyFont"
},
"propertyType": "App::PropertyFont",
"schemaVersion": 1,
"status": "pass",
"transaction": {
"activeAfterAbort": {
"id": 0,
"name": ""
},
"activeAfterEdit": {
"id": 1,
"name": "property-font-cancel"
},
"afterAbort": {
"editorMode": [],
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"statusString": "Valid",
"value": "osifont"
},
"before": {
"editorMode": [],
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"statusString": "Valid",
"value": "osifont"
},
"edited": {
"editorMode": [],
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"statusString": "Valid",
"value": "Transaction Font"
},
"objectsAfter": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectsBefore": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectsRestored": true,
"pendingAfterAbort": false,
"pendingAfterEdit": true,
"restored": true,
"undoMode": 1
}
}

View File

@@ -0,0 +1,140 @@
{
"schemaVersion": 1,
"status": "pass",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyFont",
"recordCount": 2,
"objectTypeCount": 2,
"records": [
{
"objectTypeId": "TechDraw::DrawViewAnnotation",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "Font",
"group": "Annotation",
"status": [],
"defaultRaw": "osifont",
"valueModel": {
"kind": "font-family-string",
"representation": "App::PropertyString-derived UTF-8 font family name",
"writable": true,
"installedFontRequired": false
},
"inputs": {
"accepted": [
"utf8-string"
],
"emptyStringAccepted": true,
"arbitraryFamilyNameAccepted": true
},
"editor": "Gui::PropertyEditor::PropertyFontItem",
"editorModel": "QFontDatabase family list exposed through QComboBox",
"dependencies": [],
"applicability": {
"requiredObjectTypeId": "TechDraw::DrawViewAnnotation",
"propertyWriteRequiresShape": false,
"source": "Document.supportedTypes runtime inventory"
}
},
{
"objectTypeId": "TechDraw::DrawViewSpreadsheet",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "Font",
"group": "Spreadsheet",
"status": [],
"defaultRaw": "osifont",
"valueModel": {
"kind": "font-family-string",
"representation": "App::PropertyString-derived UTF-8 font family name",
"writable": true,
"installedFontRequired": false
},
"inputs": {
"accepted": [
"utf8-string"
],
"emptyStringAccepted": true,
"arbitraryFamilyNameAccepted": true
},
"editor": "Gui::PropertyEditor::PropertyFontItem",
"editorModel": "QFontDatabase family list exposed through QComboBox",
"dependencies": [],
"applicability": {
"requiredObjectTypeId": "TechDraw::DrawViewSpreadsheet",
"propertyWriteRequiresShape": false,
"source": "Document.supportedTypes runtime inventory"
}
}
],
"storage": {
"inheritedFrom": "App::PropertyString",
"xmlElement": "String",
"scalarEncoding": "UTF-8 font family name",
"fontResourceEmbedded": false,
"browserBoundary": "preserve the family name; browser font availability is presentation-only"
},
"provenance": {
"runtime": {
"path": ".cache/freecad/reference-desktop.json",
"bytes": 2298709,
"sha256": "082400ec7379e8efc2af16709032d45890d7092277967b714acb05761fd1c2a7"
},
"sources": [
{
"path": ".cache/freecad/FreeCAD/src/App/PropertyStandard.h",
"bytes": 37529,
"sha256": "3555ab386b4815329b09604bbd70626c2b24b66f90a7ff2c31052b55fd3c9244"
},
{
"path": ".cache/freecad/FreeCAD/src/App/PropertyStandard.cpp",
"bytes": 99757,
"sha256": "eeefbbd7020c85c21e2e6b5f777088261668492845cf4d172e31f600fe9b96fd"
},
{
"path": ".cache/freecad/FreeCAD/src/Gui/propertyeditor/PropertyItem.h",
"bytes": 41826,
"sha256": "aaade89f5386b5d061b1b2d09a4fd01e7a27e3c601117fc00e44e115f347d9ed"
},
{
"path": ".cache/freecad/FreeCAD/src/Gui/propertyeditor/PropertyItem.cpp",
"bytes": 142093,
"sha256": "bf2f7cb4c01034425f4ebd46f901ada03c5fa02dcffbc1d3936e49ef7bc43b52"
},
{
"path": ".cache/freecad/FreeCAD/src/Mod/TechDraw/App/DrawViewAnnotation.h",
"bytes": 3471,
"sha256": "41361c931510ab4adc8348b1427bf80da150315c72b1bb6f99eb3d94ee396c18"
},
{
"path": ".cache/freecad/FreeCAD/src/Mod/TechDraw/App/DrawViewAnnotation.cpp",
"bytes": 6635,
"sha256": "b86a2a1837584d036734924492a1768a88aed4a902e9c7e934b4d2f2d9a79e9b"
},
{
"path": ".cache/freecad/FreeCAD/src/Mod/TechDraw/App/DrawViewSpreadsheet.h",
"bytes": 3203,
"sha256": "2037de09272de8684cbf37d94e442561581595de9b6a42798581dfd2b7d98ac0"
},
{
"path": ".cache/freecad/FreeCAD/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp",
"bytes": 17747,
"sha256": "3256a14e826d91ea8eafe573b9282b42f164ff735408e9ba83daa8e50dfb28ec"
}
]
},
"classification": "opaque-fcstd-proxy",
"nextPhases": [
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I"
]
}

View File

@@ -0,0 +1,84 @@
{
"baselineId": "freecad-1.1.1-property-font-mutation",
"classification": {
"geometryApplicability": "not-applicable-no-shape-property",
"objectSetStable": true,
"restoreExact": true,
"unknownSemanticDrift": false,
"valueChanged": true
},
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"object": {
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
},
"phases": {
"before": {
"editorMode": [],
"hasShapeProperty": false,
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"recomputeResult": false,
"statusString": "Valid",
"value": "osifont"
},
"edited": {
"editorMode": [],
"hasShapeProperty": false,
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"recomputeResult": true,
"statusString": "Valid",
"value": "Liberation Sans"
},
"restored": {
"editorMode": [],
"hasShapeProperty": false,
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"recomputeResult": true,
"statusString": "Valid",
"value": "osifont"
}
},
"property": {
"name": "Font",
"typeId": "App::PropertyFont"
},
"propertyType": "App::PropertyFont",
"requested": {
"before": "osifont",
"edited": "Liberation Sans",
"restored": "osifont"
},
"schemaVersion": 1,
"status": "pass"
}

View File

@@ -0,0 +1,72 @@
{
"schemaVersion": 1,
"status": "pass",
"taskId": "PROP-app-propertyfont-I",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyFont",
"recordCount": 2,
"phaseEvidence": {
"A": [
"config/freecad-property-font-inventory.json",
"check:freecad-property-font-inventory"
],
"B": [
"config/freecad-property-font-success.json",
"check:freecad-property-font-success"
],
"C": [
"config/freecad-property-font-failure.json",
"check:freecad-property-font-failure"
],
"D": [
"config/freecad-property-font-mutation.json",
"check:freecad-property-font-mutation"
],
"E": [
"src/facade/types.ts",
"src/facade/fcstd.ts",
"src/facade/mockFacade.ts",
"src/App.tsx",
"tests/propertyFontFacade.test.ts",
"test:freecad-property-font-facade"
],
"F": [
"tests/propertyFontTransaction.test.ts",
"test:freecad-property-font-transaction"
],
"G": [
"config/freecad-property-font-roundtrip.json",
"check:freecad-property-font-roundtrip"
],
"H": [
"config/chrome-property-font-verification.json",
"check:chrome-property-font"
]
},
"promotion": {
"from": "opaque-fcstd-proxy",
"to": "native-editable-codec",
"facadeValueModel": "bounded-utf8-font-family-string-with-native-string-fcstd-payload",
"writableRecords": 2,
"objectTypeCount": 2,
"fcstdElement": "String",
"defaultValue": "osifont",
"nativeRoundTripValue": "Noto Sans CJK SC",
"browserRoundTripValue": "Noto Sans CJK SC",
"fontResourceBoundary": "font family name persists in FCStd; font files and availability remain presentation-only",
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.084Z"
}

View File

@@ -0,0 +1,121 @@
{
"schemaVersion": 1,
"status": "pass",
"baselineId": "freecad-1.1.1-property-font-roundtrip",
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"propertyType": "App::PropertyFont",
"archives": {
"nativeInitial": {
"path": ".cache/freecad/property-font-roundtrip/native-initial.FCStd",
"bytes": 1486,
"sha256": "de40c35893bffdffdf414568591f709d26870f55243a154c7e38d870e589a8c7"
},
"webEdited": {
"path": ".cache/freecad/property-font-roundtrip/web-edited.FCStd",
"bytes": 1335,
"sha256": "6d653056914cf3c7440741753e0502d516d86fd6dc9504d5f774bf079f03f017"
},
"nativeResaved": {
"path": ".cache/freecad/property-font-roundtrip/native-resaved.FCStd",
"bytes": 1494,
"sha256": "37b9ef6010010cb6ecce19cf84e269fdc08f8398c6d575f027b4a6cac0fe51c4"
}
},
"nativeInitial": {
"object": {
"editorMode": [],
"hasShapeProperty": false,
"name": "FontProbe",
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "TechDraw::DrawViewAnnotation",
"value": "osifont"
},
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
]
},
"web": {
"before": {
"name": "Font",
"typeId": "App::PropertyFont",
"element": "String",
"value": "osifont"
},
"after": {
"name": "Font",
"typeId": "App::PropertyFont",
"element": "String",
"value": "Noto Sans CJK SC"
},
"targetMarkedTouched": true,
"webOutputMatches": true,
"semanticObjectsPreserved": true,
"opaquePathsPreserved": 0,
"opaqueEntriesPreserved": true
},
"nativeAfter": {
"reopened": {
"object": {
"editorMode": [],
"hasShapeProperty": false,
"name": "FontProbe",
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "TechDraw::DrawViewAnnotation",
"value": "Noto Sans CJK SC"
},
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
]
},
"resaved": {
"object": {
"editorMode": [],
"hasShapeProperty": false,
"name": "FontProbe",
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "TechDraw::DrawViewAnnotation",
"value": "Noto Sans CJK SC"
},
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
]
}
},
"classification": {
"requestedValue": "Noto Sans CJK SC",
"webValue": "Noto Sans CJK SC",
"reopenedValue": "Noto Sans CJK SC",
"resavedValue": "Noto Sans CJK SC",
"nativeOutputMatches": true,
"objectSetPreserved": true,
"nativeStateStable": true,
"fontResourceBoundary": "font family name persists in FCStd; font files and availability remain presentation-only",
"unknownSemanticDrift": false,
"zeroUnknownDrift": true
}
}

View File

@@ -0,0 +1,118 @@
{
"baselineId": "freecad-1.1.1-property-font-success",
"diagnostics": {
"documentObjectCount": 1,
"exception": null
},
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"object": {
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
},
"phases": {
"default": {
"editorMode": [],
"hasShapeProperty": false,
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"recomputeResult": true,
"requested": "osifont",
"statusString": "Valid",
"value": "osifont"
},
"empty-family": {
"editorMode": [],
"hasShapeProperty": false,
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"recomputeResult": true,
"requested": "",
"statusString": "Valid",
"value": ""
},
"named-family": {
"editorMode": [],
"hasShapeProperty": false,
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"recomputeResult": true,
"requested": "DejaVu Sans",
"statusString": "Valid",
"value": "DejaVu Sans"
},
"restored": {
"editorMode": [],
"hasShapeProperty": false,
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"recomputeResult": true,
"requested": "osifont",
"statusString": "Valid",
"value": "osifont"
},
"unicode-family": {
"editorMode": [],
"hasShapeProperty": false,
"objectSet": [
{
"name": "FontProbe",
"typeId": "TechDraw::DrawViewAnnotation"
}
],
"objectState": [
"Up-to-date"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyFont",
"recomputeResult": true,
"requested": "Noto Sans CJK SC",
"statusString": "Valid",
"value": "Noto Sans CJK SC"
}
},
"property": {
"group": "Annotation",
"name": "Font",
"typeId": "App::PropertyFont"
},
"propertyType": "App::PropertyFont",
"schemaVersion": 1,
"status": "pass"
}

View File

@@ -0,0 +1,241 @@
{
"baselineId": "freecad-1.1.1-property-force-failure",
"cancellationBoundary": {
"classification": "synchronous-property-setter",
"reason": "no-native-cancel-hook",
"replacement": "abort-active-document-transaction",
"supported": false
},
"disabled": {
"after": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
},
"before": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
},
"classification": "editor-read-only-and-python-immutable",
"editorMode": [
"ReadOnly"
],
"exception": {
"message": "Object attribute 'Force' is read-only",
"type": "AttributeError"
},
"objectsPreserved": true,
"requested": "750 N",
"restoredEditorMode": [],
"restoredStatus": [],
"status": [
"Immutable",
"ReadOnly"
],
"valuePreserved": true
},
"documentIntegrity": {
"finalObjects": [
{
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
{
"name": "RigidForceProbe",
"typeId": "Fem::ConstraintRigidBody"
}
],
"initialObjects": [
{
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
{
"name": "RigidForceProbe",
"typeId": "Fem::ConstraintRigidBody"
}
],
"objectCount": 2,
"objectsPreserved": true
},
"failures": [
{
"after": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
},
"afterObjects": [
{
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
{
"name": "RigidForceProbe",
"typeId": "Fem::ConstraintRigidBody"
}
],
"before": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
},
"beforeObjects": [
{
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
{
"name": "RigidForceProbe",
"typeId": "Fem::ConstraintRigidBody"
}
],
"exception": {
"message": "Not matching Unit!",
"type": "ArithmeticError"
},
"id": "wrong-dimension",
"objectsPreserved": true,
"polluted": false,
"requested": "5 mm",
"valuePreserved": true
},
{
"after": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
},
"afterObjects": [
{
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
{
"name": "RigidForceProbe",
"typeId": "Fem::ConstraintRigidBody"
}
],
"before": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
},
"beforeObjects": [
{
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
{
"name": "RigidForceProbe",
"typeId": "Fem::ConstraintRigidBody"
}
],
"exception": {
"message": "syntax error",
"type": "ParserError"
},
"id": "malformed-text",
"objectsPreserved": true,
"polluted": false,
"requested": "not-a-quantity",
"valuePreserved": true
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"initial": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
},
"object": {
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
"outputBoundary": {
"after": {
"numeric": 125000,
"raw": "125000.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
},
"assignmentException": null,
"before": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
},
"classification": "prop-output-ui-read-only-python-mutable",
"editorMode": [],
"property": {
"name": "ForceX",
"typeId": "App::PropertyForce"
},
"restored": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
},
"restoredExactly": true,
"status": [
"27"
]
},
"property": {
"name": "Force",
"typeId": "App::PropertyForce"
},
"schemaVersion": 1,
"status": "pass",
"transaction": {
"activeAfterAbort": {
"id": 0,
"name": ""
},
"activeAfterEdit": {
"id": 1,
"name": "property-force-cancel"
},
"afterAbort": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
},
"before": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
},
"edited": {
"numeric": 250000,
"raw": "250000.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
},
"objectsAfter": [
{
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
{
"name": "RigidForceProbe",
"typeId": "Fem::ConstraintRigidBody"
}
],
"objectsBefore": [
{
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
{
"name": "RigidForceProbe",
"typeId": "Fem::ConstraintRigidBody"
}
],
"objectsRestored": true,
"pendingAfterAbort": false,
"pendingAfterEdit": true,
"restored": true,
"undoMode": 1
}
}

View File

@@ -0,0 +1,136 @@
{
"schemaVersion": 1,
"status": "pass",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyForce",
"recordCount": 4,
"writableRecordCount": 1,
"outputRecordCount": 3,
"records": [
{
"objectTypeId": "Fem::ConstraintForce",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "Force",
"group": "",
"status": [],
"defaultRaw": "0.0 mm*kg/s^2",
"valueModel": {
"kind": "quantity",
"dimension": "mass*length/time^2",
"internalUnit": "mm*kg/s^2",
"displayUnit": "N",
"newtonScale": 1000,
"defaultValue": 0,
"writable": true,
"derivedOutput": false,
"acceptedBoundaryEvidence": "inventory-only; value and boundary acceptance remain pending in phase B/C"
},
"dependencies": [],
"applicability": {
"requiredObjectTypeId": "Fem::ConstraintForce",
"source": "Document.supportedTypes runtime inventory"
}
},
{
"objectTypeId": "Fem::ConstraintRigidBody",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "ForceX",
"group": "ConstraintRigidBody",
"status": [
27
],
"defaultRaw": "0.0 mm*kg/s^2",
"valueModel": {
"kind": "quantity",
"dimension": "mass*length/time^2",
"internalUnit": "mm*kg/s^2",
"displayUnit": "N",
"newtonScale": 1000,
"defaultValue": 0,
"writable": false,
"derivedOutput": true,
"acceptedBoundaryEvidence": "inventory-only; value and boundary acceptance remain pending in phase B/C"
},
"dependencies": [],
"applicability": {
"requiredObjectTypeId": "Fem::ConstraintRigidBody",
"source": "Document.supportedTypes runtime inventory"
}
},
{
"objectTypeId": "Fem::ConstraintRigidBody",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "ForceY",
"group": "ConstraintRigidBody",
"status": [
27
],
"defaultRaw": "0.0 mm*kg/s^2",
"valueModel": {
"kind": "quantity",
"dimension": "mass*length/time^2",
"internalUnit": "mm*kg/s^2",
"displayUnit": "N",
"newtonScale": 1000,
"defaultValue": 0,
"writable": false,
"derivedOutput": true,
"acceptedBoundaryEvidence": "inventory-only; value and boundary acceptance remain pending in phase B/C"
},
"dependencies": [],
"applicability": {
"requiredObjectTypeId": "Fem::ConstraintRigidBody",
"source": "Document.supportedTypes runtime inventory"
}
},
{
"objectTypeId": "Fem::ConstraintRigidBody",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "ForceZ",
"group": "ConstraintRigidBody",
"status": [
27
],
"defaultRaw": "0.0 mm*kg/s^2",
"valueModel": {
"kind": "quantity",
"dimension": "mass*length/time^2",
"internalUnit": "mm*kg/s^2",
"displayUnit": "N",
"newtonScale": 1000,
"defaultValue": 0,
"writable": false,
"derivedOutput": true,
"acceptedBoundaryEvidence": "inventory-only; value and boundary acceptance remain pending in phase B/C"
},
"dependencies": [],
"applicability": {
"requiredObjectTypeId": "Fem::ConstraintRigidBody",
"source": "Document.supportedTypes runtime inventory"
}
}
],
"source": {
"path": ".cache/freecad/reference-desktop.json",
"bytes": 2298709,
"sha256": "082400ec7379e8efc2af16709032d45890d7092277967b714acb05761fd1c2a7"
},
"classification": "opaque-fcstd-proxy",
"nextPhases": [
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I"
]
}

View File

@@ -0,0 +1,298 @@
{
"baselineId": "freecad-1.1.1-property-force-mutation",
"before": {
"amplitudeValues": [
"0, 0",
"1, 1"
],
"directionVector": [
0,
0,
1
],
"editorMode": [],
"enableAmplitude": false,
"mustExecute": false,
"objectState": [
"Up-to-date"
],
"propertyNames": [
"AmplitudeValues",
"Direction",
"DirectionVector",
"EnableAmplitude",
"ExpressionEngine",
"Force",
"Label",
"Label2",
"NormalDirection",
"Normals",
"Points",
"References",
"Reversed",
"Scale",
"Suppressed",
"Visibility"
],
"propertyStatus": [],
"reversed": false,
"shape": {
"applicable": false
},
"statusString": "Valid",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
"classification": {
"geometry": "not-applicable-no-shape-property",
"neighborPropertiesPreserved": true,
"propertyChanged": true,
"propertyRestored": true,
"semanticStateRestored": true
},
"document": {
"objectsBefore": [
{
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
}
],
"objectsPreserved": true,
"objectsRestored": [
{
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
}
]
},
"edited": {
"amplitudeValues": [
"0, 0",
"1, 1"
],
"directionVector": [
0,
0,
1
],
"editorMode": [],
"enableAmplitude": false,
"mustExecute": false,
"objectState": [
"Up-to-date"
],
"propertyNames": [
"AmplitudeValues",
"Direction",
"DirectionVector",
"EnableAmplitude",
"ExpressionEngine",
"Force",
"Label",
"Label2",
"NormalDirection",
"Normals",
"Points",
"References",
"Reversed",
"Scale",
"Suppressed",
"Visibility"
],
"propertyStatus": [],
"reversed": false,
"shape": {
"applicable": false
},
"statusString": "Valid",
"value": {
"numeric": 500000,
"raw": "500000.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"neighbors": {
"before": {
"amplitudeValues": [
"0, 0",
"1, 1"
],
"directionVector": [
0,
0,
1
],
"enableAmplitude": false,
"propertyNames": [
"AmplitudeValues",
"Direction",
"DirectionVector",
"EnableAmplitude",
"ExpressionEngine",
"Force",
"Label",
"Label2",
"NormalDirection",
"Normals",
"Points",
"References",
"Reversed",
"Scale",
"Suppressed",
"Visibility"
],
"reversed": false
},
"edited": {
"amplitudeValues": [
"0, 0",
"1, 1"
],
"directionVector": [
0,
0,
1
],
"enableAmplitude": false,
"propertyNames": [
"AmplitudeValues",
"Direction",
"DirectionVector",
"EnableAmplitude",
"ExpressionEngine",
"Force",
"Label",
"Label2",
"NormalDirection",
"Normals",
"Points",
"References",
"Reversed",
"Scale",
"Suppressed",
"Visibility"
],
"reversed": false
},
"preserved": true,
"restored": {
"amplitudeValues": [
"0, 0",
"1, 1"
],
"directionVector": [
0,
0,
1
],
"enableAmplitude": false,
"propertyNames": [
"AmplitudeValues",
"Direction",
"DirectionVector",
"EnableAmplitude",
"ExpressionEngine",
"Force",
"Label",
"Label2",
"NormalDirection",
"Normals",
"Points",
"References",
"Reversed",
"Scale",
"Suppressed",
"Visibility"
],
"reversed": false
}
},
"object": {
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
"property": {
"name": "Force",
"typeId": "App::PropertyForce"
},
"recompute": {
"edit": 1,
"initial": 1,
"restore": 1
},
"restored": {
"amplitudeValues": [
"0, 0",
"1, 1"
],
"directionVector": [
0,
0,
1
],
"editorMode": [],
"enableAmplitude": false,
"mustExecute": false,
"objectState": [
"Up-to-date"
],
"propertyNames": [
"AmplitudeValues",
"Direction",
"DirectionVector",
"EnableAmplitude",
"ExpressionEngine",
"Force",
"Label",
"Label2",
"NormalDirection",
"Normals",
"Points",
"References",
"Reversed",
"Scale",
"Suppressed",
"Visibility"
],
"propertyStatus": [],
"reversed": false,
"shape": {
"applicable": false
},
"statusString": "Valid",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
"schemaVersion": 1,
"status": "pass",
"touchedAfterEdit": {
"mustExecute": false,
"objectState": [
"Touched"
],
"value": {
"numeric": 500000,
"raw": "500000.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
"touchedAfterRestore": {
"mustExecute": false,
"objectState": [
"Touched"
],
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
}
}

View File

@@ -0,0 +1,79 @@
{
"schemaVersion": 1,
"status": "pass",
"taskId": "PROP-app-propertyforce-I",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyForce",
"recordCount": 4,
"phaseEvidence": {
"A": [
"config/freecad-property-force-inventory.json",
"check:freecad-property-force-inventory"
],
"B": [
"config/freecad-property-force-success.json",
"check:freecad-property-force-success"
],
"C": [
"config/freecad-property-force-failure.json",
"check:freecad-property-force-failure"
],
"D": [
"config/freecad-property-force-mutation.json",
"check:freecad-property-force-mutation"
],
"E": [
"src/facade/units.ts",
"src/facade/types.ts",
"src/facade/fcstd.ts",
"src/facade/mockFacade.ts",
"src/App.tsx",
"tests/propertyForceFacade.test.ts",
"test:freecad-property-force-facade"
],
"F": [
"tests/propertyForceTransaction.test.ts",
"test:freecad-property-force-transaction"
],
"G": [
"config/freecad-property-force-roundtrip.json",
"check:freecad-property-force-roundtrip"
],
"H": [
"config/chrome-property-force-verification.json",
"check:chrome-property-force"
]
},
"promotion": {
"from": "opaque-fcstd-proxy",
"to": "native-editable-codec",
"facadeValueModel": "finite-number-internal-mm-kg-per-s2-with-registered-force-units",
"internalUnit": "mm*kg/s^2",
"displayUnits": [
"N",
"kN",
"lbf"
],
"newtonScale": 1000,
"writableRecords": 1,
"outputRecords": 3,
"fcstdElement": "Float",
"nativeRoundTripValue": 500000,
"browserRoundTripValue": 500000,
"outputPropertiesPreserved": true,
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.093Z"
}

View File

@@ -0,0 +1,311 @@
{
"schemaVersion": 1,
"status": "pass",
"baselineId": "freecad-1.1.1-property-force-roundtrip",
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"archives": {
"nativeInitial": {
"path": ".cache/freecad/property-force-roundtrip/native-initial.FCStd",
"bytes": 2179,
"sha256": "9045ec785084839c25bab5807d3d801faf3091ea83bf402621938b3bac13efea"
},
"webEdited": {
"path": ".cache/freecad/property-force-roundtrip/web-edited.FCStd",
"bytes": 2000,
"sha256": "31df91b2712ce8fadb07d5487a3b036a603ad6a894092eb111e7c27ab64959a2"
},
"nativeResaved": {
"path": ".cache/freecad/property-force-roundtrip/native-resaved.FCStd",
"bytes": 2147,
"sha256": "3b05532197026bf0516f8d594d02516d21092ab8fd3e5f823f76b03e226b2c43"
}
},
"nativeInitial": {
"force": {
"name": "ForceProbe",
"property": {
"editorMode": [],
"name": "Force",
"status": [],
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
"shape": {
"applicable": false
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Fem::ConstraintForce"
},
"objectSet": [
{
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
{
"name": "RigidForceProbe",
"typeId": "Fem::ConstraintRigidBody"
}
],
"rigid": {
"name": "RigidForceProbe",
"outputs": [
{
"editorMode": [],
"name": "ForceX",
"status": [
"27"
],
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
{
"editorMode": [],
"name": "ForceY",
"status": [
"27"
],
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
{
"editorMode": [],
"name": "ForceZ",
"status": [
"27"
],
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
}
],
"shape": {
"applicable": false
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Fem::ConstraintRigidBody"
}
},
"web": {
"before": {
"name": "Force",
"typeId": "App::PropertyForce",
"element": "Float",
"value": "0.0000000000000000"
},
"after": {
"name": "Force",
"typeId": "App::PropertyForce",
"element": "Float",
"value": "500000"
},
"objectSetPreserved": true,
"semanticObjectsPreserved": true,
"opaquePathsPreserved": 4,
"opaqueEntriesPreserved": true
},
"nativeAfter": {
"reopened": {
"force": {
"name": "ForceProbe",
"property": {
"editorMode": [],
"name": "Force",
"status": [],
"typeId": "App::PropertyForce",
"value": {
"numeric": 500000,
"raw": "500000.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
"shape": {
"applicable": false
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Fem::ConstraintForce"
},
"objectSet": [
{
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
{
"name": "RigidForceProbe",
"typeId": "Fem::ConstraintRigidBody"
}
],
"rigid": {
"name": "RigidForceProbe",
"outputs": [
{
"editorMode": [],
"name": "ForceX",
"status": [
"27"
],
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
{
"editorMode": [],
"name": "ForceY",
"status": [
"27"
],
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
{
"editorMode": [],
"name": "ForceZ",
"status": [
"27"
],
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
}
],
"shape": {
"applicable": false
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Fem::ConstraintRigidBody"
}
},
"resaved": {
"force": {
"name": "ForceProbe",
"property": {
"editorMode": [],
"name": "Force",
"status": [],
"typeId": "App::PropertyForce",
"value": {
"numeric": 500000,
"raw": "500000.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
"shape": {
"applicable": false
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Fem::ConstraintForce"
},
"objectSet": [
{
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
{
"name": "RigidForceProbe",
"typeId": "Fem::ConstraintRigidBody"
}
],
"rigid": {
"name": "RigidForceProbe",
"outputs": [
{
"editorMode": [],
"name": "ForceX",
"status": [
"27"
],
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
{
"editorMode": [],
"name": "ForceY",
"status": [
"27"
],
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
{
"editorMode": [],
"name": "ForceZ",
"status": [
"27"
],
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
}
],
"shape": {
"applicable": false
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Fem::ConstraintRigidBody"
}
}
},
"classification": {
"webValue": 500000,
"reopenedValue": 500000,
"resavedValue": 500000,
"outputPropertiesPreserved": true,
"nativeOutputMatches": true,
"unknownSemanticDrift": false,
"zeroUnknownDrift": true
}
}

View File

@@ -0,0 +1,231 @@
{
"baselineId": "freecad-1.1.1-property-force-success",
"cases": [
{
"editorMode": [],
"group": "",
"id": "default",
"objectName": "ForceProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintForce",
"propertyName": "Force",
"requested": null,
"shape": {
"applicable": false
},
"status": [],
"statusString": "Valid",
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
{
"editorMode": [],
"group": "",
"id": "nominal-newton",
"objectName": "ForceProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintForce",
"propertyName": "Force",
"requested": "500 N",
"shape": {
"applicable": false
},
"status": [],
"statusString": "Valid",
"typeId": "App::PropertyForce",
"value": {
"numeric": 500000,
"raw": "500000.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
{
"editorMode": [],
"group": "",
"id": "zero-boundary",
"objectName": "ForceProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintForce",
"propertyName": "Force",
"requested": "0 N",
"shape": {
"applicable": false
},
"status": [],
"statusString": "Valid",
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
{
"editorMode": [],
"group": "",
"id": "negative-boundary",
"objectName": "ForceProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintForce",
"propertyName": "Force",
"requested": "-5 N",
"shape": {
"applicable": false
},
"status": [],
"statusString": "Valid",
"typeId": "App::PropertyForce",
"value": {
"numeric": -5000,
"raw": "-5000.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
{
"editorMode": [],
"group": "",
"id": "kilonewton",
"objectName": "ForceProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintForce",
"propertyName": "Force",
"requested": "2 kN",
"shape": {
"applicable": false
},
"status": [],
"statusString": "Valid",
"typeId": "App::PropertyForce",
"value": {
"numeric": 2000000,
"raw": "2000000.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
{
"editorMode": [],
"group": "",
"id": "restored",
"objectName": "ForceProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintForce",
"propertyName": "Force",
"requested": "0 N",
"shape": {
"applicable": false
},
"status": [],
"statusString": "Valid",
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
}
],
"diagnostics": {
"documentObjectCount": 2,
"exception": null
},
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"object": {
"name": "ForceProbe",
"typeId": "Fem::ConstraintForce"
},
"outputProperties": [
{
"editorMode": [],
"group": "ConstraintRigidBody",
"objectName": "RigidForceProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintRigidBody",
"propertyName": "ForceX",
"shape": {
"applicable": false
},
"status": [
"27"
],
"statusString": "Valid",
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
{
"editorMode": [],
"group": "ConstraintRigidBody",
"objectName": "RigidForceProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintRigidBody",
"propertyName": "ForceY",
"shape": {
"applicable": false
},
"status": [
"27"
],
"statusString": "Valid",
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
},
{
"editorMode": [],
"group": "ConstraintRigidBody",
"objectName": "RigidForceProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintRigidBody",
"propertyName": "ForceZ",
"shape": {
"applicable": false
},
"status": [
"27"
],
"statusString": "Valid",
"typeId": "App::PropertyForce",
"value": {
"numeric": 0,
"raw": "0.0 mm*kg/s^2",
"unit": "Unit: mm*kg/s^2 (1,1,-2,0,0,0,0,0) [Force]"
}
}
],
"property": {
"group": "",
"name": "Force",
"typeId": "App::PropertyForce"
},
"schemaVersion": 1,
"status": "pass"
}

View File

@@ -0,0 +1,181 @@
{
"baselineId": "freecad-1.1.1-property-heatflux-failure",
"cancellationBoundary": {
"classification": "synchronous-property-setter",
"reason": "no-native-cancel-hook",
"replacement": "abort-active-document-transaction",
"supported": false
},
"disabled": {
"after": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
},
"before": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
},
"classification": "editor-read-only-and-python-immutable",
"editorMode": [
"ReadOnly"
],
"exception": {
"message": "Object attribute 'DFlux' is read-only",
"type": "AttributeError"
},
"objectsPreserved": true,
"requested": "750 W/m^2",
"restoredEditorMode": [],
"restoredStatus": [],
"status": [
"Immutable",
"ReadOnly"
],
"valuePreserved": true
},
"documentIntegrity": {
"finalObjects": [
{
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
}
],
"initialObjects": [
{
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
}
],
"objectCount": 1,
"objectsPreserved": true
},
"failures": [
{
"after": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
},
"afterObjects": [
{
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
}
],
"before": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
},
"beforeObjects": [
{
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
}
],
"exception": {
"message": "Not matching Unit!",
"type": "ArithmeticError"
},
"id": "wrong-dimension",
"objectsPreserved": true,
"polluted": false,
"requested": "5 mm",
"valuePreserved": true
},
{
"after": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
},
"afterObjects": [
{
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
}
],
"before": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
},
"beforeObjects": [
{
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
}
],
"exception": {
"message": "syntax error",
"type": "ParserError"
},
"id": "malformed-text",
"objectsPreserved": true,
"polluted": false,
"requested": "not-a-quantity",
"valuePreserved": true
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"initial": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
},
"object": {
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
},
"property": {
"name": "DFlux",
"typeId": "App::PropertyHeatFlux"
},
"schemaVersion": 1,
"status": "pass",
"transaction": {
"activeAfterAbort": {
"id": 0,
"name": ""
},
"activeAfterEdit": {
"id": 1,
"name": "property-heatflux-cancel"
},
"afterAbort": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
},
"before": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
},
"edited": {
"numeric": 250,
"raw": "250.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
},
"objectsAfter": [
{
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
}
],
"objectsBefore": [
{
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
}
],
"objectsRestored": true,
"pendingAfterAbort": false,
"pendingAfterEdit": true,
"restored": true,
"undoMode": 1
}
}

View File

@@ -0,0 +1,55 @@
{
"schemaVersion": 1,
"status": "pass",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyHeatFlux",
"recordCount": 1,
"writableRecordCount": 1,
"outputRecordCount": 0,
"records": [
{
"objectTypeId": "Fem::ConstraintHeatflux",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "DFlux",
"group": "ConstraintHeatflux",
"status": [],
"defaultRaw": "0.0 kg/s^3",
"valueModel": {
"kind": "quantity",
"dimension": "mass/time^3",
"internalUnit": "kg/s^3",
"displayUnit": "W/m^2",
"wattsPerSquareMeterScale": 1,
"defaultValue": 0,
"writable": true,
"derivedOutput": false,
"acceptedBoundaryEvidence": "inventory-only; value and boundary acceptance remain pending in phase B/C"
},
"dependencies": [],
"applicability": {
"requiredObjectTypeId": "Fem::ConstraintHeatflux",
"source": "Document.supportedTypes runtime inventory"
}
}
],
"source": {
"path": ".cache/freecad/reference-desktop.json",
"bytes": 2298709,
"sha256": "082400ec7379e8efc2af16709032d45890d7092277967b714acb05761fd1c2a7"
},
"classification": "opaque-fcstd-proxy",
"nextPhases": [
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I"
]
}

View File

@@ -0,0 +1,358 @@
{
"baselineId": "freecad-1.1.1-property-heatflux-mutation",
"before": {
"ambientTemp": {
"numeric": 0,
"raw": "0.0 K",
"unit": "Unit: K (0,0,0,0,1,0,0,0) [Temperature]"
},
"amplitudeValues": [
"0, 0",
"1, 1"
],
"constraintType": "Convection",
"editorMode": [],
"emissivity": 0,
"enableAmplitude": false,
"filmCoef": {
"numeric": 0,
"raw": "0.0 kg/(s^3*K)",
"unit": "Unit: kg/(s^3*K) (0,1,-3,0,-1,0,0,0) [ThermalTransferCoefficient]"
},
"mustExecute": false,
"objectState": [
"Up-to-date"
],
"propertyNames": [
"AmbientTemp",
"AmplitudeValues",
"CavityName",
"CavityRadiation",
"ConstraintType",
"DFlux",
"Emissivity",
"EnableAmplitude",
"ExpressionEngine",
"FilmCoef",
"Label",
"Label2",
"NormalDirection",
"Normals",
"Points",
"References",
"Scale",
"Suppressed",
"Visibility"
],
"propertyStatus": [],
"scale": 1,
"shape": {
"applicable": false
},
"statusString": "Valid",
"value": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
},
"classification": {
"geometry": "not-applicable-no-shape-property",
"neighborPropertiesPreserved": true,
"propertyChanged": true,
"propertyRestored": true,
"semanticStateRestored": true
},
"document": {
"objectsBefore": [
{
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
}
],
"objectsPreserved": true,
"objectsRestored": [
{
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
}
]
},
"edited": {
"ambientTemp": {
"numeric": 0,
"raw": "0.0 K",
"unit": "Unit: K (0,0,0,0,1,0,0,0) [Temperature]"
},
"amplitudeValues": [
"0, 0",
"1, 1"
],
"constraintType": "Convection",
"editorMode": [],
"emissivity": 0,
"enableAmplitude": false,
"filmCoef": {
"numeric": 0,
"raw": "0.0 kg/(s^3*K)",
"unit": "Unit: kg/(s^3*K) (0,1,-3,0,-1,0,0,0) [ThermalTransferCoefficient]"
},
"mustExecute": false,
"objectState": [
"Up-to-date"
],
"propertyNames": [
"AmbientTemp",
"AmplitudeValues",
"CavityName",
"CavityRadiation",
"ConstraintType",
"DFlux",
"Emissivity",
"EnableAmplitude",
"ExpressionEngine",
"FilmCoef",
"Label",
"Label2",
"NormalDirection",
"Normals",
"Points",
"References",
"Scale",
"Suppressed",
"Visibility"
],
"propertyStatus": [],
"scale": 1,
"shape": {
"applicable": false
},
"statusString": "Valid",
"value": {
"numeric": 500,
"raw": "500.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
},
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"neighbors": {
"before": {
"ambientTemp": {
"numeric": 0,
"raw": "0.0 K",
"unit": "Unit: K (0,0,0,0,1,0,0,0) [Temperature]"
},
"amplitudeValues": [
"0, 0",
"1, 1"
],
"constraintType": "Convection",
"emissivity": 0,
"enableAmplitude": false,
"filmCoef": {
"numeric": 0,
"raw": "0.0 kg/(s^3*K)",
"unit": "Unit: kg/(s^3*K) (0,1,-3,0,-1,0,0,0) [ThermalTransferCoefficient]"
},
"propertyNames": [
"AmbientTemp",
"AmplitudeValues",
"CavityName",
"CavityRadiation",
"ConstraintType",
"DFlux",
"Emissivity",
"EnableAmplitude",
"ExpressionEngine",
"FilmCoef",
"Label",
"Label2",
"NormalDirection",
"Normals",
"Points",
"References",
"Scale",
"Suppressed",
"Visibility"
],
"scale": 1
},
"edited": {
"ambientTemp": {
"numeric": 0,
"raw": "0.0 K",
"unit": "Unit: K (0,0,0,0,1,0,0,0) [Temperature]"
},
"amplitudeValues": [
"0, 0",
"1, 1"
],
"constraintType": "Convection",
"emissivity": 0,
"enableAmplitude": false,
"filmCoef": {
"numeric": 0,
"raw": "0.0 kg/(s^3*K)",
"unit": "Unit: kg/(s^3*K) (0,1,-3,0,-1,0,0,0) [ThermalTransferCoefficient]"
},
"propertyNames": [
"AmbientTemp",
"AmplitudeValues",
"CavityName",
"CavityRadiation",
"ConstraintType",
"DFlux",
"Emissivity",
"EnableAmplitude",
"ExpressionEngine",
"FilmCoef",
"Label",
"Label2",
"NormalDirection",
"Normals",
"Points",
"References",
"Scale",
"Suppressed",
"Visibility"
],
"scale": 1
},
"preserved": true,
"restored": {
"ambientTemp": {
"numeric": 0,
"raw": "0.0 K",
"unit": "Unit: K (0,0,0,0,1,0,0,0) [Temperature]"
},
"amplitudeValues": [
"0, 0",
"1, 1"
],
"constraintType": "Convection",
"emissivity": 0,
"enableAmplitude": false,
"filmCoef": {
"numeric": 0,
"raw": "0.0 kg/(s^3*K)",
"unit": "Unit: kg/(s^3*K) (0,1,-3,0,-1,0,0,0) [ThermalTransferCoefficient]"
},
"propertyNames": [
"AmbientTemp",
"AmplitudeValues",
"CavityName",
"CavityRadiation",
"ConstraintType",
"DFlux",
"Emissivity",
"EnableAmplitude",
"ExpressionEngine",
"FilmCoef",
"Label",
"Label2",
"NormalDirection",
"Normals",
"Points",
"References",
"Scale",
"Suppressed",
"Visibility"
],
"scale": 1
}
},
"object": {
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
},
"property": {
"name": "DFlux",
"typeId": "App::PropertyHeatFlux"
},
"recompute": {
"edit": 1,
"initial": 1,
"restore": 1
},
"restored": {
"ambientTemp": {
"numeric": 0,
"raw": "0.0 K",
"unit": "Unit: K (0,0,0,0,1,0,0,0) [Temperature]"
},
"amplitudeValues": [
"0, 0",
"1, 1"
],
"constraintType": "Convection",
"editorMode": [],
"emissivity": 0,
"enableAmplitude": false,
"filmCoef": {
"numeric": 0,
"raw": "0.0 kg/(s^3*K)",
"unit": "Unit: kg/(s^3*K) (0,1,-3,0,-1,0,0,0) [ThermalTransferCoefficient]"
},
"mustExecute": false,
"objectState": [
"Up-to-date"
],
"propertyNames": [
"AmbientTemp",
"AmplitudeValues",
"CavityName",
"CavityRadiation",
"ConstraintType",
"DFlux",
"Emissivity",
"EnableAmplitude",
"ExpressionEngine",
"FilmCoef",
"Label",
"Label2",
"NormalDirection",
"Normals",
"Points",
"References",
"Scale",
"Suppressed",
"Visibility"
],
"propertyStatus": [],
"scale": 1,
"shape": {
"applicable": false
},
"statusString": "Valid",
"value": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
},
"schemaVersion": 1,
"status": "pass",
"touchedAfterEdit": {
"mustExecute": false,
"objectState": [
"Touched"
],
"value": {
"numeric": 500,
"raw": "500.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
},
"touchedAfterRestore": {
"mustExecute": false,
"objectState": [
"Touched"
],
"value": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
}
}

View File

@@ -0,0 +1,78 @@
{
"schemaVersion": 1,
"status": "pass",
"taskId": "PROP-app-propertyheatflux-I",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyHeatFlux",
"recordCount": 1,
"phaseEvidence": {
"A": [
"config/freecad-property-heatflux-inventory.json",
"check:freecad-property-heatflux-inventory"
],
"B": [
"config/freecad-property-heatflux-success.json",
"check:freecad-property-heatflux-success"
],
"C": [
"config/freecad-property-heatflux-failure.json",
"check:freecad-property-heatflux-failure"
],
"D": [
"config/freecad-property-heatflux-mutation.json",
"check:freecad-property-heatflux-mutation"
],
"E": [
"src/facade/units.ts",
"src/facade/types.ts",
"src/facade/fcstd.ts",
"src/facade/mockFacade.ts",
"src/App.tsx",
"tests/propertyHeatFluxFacade.test.ts",
"test:freecad-property-heatflux-facade"
],
"F": [
"tests/propertyHeatFluxTransaction.test.ts",
"test:freecad-property-heatflux-transaction"
],
"G": [
"config/freecad-property-heatflux-roundtrip.json",
"check:freecad-property-heatflux-roundtrip"
],
"H": [
"config/chrome-property-heatflux-verification.json",
"check:chrome-property-heatflux"
]
},
"promotion": {
"from": "opaque-fcstd-proxy",
"to": "native-editable-codec",
"facadeValueModel": "finite-number-internal-kg-per-s3-with-registered-heat-flux-units",
"internalUnit": "kg/s^3",
"displayUnits": [
"W/m^2",
"kW/m^2",
"W/mm^2"
],
"wattsPerSquareMeterScale": 1,
"writableRecords": 1,
"outputRecords": 0,
"fcstdElement": "Float",
"nativeRoundTripValue": 500,
"browserRoundTripValue": 500,
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.078Z"
}

View File

@@ -0,0 +1,145 @@
{
"schemaVersion": 1,
"status": "pass",
"baselineId": "freecad-1.1.1-property-heatflux-roundtrip",
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"archives": {
"nativeInitial": {
"path": ".cache/freecad/property-heatflux-roundtrip/native-initial.FCStd",
"bytes": 1788,
"sha256": "cedd198d5ec128292628bd27cf58f33e4114049f9ff36b788eecf70762336e5a"
},
"webEdited": {
"path": ".cache/freecad/property-heatflux-roundtrip/web-edited.FCStd",
"bytes": 1607,
"sha256": "d26eba8335628c223d41a383ee3eb4b563369ba8acb9f5c5ea4bd52f6d15cc95"
},
"nativeResaved": {
"path": ".cache/freecad/property-heatflux-roundtrip/native-resaved.FCStd",
"bytes": 1794,
"sha256": "a92d764cb58b9cbe5ad496ea967eccbc900d42ca26b425f74c3708315cf40604"
}
},
"nativeInitial": {
"heatFlux": {
"name": "HeatFluxProbe",
"property": {
"editorMode": [],
"group": "ConstraintHeatflux",
"name": "DFlux",
"status": [],
"typeId": "App::PropertyHeatFlux",
"value": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
},
"shape": {
"applicable": false
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Fem::ConstraintHeatflux"
},
"objectSet": [
{
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
}
]
},
"web": {
"before": {
"name": "DFlux",
"typeId": "App::PropertyHeatFlux",
"element": "Float",
"value": "0.0000000000000000"
},
"after": {
"name": "DFlux",
"typeId": "App::PropertyHeatFlux",
"element": "Float",
"value": "500"
},
"objectSetPreserved": true,
"semanticObjectsPreserved": true,
"opaquePathsPreserved": 2,
"opaqueEntriesPreserved": true
},
"nativeAfter": {
"reopened": {
"heatFlux": {
"name": "HeatFluxProbe",
"property": {
"editorMode": [],
"group": "ConstraintHeatflux",
"name": "DFlux",
"status": [],
"typeId": "App::PropertyHeatFlux",
"value": {
"numeric": 500,
"raw": "500.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
},
"shape": {
"applicable": false
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Fem::ConstraintHeatflux"
},
"objectSet": [
{
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
}
]
},
"resaved": {
"heatFlux": {
"name": "HeatFluxProbe",
"property": {
"editorMode": [],
"group": "ConstraintHeatflux",
"name": "DFlux",
"status": [],
"typeId": "App::PropertyHeatFlux",
"value": {
"numeric": 500,
"raw": "500.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
},
"shape": {
"applicable": false
},
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Fem::ConstraintHeatflux"
},
"objectSet": [
{
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
}
]
}
},
"classification": {
"webValue": 500,
"reopenedValue": 500,
"resavedValue": 500,
"nativeValueMatches": true,
"unknownSemanticDrift": false,
"zeroUnknownDrift": true
}
}

View File

@@ -0,0 +1,183 @@
{
"baselineId": "freecad-1.1.1-property-heatflux-success",
"cases": [
{
"editorMode": [],
"group": "ConstraintHeatflux",
"id": "default",
"objectName": "HeatFluxProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintHeatflux",
"propertyName": "DFlux",
"requested": null,
"shape": {
"applicable": false
},
"status": [],
"statusString": "Valid",
"typeId": "App::PropertyHeatFlux",
"value": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
},
{
"editorMode": [],
"group": "ConstraintHeatflux",
"id": "nominal-watt-per-square-meter",
"objectName": "HeatFluxProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintHeatflux",
"propertyName": "DFlux",
"requested": "500 W/m^2",
"shape": {
"applicable": false
},
"status": [],
"statusString": "Valid",
"typeId": "App::PropertyHeatFlux",
"value": {
"numeric": 500,
"raw": "500.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
},
{
"editorMode": [],
"group": "ConstraintHeatflux",
"id": "zero-boundary",
"objectName": "HeatFluxProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintHeatflux",
"propertyName": "DFlux",
"requested": "0 W/m^2",
"shape": {
"applicable": false
},
"status": [],
"statusString": "Valid",
"typeId": "App::PropertyHeatFlux",
"value": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
},
{
"editorMode": [],
"group": "ConstraintHeatflux",
"id": "negative-boundary",
"objectName": "HeatFluxProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintHeatflux",
"propertyName": "DFlux",
"requested": "-5 W/m^2",
"shape": {
"applicable": false
},
"status": [],
"statusString": "Valid",
"typeId": "App::PropertyHeatFlux",
"value": {
"numeric": -5,
"raw": "-5.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
},
{
"editorMode": [],
"group": "ConstraintHeatflux",
"id": "kilowatt-per-square-meter",
"objectName": "HeatFluxProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintHeatflux",
"propertyName": "DFlux",
"requested": "2 kW/m^2",
"shape": {
"applicable": false
},
"status": [],
"statusString": "Valid",
"typeId": "App::PropertyHeatFlux",
"value": {
"numeric": 2000,
"raw": "2000.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
},
{
"editorMode": [],
"group": "ConstraintHeatflux",
"id": "watt-per-square-millimeter",
"objectName": "HeatFluxProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintHeatflux",
"propertyName": "DFlux",
"requested": "1 W/mm^2",
"shape": {
"applicable": false
},
"status": [],
"statusString": "Valid",
"typeId": "App::PropertyHeatFlux",
"value": {
"numeric": 1000000,
"raw": "1000000.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
},
{
"editorMode": [],
"group": "ConstraintHeatflux",
"id": "restored",
"objectName": "HeatFluxProbe",
"objectState": [
"Up-to-date"
],
"objectTypeId": "Fem::ConstraintHeatflux",
"propertyName": "DFlux",
"requested": "0 W/m^2",
"shape": {
"applicable": false
},
"status": [],
"statusString": "Valid",
"typeId": "App::PropertyHeatFlux",
"value": {
"numeric": 0,
"raw": "0.0 kg/s^3",
"unit": "Unit: kg/s^3 (0,1,-3,0,0,0,0,0) [HeatFlux]"
}
}
],
"diagnostics": {
"documentObjectCount": 1,
"exception": null
},
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"object": {
"name": "HeatFluxProbe",
"typeId": "Fem::ConstraintHeatflux"
},
"property": {
"group": "ConstraintHeatflux",
"name": "DFlux",
"typeId": "App::PropertyHeatFlux"
},
"schemaVersion": 1,
"status": "pass"
}

View File

@@ -0,0 +1,236 @@
{
"baselineId": "freecad-1.1.1-property-integerset-failure",
"cancellationBoundary": {
"classification": "synchronous-property-setter",
"reason": "no-native-cancel-hook",
"replacement": "abort-active-document-transaction",
"supported": false
},
"disabled": {
"after": [
1,
3
],
"before": [
1,
3
],
"classification": "editor-read-only-and-python-immutable",
"editorMode": [
"ReadOnly"
],
"exception": {
"message": "Object attribute 'Nodes' is read-only",
"type": "AttributeError"
},
"objectsPreserved": true,
"requested": [
2,
4
],
"restoredEditorMode": [],
"restoredStatus": [],
"status": [
"Immutable",
"ReadOnly"
],
"valuePreserved": true
},
"documentIntegrity": {
"finalObjects": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"initialObjects": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectsPreserved": true
},
"failures": [
{
"after": [
1,
3
],
"afterObjects": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"before": [
1,
3
],
"beforeObjects": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"exception": {
"message": "type in list must be int, not float",
"type": "TypeError"
},
"id": "float-item",
"objectsPreserved": true,
"polluted": false,
"requested": "[1, 1.5]",
"valuePreserved": true
},
{
"after": [
1,
3
],
"afterObjects": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"before": [
1,
3
],
"beforeObjects": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"exception": {
"message": "type in list must be int, not str",
"type": "TypeError"
},
"id": "string-item",
"objectsPreserved": true,
"polluted": false,
"requested": "[1, '3']",
"valuePreserved": true
},
{
"after": [
1,
3
],
"afterObjects": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"before": [
1,
3
],
"beforeObjects": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"exception": {
"message": "type must be int or list of int, not set",
"type": "TypeError"
},
"id": "set-object",
"objectsPreserved": true,
"polluted": false,
"requested": "{1, 3}",
"valuePreserved": true
},
{
"after": [
1,
3
],
"afterObjects": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"before": [
1,
3
],
"beforeObjects": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"exception": {
"message": "type must be int or list of int, not NoneType",
"type": "TypeError"
},
"id": "none",
"objectsPreserved": true,
"polluted": false,
"requested": "None",
"valuePreserved": true
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"initial": [
1,
3
],
"object": {
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
},
"property": {
"name": "Nodes",
"typeId": "App::PropertyIntegerSet"
},
"propertyType": "App::PropertyIntegerSet",
"schemaVersion": 1,
"status": "pass",
"transaction": {
"activeAfterAbort": {
"id": 0,
"name": ""
},
"activeAfterEdit": {
"id": 1,
"name": "property-integerset-cancel"
},
"afterAbort": [
1,
3
],
"before": [
1,
3
],
"edited": [
2,
4
],
"objectsAfter": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectsBefore": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectsRestored": true,
"pendingAfterAbort": false,
"pendingAfterEdit": true,
"restored": true,
"undoMode": 1
}
}

View File

@@ -0,0 +1,71 @@
{
"schemaVersion": 1,
"status": "pass",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyIntegerSet",
"recordCount": 2,
"writableRecordCount": 2,
"records": [
{
"objectTypeId": "Fem::FemSetElementNodesObject",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "Elements",
"group": "Element indexes",
"status": [],
"defaultRaw": "set()",
"valueModel": {
"kind": "integer-set",
"writable": true,
"elementType": "signed-integer",
"cardinality": "variable-unique-unordered",
"webRepresentation": "sorted-safe-integer-array"
},
"dependencies": [],
"applicability": {
"requiredObjectTypeId": "Fem::FemSetElementNodesObject",
"source": "Document.supportedTypes runtime inventory"
}
},
{
"objectTypeId": "Fem::FemSetNodesObject",
"objectAvailable": true,
"probeStatus": "available",
"propertyName": "Nodes",
"group": "Node indexes",
"status": [],
"defaultRaw": "set()",
"valueModel": {
"kind": "integer-set",
"writable": true,
"elementType": "signed-integer",
"cardinality": "variable-unique-unordered",
"webRepresentation": "sorted-safe-integer-array"
},
"dependencies": [],
"applicability": {
"requiredObjectTypeId": "Fem::FemSetNodesObject",
"source": "Document.supportedTypes runtime inventory"
}
}
],
"source": {
"path": ".cache/freecad/reference-desktop.json",
"bytes": 2298709,
"sha256": "082400ec7379e8efc2af16709032d45890d7092277967b714acb05761fd1c2a7"
},
"classification": "opaque-fcstd-proxy",
"nextPhases": [
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I"
]
}

View File

@@ -0,0 +1,369 @@
{
"baselineId": "freecad-1.1.1-property-integerset-mutation",
"caseCount": 2,
"cases": [
{
"before": {
"editorMode": [],
"femMesh": null,
"group": "Node indexes",
"mustExecute": false,
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectState": [
"Up-to-date"
],
"propertyNames": [
"ExpressionEngine",
"FemMesh",
"Label",
"Label2",
"Nodes",
"Visibility"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"shape": {
"applicable": false
},
"statusString": "Valid",
"value": [
1,
3
]
},
"edited": {
"editorMode": [],
"femMesh": null,
"group": "Node indexes",
"mustExecute": false,
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectState": [
"Up-to-date"
],
"propertyNames": [
"ExpressionEngine",
"FemMesh",
"Label",
"Label2",
"Nodes",
"Visibility"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"shape": {
"applicable": false
},
"statusString": "Valid",
"value": [
2,
5
]
},
"neighborsPreserved": true,
"objectName": "NodesProbe",
"objectTypeId": "Fem::FemSetNodesObject",
"objectsRestored": true,
"propertyName": "Nodes",
"recompute": {
"edit": true,
"initial": true,
"restore": true
},
"restored": {
"editorMode": [],
"femMesh": null,
"group": "Node indexes",
"mustExecute": false,
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectState": [
"Up-to-date"
],
"propertyNames": [
"ExpressionEngine",
"FemMesh",
"Label",
"Label2",
"Nodes",
"Visibility"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"shape": {
"applicable": false
},
"statusString": "Valid",
"value": [
1,
3
]
},
"semanticStateRestored": true,
"touchedAfterEdit": {
"editorMode": [],
"femMesh": null,
"group": "Node indexes",
"mustExecute": false,
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyNames": [
"ExpressionEngine",
"FemMesh",
"Label",
"Label2",
"Nodes",
"Visibility"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": [
2,
5
]
},
"touchedAfterRestore": {
"editorMode": [],
"femMesh": null,
"group": "Node indexes",
"mustExecute": false,
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyNames": [
"ExpressionEngine",
"FemMesh",
"Label",
"Label2",
"Nodes",
"Visibility"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": [
1,
3
]
},
"valueRestored": true
},
{
"before": {
"editorMode": [],
"femMesh": null,
"group": "Element indexes",
"mustExecute": false,
"objectSet": [
{
"name": "ElementsProbe",
"typeId": "Fem::FemSetElementNodesObject"
}
],
"objectState": [
"Up-to-date"
],
"propertyNames": [
"Elements",
"ExpressionEngine",
"FemMesh",
"Label",
"Label2",
"Visibility"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"shape": {
"applicable": false
},
"statusString": "Valid",
"value": [
4,
10
]
},
"edited": {
"editorMode": [],
"femMesh": null,
"group": "Element indexes",
"mustExecute": false,
"objectSet": [
{
"name": "ElementsProbe",
"typeId": "Fem::FemSetElementNodesObject"
}
],
"objectState": [
"Up-to-date"
],
"propertyNames": [
"Elements",
"ExpressionEngine",
"FemMesh",
"Label",
"Label2",
"Visibility"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"shape": {
"applicable": false
},
"statusString": "Valid",
"value": [
-1,
8
]
},
"neighborsPreserved": true,
"objectName": "ElementsProbe",
"objectTypeId": "Fem::FemSetElementNodesObject",
"objectsRestored": true,
"propertyName": "Elements",
"recompute": {
"edit": true,
"initial": true,
"restore": true
},
"restored": {
"editorMode": [],
"femMesh": null,
"group": "Element indexes",
"mustExecute": false,
"objectSet": [
{
"name": "ElementsProbe",
"typeId": "Fem::FemSetElementNodesObject"
}
],
"objectState": [
"Up-to-date"
],
"propertyNames": [
"Elements",
"ExpressionEngine",
"FemMesh",
"Label",
"Label2",
"Visibility"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"shape": {
"applicable": false
},
"statusString": "Valid",
"value": [
4,
10
]
},
"semanticStateRestored": true,
"touchedAfterEdit": {
"editorMode": [],
"femMesh": null,
"group": "Element indexes",
"mustExecute": false,
"objectSet": [
{
"name": "ElementsProbe",
"typeId": "Fem::FemSetElementNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyNames": [
"Elements",
"ExpressionEngine",
"FemMesh",
"Label",
"Label2",
"Visibility"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": [
-1,
8
]
},
"touchedAfterRestore": {
"editorMode": [],
"femMesh": null,
"group": "Element indexes",
"mustExecute": false,
"objectSet": [
{
"name": "ElementsProbe",
"typeId": "Fem::FemSetElementNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyNames": [
"Elements",
"ExpressionEngine",
"FemMesh",
"Label",
"Label2",
"Visibility"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": [
4,
10
]
},
"valueRestored": true
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"propertyType": "App::PropertyIntegerSet",
"schemaVersion": 1,
"status": "pass"
}

View File

@@ -0,0 +1,80 @@
{
"schemaVersion": 1,
"status": "pass",
"taskId": "PROP-app-propertyintegerset-I",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"propertyType": "App::PropertyIntegerSet",
"recordCount": 2,
"phaseEvidence": {
"A": [
"config/freecad-property-integerset-inventory.json",
"check:freecad-property-integerset-inventory"
],
"B": [
"config/freecad-property-integerset-success.json",
"check:freecad-property-integerset-success"
],
"C": [
"config/freecad-property-integerset-failure.json",
"check:freecad-property-integerset-failure"
],
"D": [
"config/freecad-property-integerset-mutation.json",
"check:freecad-property-integerset-mutation"
],
"E": [
"src/facade/types.ts",
"src/facade/fcstd.ts",
"src/facade/mockFacade.ts",
"src/App.tsx",
"tests/propertyIntegerSetFacade.test.ts",
"test:freecad-property-integerset-facade"
],
"F": [
"tests/propertyIntegerSetTransaction.test.ts",
"test:freecad-property-integerset-transaction"
],
"G": [
"config/freecad-property-integerset-roundtrip.json",
"check:freecad-property-integerset-roundtrip"
],
"H": [
"config/chrome-property-integerset-verification.json",
"check:chrome-property-integerset"
]
},
"promotion": {
"from": "opaque-fcstd-proxy",
"to": "native-editable-codec",
"facadeValueModel": "sorted-unique-safe-integer-array",
"writableRecords": 2,
"nativeEmptyBindingBoundary": {
"neverAssignedEmptyRead": "native-process-termination",
"oracleDefault": "set()",
"safeEquivalent": "assign-empty-list-before-read"
},
"fcstdElement": "IntegerSet",
"nativeRoundTripValue": [
-1,
8
],
"browserRoundTripValue": [
-1,
8
],
"zeroUnknownDrift": true
},
"exactBlockerSync": {
"nativeEditableTypes": 34,
"nativeEditableRecords": 4370,
"opaqueTypes": 46,
"opaqueRecords": 457,
"exactPromotionReady": false,
"exactBlocker": "46 runtime property types and 457 records remain opaque-only; complete native document and property semantics"
},
"systemExact": false,
"generatedAt": "2026-08-17T13:03:43.129Z"
}

View File

@@ -0,0 +1,136 @@
{
"schemaVersion": 1,
"status": "pass",
"baselineId": "freecad-1.1.1-property-integerset-roundtrip",
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"archives": {
"nativeInitial": {
"path": ".cache/freecad/property-integerset-roundtrip/native-initial.FCStd",
"bytes": 1268,
"sha256": "7554c51a0f98f011c64a1c14a4d4aa8de81082cf841f84270a612663f7af89c9"
},
"webEdited": {
"path": ".cache/freecad/property-integerset-roundtrip/web-edited.FCStd",
"bytes": 1105,
"sha256": "a9e2e46bd71e206712091c0ed66e27538d5ea38ab6e3b0e8768038962ff34b65"
},
"nativeResaved": {
"path": ".cache/freecad/property-integerset-roundtrip/native-resaved.FCStd",
"bytes": 1269,
"sha256": "f852a1202b3ee7ad3e2314d6b46d4df22c57bdaecc61a021c585d12c3acd7f59"
}
},
"nativeInitial": {
"object": {
"editorMode": [],
"group": "Node indexes",
"hasShapeProperty": false,
"name": "NodesProbe",
"propertyName": "Nodes",
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Fem::FemSetNodesObject",
"value": [
1,
3
]
},
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
]
},
"web": {
"before": {
"name": "Nodes",
"typeId": "App::PropertyIntegerSet",
"element": "IntegerSet",
"value": "[1,3]"
},
"after": {
"name": "Nodes",
"typeId": "App::PropertyIntegerSet",
"element": "IntegerSet",
"value": "[-1,8]"
},
"objectSetPreserved": true,
"semanticObjectsPreserved": true,
"opaquePathsPreserved": 0,
"opaqueEntriesPreserved": true
},
"nativeAfter": {
"reopened": {
"object": {
"editorMode": [],
"group": "Node indexes",
"hasShapeProperty": false,
"name": "NodesProbe",
"propertyName": "Nodes",
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Fem::FemSetNodesObject",
"value": [
-1,
8
]
},
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
]
},
"resaved": {
"object": {
"editorMode": [],
"group": "Node indexes",
"hasShapeProperty": false,
"name": "NodesProbe",
"propertyName": "Nodes",
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Fem::FemSetNodesObject",
"value": [
-1,
8
]
},
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
]
}
},
"classification": {
"webValue": "[-1,8]",
"reopenedValue": [
-1,
8
],
"resavedValue": [
-1,
8
],
"nativeOutputMatches": true,
"unknownSemanticDrift": false,
"zeroUnknownDrift": true
}
}

View File

@@ -0,0 +1,309 @@
{
"baselineId": "freecad-1.1.1-property-integerset-success",
"bindingBoundary": {
"neverAssignedEmptyRead": "native-process-termination",
"oracleDefault": "set()",
"safeEquivalent": "assign-empty-list-before-read"
},
"caseCount": 2,
"cases": [
{
"group": "Node indexes",
"mode": "direct-native-property-setter",
"objectName": "NodesProbe",
"objectTypeId": "Fem::FemSetNodesObject",
"phases": {
"deduplicated": {
"editorMode": [],
"group": "Node indexes",
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"recomputeResult": true,
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": [
1,
2,
3
]
},
"explicitEmpty": {
"editorMode": [],
"group": "Node indexes",
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"recomputeResult": true,
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": []
},
"largeSafeInteger": {
"editorMode": [],
"group": "Node indexes",
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"recomputeResult": true,
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": [
9007199254740991
]
},
"negativeBoundary": {
"editorMode": [],
"group": "Node indexes",
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"recomputeResult": true,
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": [
-2,
0,
5
]
},
"restored": {
"editorMode": [],
"group": "Node indexes",
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"recomputeResult": true,
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": []
},
"scalar": {
"editorMode": [],
"group": "Node indexes",
"objectSet": [
{
"name": "NodesProbe",
"typeId": "Fem::FemSetNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"recomputeResult": true,
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": [
7
]
}
},
"propertyName": "Nodes"
},
{
"group": "Element indexes",
"mode": "direct-native-property-setter",
"objectName": "ElementsProbe",
"objectTypeId": "Fem::FemSetElementNodesObject",
"phases": {
"deduplicated": {
"editorMode": [],
"group": "Element indexes",
"objectSet": [
{
"name": "ElementsProbe",
"typeId": "Fem::FemSetElementNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"recomputeResult": true,
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": [
4,
10
]
},
"explicitEmpty": {
"editorMode": [],
"group": "Element indexes",
"objectSet": [
{
"name": "ElementsProbe",
"typeId": "Fem::FemSetElementNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"recomputeResult": true,
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": []
},
"largeSafeInteger": {
"editorMode": [],
"group": "Element indexes",
"objectSet": [
{
"name": "ElementsProbe",
"typeId": "Fem::FemSetElementNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"recomputeResult": true,
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": [
9007199254740991
]
},
"negativeBoundary": {
"editorMode": [],
"group": "Element indexes",
"objectSet": [
{
"name": "ElementsProbe",
"typeId": "Fem::FemSetElementNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"recomputeResult": true,
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": [
-2,
0,
5
]
},
"restored": {
"editorMode": [],
"group": "Element indexes",
"objectSet": [
{
"name": "ElementsProbe",
"typeId": "Fem::FemSetElementNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"recomputeResult": true,
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": []
},
"scalar": {
"editorMode": [],
"group": "Element indexes",
"objectSet": [
{
"name": "ElementsProbe",
"typeId": "Fem::FemSetElementNodesObject"
}
],
"objectState": [
"Touched"
],
"propertyStatus": [],
"propertyTypeId": "App::PropertyIntegerSet",
"recomputeResult": true,
"shape": {
"applicable": false
},
"statusString": "Touched",
"value": [
7
]
}
},
"propertyName": "Elements"
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"propertyType": "App::PropertyIntegerSet",
"schemaVersion": 1,
"status": "pass"
}

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, 50 types/466 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, 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-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"] },

View File

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

View File

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

View File

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

View File

@@ -23,9 +23,9 @@
"sha256": "1679307fb0f01e9d7b9f37a081458bf44583e4d1899edf9224b49a1435ce7105"
},
{
"path": "assets/index-CNTlr1np.js",
"bytes": 1210736,
"sha256": "4d9e8b6e6e70a13d6a5c34a39eaa62a537de8cefde60d09125392b5a14512363"
"path": "assets/index-CMgfoKgp.js",
"bytes": 1215336,
"sha256": "1b64ba3601119cad5345af95457d701087124370070778c1f637db8130b84e43"
},
{
"path": "assets/index-CSuKYsCZ.css",
@@ -335,7 +335,7 @@
{
"path": "index.html",
"bytes": 678,
"sha256": "233c411801542bf802d4d701437c593620350c13fd1eec069c00d083b80a764d"
"sha256": "215c8954a63826c2bfa193c7e38b3678357e61045b31382233d71353a84031da"
},
{
"path": "manifest.webmanifest",
@@ -390,7 +390,7 @@
{
"path": "sw.js",
"bytes": 1390,
"sha256": "041bc2f315a15f659a5471f382af087e61a8c4405fd8a725c068ddf898e7386e"
"sha256": "a480fa6da433c33ca56b3d12f983d210b9424ed9123c2e35b8e21926b4e054dd"
},
{
"path": "vendor/camotics/camotics-sweep.wasm",
@@ -412,7 +412,7 @@
"status": "signed",
"algorithm": "Ed25519",
"keyId": "bitbybit-local-release-2026",
"payloadSha256": "7cfc2e7f4b34be4c4b5deb75ace67753f9e219ef51b5be74f5a5c1d4f895f3cb",
"signature": "9fhwYyVCjTXXsQUvePx8I31qBp2FsW6b1YOW6UUtR2FDhrqwPtttqLrxSPcH6S88++u805jHATBE5cTijm4VBw=="
"payloadSha256": "b0fefc0b89c0e83124e7ea410bbde34b6f62a4955669b51fb821ba3df181f945",
"signature": "GJdf3bOkY9vdg/YKfFWeh1dkszxpg16VlYdTmrjpLe6PMfhlzvcYQnye4sWy5bFSPoLbXdD7FHom+6e4GTVFCw=="
}
}