feat: complete production naming and reference lifecycle gates
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-14 10:10:30 -04:00
parent f97eae4153
commit f64b78865c
75 changed files with 57290 additions and 15675 deletions

View File

@@ -0,0 +1,692 @@
{
"schemaVersion": 1,
"status": "pass",
"implementation": "freecad-linked",
"productionWorkerLinked": true,
"occtVersion": "8.0.0",
"freecadVersion": "1.1.1",
"sourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"callbacks": [
"freecadNamingAbiVersion",
"freecadNamingCapabilitiesJson",
"freecadNamingEvidenceJson"
],
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"cases": [
{
"operation": "fuse",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 52,
"externallySourcedRecords": 52,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 7,
"ambiguousResults": 16,
"provenanceResults": 23,
"mappedNames": 7,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "cut",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 42,
"externallySourcedRecords": 42,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 3,
"ambiguousResults": 9,
"provenanceResults": 12,
"mappedNames": 3,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "common",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 123,
"externallySourcedRecords": 123,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 5,
"ambiguousResults": 4,
"provenanceResults": 9,
"mappedNames": 5,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "rotate",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 78,
"externallySourcedRecords": 78,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 6,
"ambiguousResults": 20,
"provenanceResults": 26,
"mappedNames": 6,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "pad",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 25,
"externallySourcedRecords": 25,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 9,
"ambiguousResults": 8,
"provenanceResults": 17,
"mappedNames": 9,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "pocket",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 42,
"externallySourcedRecords": 42,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 3,
"ambiguousResults": 9,
"provenanceResults": 12,
"mappedNames": 3,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "loft",
"status": "pass",
"namingStatus": "ambiguous",
"callbackExecuted": false,
"historyRecords": 24,
"externallySourcedRecords": 24,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 0,
"ambiguousResults": 7,
"provenanceResults": 7,
"mappedNames": 0,
"stringHasherEntries": 0,
"elementMaps": 0
},
{
"operation": "pipe",
"status": "pass",
"namingStatus": "ambiguous",
"callbackExecuted": false,
"historyRecords": 28,
"externallySourcedRecords": 28,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 4,
"modifiedRelationPrecedence": 0,
"selectedRecords": 0,
"ambiguousResults": 10,
"provenanceResults": 10,
"mappedNames": 0,
"stringHasherEntries": 0,
"elementMaps": 0
},
{
"operation": "revolution",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 23,
"externallySourcedRecords": 23,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 4,
"ambiguousResults": 8,
"provenanceResults": 12,
"mappedNames": 4,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "groove",
"status": "pass",
"namingStatus": "native-evidence",
"callbackExecuted": true,
"historyRecords": 2,
"externallySourcedRecords": 2,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 1,
"ambiguousResults": 0,
"provenanceResults": 1,
"mappedNames": 1,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "fillet",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 150,
"externallySourcedRecords": 150,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 6,
"ambiguousResults": 20,
"provenanceResults": 26,
"mappedNames": 6,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "chamfer",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 150,
"externallySourcedRecords": 150,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 6,
"ambiguousResults": 20,
"provenanceResults": 26,
"mappedNames": 6,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "hole",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 30,
"externallySourcedRecords": 15,
"internalRecordsExcluded": 15,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 3,
"ambiguousResults": 3,
"provenanceResults": 6,
"mappedNames": 3,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "draft",
"status": "pass",
"namingStatus": "native-evidence",
"callbackExecuted": true,
"historyRecords": 5,
"externallySourcedRecords": 5,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 5,
"ambiguousResults": 0,
"provenanceResults": 5,
"mappedNames": 5,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "thickness",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 38,
"externallySourcedRecords": 38,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 6,
"ambiguousResults": 8,
"provenanceResults": 14,
"mappedNames": 6,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "linear-pattern",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 90,
"externallySourcedRecords": 45,
"internalRecordsExcluded": 45,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 4,
"ambiguousResults": 12,
"provenanceResults": 16,
"mappedNames": 4,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "polar-pattern",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 68,
"externallySourcedRecords": 34,
"internalRecordsExcluded": 34,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 10,
"ambiguousResults": 12,
"provenanceResults": 22,
"mappedNames": 10,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "mirrored",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 66,
"externallySourcedRecords": 33,
"internalRecordsExcluded": 33,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 8,
"ambiguousResults": 12,
"provenanceResults": 20,
"mappedNames": 8,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "multi-transform",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 311,
"externallySourcedRecords": 311,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 8,
"selectedRecords": 22,
"ambiguousResults": 68,
"provenanceResults": 90,
"mappedNames": 22,
"stringHasherEntries": 0,
"elementMaps": 1
}
],
"callbackExecutedCases": 17,
"ambiguityOnlyCases": 2,
"isomorphicCorpus": {
"operation": "common",
"fixture": "coincident-equal-boxes",
"status": "pass",
"historyRecords": 156,
"uniqueResults": 0,
"ambiguousResults": 26,
"candidateSets": [
{
"result": "vertex:0",
"candidates": [
"production-symmetric-object:Vertex17:",
"production-symmetric-object:Vertex19:",
"production-symmetric-object:Vertex1:",
"production-symmetric-object:Vertex33:",
"production-symmetric-object:Vertex35:",
"production-symmetric-object:Vertex3:",
"production-symmetric-tool:Vertex17:",
"production-symmetric-tool:Vertex19:",
"production-symmetric-tool:Vertex1:",
"production-symmetric-tool:Vertex33:",
"production-symmetric-tool:Vertex35:",
"production-symmetric-tool:Vertex3:"
]
},
{
"result": "vertex:1",
"candidates": [
"production-symmetric-object:Vertex20:",
"production-symmetric-object:Vertex21:",
"production-symmetric-object:Vertex2:",
"production-symmetric-object:Vertex41:",
"production-symmetric-object:Vertex43:",
"production-symmetric-object:Vertex7:",
"production-symmetric-tool:Vertex20:",
"production-symmetric-tool:Vertex21:",
"production-symmetric-tool:Vertex2:",
"production-symmetric-tool:Vertex41:",
"production-symmetric-tool:Vertex43:",
"production-symmetric-tool:Vertex7:"
]
},
{
"result": "vertex:3",
"candidates": [
"production-symmetric-object:Vertex25:",
"production-symmetric-object:Vertex27:",
"production-symmetric-object:Vertex34:",
"production-symmetric-object:Vertex39:",
"production-symmetric-object:Vertex4:",
"production-symmetric-object:Vertex5:",
"production-symmetric-tool:Vertex25:",
"production-symmetric-tool:Vertex27:",
"production-symmetric-tool:Vertex34:",
"production-symmetric-tool:Vertex39:",
"production-symmetric-tool:Vertex4:",
"production-symmetric-tool:Vertex5:"
]
},
{
"result": "vertex:5",
"candidates": [
"production-symmetric-object:Vertex28:",
"production-symmetric-object:Vertex29:",
"production-symmetric-object:Vertex42:",
"production-symmetric-object:Vertex47:",
"production-symmetric-object:Vertex6:",
"production-symmetric-object:Vertex8:",
"production-symmetric-tool:Vertex28:",
"production-symmetric-tool:Vertex29:",
"production-symmetric-tool:Vertex42:",
"production-symmetric-tool:Vertex47:",
"production-symmetric-tool:Vertex6:",
"production-symmetric-tool:Vertex8:"
]
},
{
"result": "vertex:8",
"candidates": [
"production-symmetric-object:Vertex11:",
"production-symmetric-object:Vertex18:",
"production-symmetric-object:Vertex23:",
"production-symmetric-object:Vertex36:",
"production-symmetric-object:Vertex37:",
"production-symmetric-object:Vertex9:",
"production-symmetric-tool:Vertex11:",
"production-symmetric-tool:Vertex18:",
"production-symmetric-tool:Vertex23:",
"production-symmetric-tool:Vertex36:",
"production-symmetric-tool:Vertex37:",
"production-symmetric-tool:Vertex9:"
]
},
{
"result": "vertex:9",
"candidates": [
"production-symmetric-object:Vertex10:",
"production-symmetric-object:Vertex15:",
"production-symmetric-object:Vertex22:",
"production-symmetric-object:Vertex24:",
"production-symmetric-object:Vertex44:",
"production-symmetric-object:Vertex45:",
"production-symmetric-tool:Vertex10:",
"production-symmetric-tool:Vertex15:",
"production-symmetric-tool:Vertex22:",
"production-symmetric-tool:Vertex24:",
"production-symmetric-tool:Vertex44:",
"production-symmetric-tool:Vertex45:"
]
},
{
"result": "vertex:11",
"candidates": [
"production-symmetric-object:Vertex12:",
"production-symmetric-object:Vertex13:",
"production-symmetric-object:Vertex26:",
"production-symmetric-object:Vertex31:",
"production-symmetric-object:Vertex38:",
"production-symmetric-object:Vertex40:",
"production-symmetric-tool:Vertex12:",
"production-symmetric-tool:Vertex13:",
"production-symmetric-tool:Vertex26:",
"production-symmetric-tool:Vertex31:",
"production-symmetric-tool:Vertex38:",
"production-symmetric-tool:Vertex40:"
]
},
{
"result": "vertex:13",
"candidates": [
"production-symmetric-object:Vertex14:",
"production-symmetric-object:Vertex16:",
"production-symmetric-object:Vertex30:",
"production-symmetric-object:Vertex32:",
"production-symmetric-object:Vertex46:",
"production-symmetric-object:Vertex48:",
"production-symmetric-tool:Vertex14:",
"production-symmetric-tool:Vertex16:",
"production-symmetric-tool:Vertex30:",
"production-symmetric-tool:Vertex32:",
"production-symmetric-tool:Vertex46:",
"production-symmetric-tool:Vertex48:"
]
},
{
"result": "edge:0",
"candidates": [
"production-symmetric-object:Edge10:",
"production-symmetric-object:Edge1:",
"production-symmetric-tool:Edge10:",
"production-symmetric-tool:Edge1:"
]
},
{
"result": "edge:1",
"candidates": [
"production-symmetric-object:Edge17:",
"production-symmetric-object:Edge2:",
"production-symmetric-tool:Edge17:",
"production-symmetric-tool:Edge2:"
]
},
{
"result": "edge:2",
"candidates": [
"production-symmetric-object:Edge14:",
"production-symmetric-object:Edge3:",
"production-symmetric-tool:Edge14:",
"production-symmetric-tool:Edge3:"
]
},
{
"result": "edge:3",
"candidates": [
"production-symmetric-object:Edge21:",
"production-symmetric-object:Edge4:",
"production-symmetric-tool:Edge21:",
"production-symmetric-tool:Edge4:"
]
},
{
"result": "edge:4",
"candidates": [
"production-symmetric-object:Edge12:",
"production-symmetric-object:Edge5:",
"production-symmetric-tool:Edge12:",
"production-symmetric-tool:Edge5:"
]
},
{
"result": "edge:5",
"candidates": [
"production-symmetric-object:Edge19:",
"production-symmetric-object:Edge6:",
"production-symmetric-tool:Edge19:",
"production-symmetric-tool:Edge6:"
]
},
{
"result": "edge:6",
"candidates": [
"production-symmetric-object:Edge16:",
"production-symmetric-object:Edge7:",
"production-symmetric-tool:Edge16:",
"production-symmetric-tool:Edge7:"
]
},
{
"result": "edge:7",
"candidates": [
"production-symmetric-object:Edge23:",
"production-symmetric-object:Edge8:",
"production-symmetric-tool:Edge23:",
"production-symmetric-tool:Edge8:"
]
},
{
"result": "edge:8",
"candidates": [
"production-symmetric-object:Edge18:",
"production-symmetric-object:Edge9:",
"production-symmetric-tool:Edge18:",
"production-symmetric-tool:Edge9:"
]
},
{
"result": "edge:10",
"candidates": [
"production-symmetric-object:Edge11:",
"production-symmetric-object:Edge22:",
"production-symmetric-tool:Edge11:",
"production-symmetric-tool:Edge22:"
]
},
{
"result": "edge:12",
"candidates": [
"production-symmetric-object:Edge13:",
"production-symmetric-object:Edge20:",
"production-symmetric-tool:Edge13:",
"production-symmetric-tool:Edge20:"
]
},
{
"result": "edge:14",
"candidates": [
"production-symmetric-object:Edge15:",
"production-symmetric-object:Edge24:",
"production-symmetric-tool:Edge15:",
"production-symmetric-tool:Edge24:"
]
},
{
"result": "face:0",
"candidates": [
"production-symmetric-object:Face1:",
"production-symmetric-tool:Face1:"
]
},
{
"result": "face:1",
"candidates": [
"production-symmetric-object:Face2:",
"production-symmetric-tool:Face2:"
]
},
{
"result": "face:2",
"candidates": [
"production-symmetric-object:Face3:",
"production-symmetric-tool:Face3:"
]
},
{
"result": "face:3",
"candidates": [
"production-symmetric-object:Face4:",
"production-symmetric-tool:Face4:"
]
},
{
"result": "face:4",
"candidates": [
"production-symmetric-object:Face5:",
"production-symmetric-tool:Face5:"
]
},
{
"result": "face:5",
"candidates": [
"production-symmetric-object:Face6:",
"production-symmetric-tool:Face6:"
]
}
],
"arrayOrderFallbackUsed": false
},
"chainedStage": {
"mappedNames": 1,
"stringHasherEntries": 3
},
"invalidHistoryRejected": true,
"systemExact": false,
"runtime": "chrome",
"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,
"artifacts": [
{
"name": "bitbybit-occt-history.js",
"bytes": 359739,
"sha256": "6a90575b81ceab5c00a2440e45e010bd62d3455b012541b4449f7b0e88a644c0"
},
{
"name": "bitbybit-occt-history.wasm",
"bytes": 37482285,
"sha256": "c03cf553e71bf4e74667c5aada921769bb241d6021f28a5b166b49c738965515"
},
{
"name": "bitbybit-occt-history.data",
"bytes": 3322679,
"sha256": "ada204b276208027a5cb1cc1288d4aab95b8ee1f28e3a43a00cd062720b87e99"
}
],
"harness": {
"path": "scripts/freecad-naming-production-matrix.mjs",
"bytes": 19819,
"sha256": "01532d8d3197aacddc0c18d4d8e41b4aee3b88bb4eb6636d8d0457a194651125"
},
"generatedAt": "2026-08-14T05:27:30.061Z"
}

File diff suppressed because it is too large Load Diff

View File

@@ -81,8 +81,10 @@
"artifact": {
"javascript": "native/occt-history/dist/bitbybit-occt-history.js",
"wasm": "native/occt-history/dist/bitbybit-occt-history.wasm",
"javascriptSha256": "78f1cdd17a6a7b61ff8435c0ff8c912a43c4517e6ef49f3f741521662a903557",
"wasmSha256": "b52125bd2c4999f62d435f0a34664556b7f1feb23590ddc0503fc6d3c7f1c8d6"
"data": "native/occt-history/dist/bitbybit-occt-history.data",
"javascriptSha256": "6a90575b81ceab5c00a2440e45e010bd62d3455b012541b4449f7b0e88a644c0",
"wasmSha256": "c03cf553e71bf4e74667c5aada921769bb241d6021f28a5b166b49c738965515",
"dataSha256": "ada204b276208027a5cb1cc1288d4aab95b8ee1f28e3a43a00cd062720b87e99"
},
"protocol": "native result and history records stay inside the provider; cross-WASM handles are forbidden; STEP text is the explicit transport boundary",
"historyProtocol": {
@@ -97,11 +99,11 @@
"status": "explicit-runtime-contract",
"mappedNameRef": "optional provider evidence; final-shape-only stages are marked and cannot mint FreeCAD tokens",
"stringHasher": "optional opaque native table; validated and preserved losslessly",
"exactBlockers": ["shipped Worker lacks the FreeCAD-linked private naming ABI implementation", "browser builder naming evidence transport", "non-unique isomorphic source"]
"exactBlockers": ["exhaustive cross-feature naming and FCStd round-trip corpus", "complete native document and property semantics"]
}
},
"freecadNamingBuild": {
"status": "contract-only",
"status": "production-linked",
"prerequisiteStatus": "real-isolated-freecad-private-naming-bridge-pass",
"sdkReadinessStatus": "candidate-complete",
"sdkEnvironment": "FREECAD_WASM_SDK_DIR",
@@ -110,7 +112,8 @@
"requiredFreecadVersion": "1.1.1",
"requiredSourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"requiredEmscriptenVersion": "3.1.69",
"buildCommand": "./npmw run build:freecad-naming-worker",
"buildCommand": "./npmw run build:occt-history",
"candidateBuildCommand": "./npmw run build:freecad-naming-worker",
"qtCoreBuildCommand": "./npmw run build:qt6-wasm-core",
"qtFreecadSdkBuildCommand": "./npmw run build:qt6-freecad-wasm",
"yamlCppBuildCommand": "./npmw run build:yaml-cpp-wasm",
@@ -127,16 +130,19 @@
"candidateWorkerTestCommand": "./npmw run test:freecad-naming-worker-candidate",
"candidateChromeRunCommand": "./npmw run test:chrome-freecad-naming-worker-candidate",
"candidateChromeCheckCommand": "./npmw run check:chrome-freecad-naming-worker-candidate",
"productionNodeTestCommand": "./npmw run test:freecad-naming-production",
"productionChromeRunCommand": "./npmw run test:chrome-freecad-naming-production",
"productionCheckCommand": "./npmw run check:freecad-naming-production",
"boundaryCheckCommand": "./npmw run check:freecad-private-naming-boundary",
"checkCommand": "./npmw run check:freecad-naming-sdk",
"statusBoundary": "Missing SDK or callback probe keeps EX-TSN-02=in_progress and systemExact=false"
"statusBoundary": "Production Node and Chrome matrices prove all 19 callbacks/builders for EX-TSN-02; systemExact remains false until the broader exact plan closes"
},
"browserWorker": {
"entry": "src/facade/nativeHistoryWorkerEntry.ts",
"client": "src/facade/nativeHistoryWorkerClient.ts",
"moduleUrl": "/native/occt-history/bitbybit-occt-history.js",
"runtimeConfiguration": "BitbybitGeometryRuntime.configureNativeHistory(provider, timeoutMs)",
"artifactPublishCommand": "./npmw run build:occt-history",
"artifactPublishCommand": "./npmw run build:occt-history",
"status": "default-application-worker-with-fallback",
"browserVerification": "config/occt-browser-verification.json",
"threeWayVerification": "config/freecad-bitbybit-native-threeway.json",
@@ -155,13 +161,13 @@
"verification": { "level": "experimental", "provider": "FreeCADCmd 1.1.1 native headless Part oracle", "operations": ["locked-source-commit", "reproducible-native-build", "declarative-golden-contract", "part-geometry-replay", "numeric-tolerance-comparison", "execution-plan-validation", "source-inventory-validation", "type-property-inventory-validation"] }
},
"systemExactEvaluation": {
"evaluatedAt": "2026-08-11",
"evaluatedAt": "2026-08-14",
"exact": false,
"featureExactCount": 0,
"plan": "config/freecad-web-exact-parity-plan.json",
"promotionTask": "EX-REL-01",
"taskStatus": { "completed": 2, "inProgress": 37, "pending": 13, "blocked": 0 },
"blockers": ["shipped Worker lacks the FreeCAD-linked private naming ABI implementation", "browser builder naming evidence transport", "non-unique isomorphic source"]
"taskStatus": { "completed": 5, "inProgress": 36, "pending": 11, "blocked": 0 },
"blockers": ["exhaustive cross-feature naming and FCStd round-trip corpus", "complete native document and property semantics"]
},
"rules": [
"UI status does not imply geometry or file compatibility.",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,197 @@
{
"schemaVersion": 1,
"baselineId": "freecad-1.1.1-composite-history-elementmap2",
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"status": "pass",
"cases": [
{
"id": "boolean-fuse-1",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "boolean-fuse-2",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "boolean-fuse-3",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "boolean-cut-1",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "boolean-cut-2",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "boolean-cut-3",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "boolean-common-1",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "boolean-common-2",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "boolean-common-3",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "partdesign-plain",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "partdesign-midplane",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "partdesign-reverse",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "partdesign-taper",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "partdesign-twoside",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "partdesign-pocket",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "partdesign-pocket-through",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "partdesign-pocket-midplane",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "partdesign-pocket-twoside",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "partdesign-pocket-taper",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "partdesign-pocket-up-to-face",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "composite-01",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "composite-02",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "composite-03",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "composite-04",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "composite-05",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "composite-06",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "dressup-fillet-1",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "dressup-fillet-2",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "dressup-chamfer-1",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
},
{
"id": "dressup-chamfer-2",
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCovered": true
}
],
"summary": {
"cases": 30,
"passed": 30,
"failed": 0,
"roundtripNameDrift": 0,
"resaveNameDrift": 0,
"nativeDesktopResaveCases": 30
}
}

View File

@@ -0,0 +1,195 @@
{
"schemaVersion": 1,
"status": "pass",
"runtime": "node",
"implementation": "freecad-linked",
"productionWorkerLinked": true,
"cases": {
"symmetricCommon": {
"status": "ambiguous",
"stable": 0,
"ambiguous": 26,
"candidates": 156,
"stringHasherEntries": 0,
"elementMaps": 0,
"persistedCandidateSets": true
},
"mixedCut": {
"status": "ambiguous",
"stable": 3,
"ambiguous": 9,
"candidates": 18,
"stringHasherEntries": 0,
"elementMaps": 1
},
"downstreamRotate": {
"status": "ambiguous",
"stable": 9,
"ambiguous": 35,
"candidates": 135,
"stringHasherEntries": 3,
"elementMaps": 1,
"candidateObjects": [
"cut-object",
"cut-result",
"cut-tool"
]
},
"longChain": {
"operations": [
"cut",
"rotate",
"fillet",
"mirrored",
"linear-pattern"
],
"stages": [
{
"operation": "cut",
"historyRecords": 42,
"status": "ambiguous",
"stable": 3,
"ambiguous": 9,
"candidates": 18,
"stringHasherEntries": 0,
"elementMaps": 1,
"candidateObjects": [
"cut-object",
"cut-tool"
],
"persistedInputEvidence": false
},
{
"operation": "rotate",
"historyRecords": 135,
"status": "ambiguous",
"stable": 9,
"ambiguous": 35,
"candidates": 135,
"stringHasherEntries": 3,
"elementMaps": 1,
"candidateObjects": [
"cut-object",
"cut-result",
"cut-tool"
],
"referencedInputCandidateObjects": [
"cut-object",
"cut-tool"
],
"referencedCandidateObjectsRetained": true,
"persistedInputEvidence": true
},
{
"operation": "fillet",
"historyRecords": 261,
"status": "ambiguous",
"stable": 9,
"ambiguous": 35,
"candidates": 226,
"stringHasherEntries": 6,
"elementMaps": 1,
"candidateObjects": [
"cut-object",
"cut-result",
"cut-tool",
"rotate-result"
],
"referencedInputCandidateObjects": [
"cut-object",
"cut-result",
"cut-tool"
],
"referencedCandidateObjectsRetained": true,
"persistedInputEvidence": true
},
{
"operation": "mirrored",
"historyRecords": 326,
"status": "ambiguous",
"stable": 11,
"ambiguous": 40,
"candidates": 121,
"stringHasherEntries": 9,
"elementMaps": 1,
"candidateObjects": [
"cut-object",
"cut-result",
"cut-tool",
"fillet-result",
"rotate-result"
],
"referencedInputCandidateObjects": [
"cut-object",
"cut-result",
"cut-tool",
"rotate-result"
],
"referencedCandidateObjectsRetained": true,
"persistedInputEvidence": true
},
{
"operation": "linear-pattern",
"historyRecords": 1090,
"status": "ambiguous",
"stable": 55,
"ambiguous": 89,
"candidates": 211,
"stringHasherEntries": 17,
"elementMaps": 1,
"candidateObjects": [
"cut-result",
"cut-tool",
"fillet-result",
"mirrored-result",
"rotate-result"
],
"referencedInputCandidateObjects": [
"cut-result",
"cut-tool",
"fillet-result",
"rotate-result"
],
"referencedCandidateObjectsRetained": true,
"persistedInputEvidence": true
}
],
"persistedFinalEvidence": true,
"referencedCandidateObjectsRetained": true,
"stringHasherMonotonic": true
}
},
"fcstdAmbiguityRejected": true,
"fcstdStableLinkRoundtrip": {
"subElements": [
"Face1"
],
"inspectRewritePreserved": true,
"nativeDesktopResaveCovered": false
},
"artifacts": [
{
"name": "bitbybit-occt-history.js",
"bytes": 359739,
"sha256": "6a90575b81ceab5c00a2440e45e010bd62d3455b012541b4449f7b0e88a644c0"
},
{
"name": "bitbybit-occt-history.wasm",
"bytes": 37482285,
"sha256": "c03cf553e71bf4e74667c5aada921769bb241d6021f28a5b166b49c738965515"
},
{
"name": "bitbybit-occt-history.data",
"bytes": 3322679,
"sha256": "ada204b276208027a5cb1cc1288d4aab95b8ee1f28e3a43a00cd062720b87e99"
}
],
"harness": {
"path": "scripts/run-freecad-isomorphic-provenance.ts",
"bytes": 16135,
"sha256": "c61a23201585217309ceb88dcff4f7ea4d966e0d4140090a0ca1992c7d8a44ed"
},
"exactBlocker": "exhaustive cross-feature naming and native FreeCAD FCStd save-reopen-resave corpus",
"systemExact": false,
"generatedAt": "2026-08-14T12:21:09.187Z"
}

View File

@@ -59,11 +59,11 @@
{
"id": "PAR-01",
"title": "Expand Datum/Attachment/ShapeBinder, multi-Body and parameter combinations",
"status": "in_progress",
"status": "completed",
"dependencies": ["SDK-05"],
"deliverables": ["Native oracle corpus", "Edit/recompute/recovery/FCStd round-trip matrix"],
"acceptance": ["Every family has success and failure evidence", "Support/Tip/references survive mutation without silent rebinding"],
"evidence": ["check:freecad-sketcher-partdesign-abi", "check:freecad-partdesign-structure", "check:freecad-attachment-modes", "check:chrome-partdesign-lifecycle"]
"evidence": ["check:freecad-sketcher-partdesign-abi", "check:freecad-partdesign-structure", "check:freecad-attachment-modes", "check:freecad-attachment-combinations", "check:freecad-xlink-relink", "check:chrome-partdesign-lifecycle", "check:chrome-partdesign-reference-lifecycle"]
},
{
"id": "QA-01",
@@ -76,12 +76,12 @@
}
],
"boundary": {
"freecadNamingBuildStatus": "contract-only",
"exTsn02": "in_progress",
"freecadNamingBuildStatus": "production-linked",
"exTsn02": "completed",
"systemExact": false,
"productionWorker": {
"availability": "unavailable",
"callbacks": []
"availability": "available",
"callbacks": ["freecadNamingAbiVersion", "freecadNamingCapabilitiesJson", "freecadNamingEvidenceJson"]
}
}
}

View File

@@ -0,0 +1,689 @@
{
"schemaVersion": 1,
"status": "pass",
"implementation": "freecad-linked",
"productionWorkerLinked": true,
"occtVersion": "8.0.0",
"freecadVersion": "1.1.1",
"sourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"callbacks": [
"freecadNamingAbiVersion",
"freecadNamingCapabilitiesJson",
"freecadNamingEvidenceJson"
],
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"cases": [
{
"operation": "fuse",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 52,
"externallySourcedRecords": 52,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 7,
"ambiguousResults": 16,
"provenanceResults": 23,
"mappedNames": 7,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "cut",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 42,
"externallySourcedRecords": 42,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 3,
"ambiguousResults": 9,
"provenanceResults": 12,
"mappedNames": 3,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "common",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 123,
"externallySourcedRecords": 123,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 5,
"ambiguousResults": 4,
"provenanceResults": 9,
"mappedNames": 5,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "rotate",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 78,
"externallySourcedRecords": 78,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 6,
"ambiguousResults": 20,
"provenanceResults": 26,
"mappedNames": 6,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "pad",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 25,
"externallySourcedRecords": 25,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 9,
"ambiguousResults": 8,
"provenanceResults": 17,
"mappedNames": 9,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "pocket",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 42,
"externallySourcedRecords": 42,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 3,
"ambiguousResults": 9,
"provenanceResults": 12,
"mappedNames": 3,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "loft",
"status": "pass",
"namingStatus": "ambiguous",
"callbackExecuted": false,
"historyRecords": 24,
"externallySourcedRecords": 24,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 0,
"ambiguousResults": 7,
"provenanceResults": 7,
"mappedNames": 0,
"stringHasherEntries": 0,
"elementMaps": 0
},
{
"operation": "pipe",
"status": "pass",
"namingStatus": "ambiguous",
"callbackExecuted": false,
"historyRecords": 28,
"externallySourcedRecords": 28,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 4,
"modifiedRelationPrecedence": 0,
"selectedRecords": 0,
"ambiguousResults": 10,
"provenanceResults": 10,
"mappedNames": 0,
"stringHasherEntries": 0,
"elementMaps": 0
},
{
"operation": "revolution",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 23,
"externallySourcedRecords": 23,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 4,
"ambiguousResults": 8,
"provenanceResults": 12,
"mappedNames": 4,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "groove",
"status": "pass",
"namingStatus": "native-evidence",
"callbackExecuted": true,
"historyRecords": 2,
"externallySourcedRecords": 2,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 1,
"ambiguousResults": 0,
"provenanceResults": 1,
"mappedNames": 1,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "fillet",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 150,
"externallySourcedRecords": 150,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 6,
"ambiguousResults": 20,
"provenanceResults": 26,
"mappedNames": 6,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "chamfer",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 150,
"externallySourcedRecords": 150,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 6,
"ambiguousResults": 20,
"provenanceResults": 26,
"mappedNames": 6,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "hole",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 30,
"externallySourcedRecords": 15,
"internalRecordsExcluded": 15,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 3,
"ambiguousResults": 3,
"provenanceResults": 6,
"mappedNames": 3,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "draft",
"status": "pass",
"namingStatus": "native-evidence",
"callbackExecuted": true,
"historyRecords": 5,
"externallySourcedRecords": 5,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 5,
"ambiguousResults": 0,
"provenanceResults": 5,
"mappedNames": 5,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "thickness",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 38,
"externallySourcedRecords": 38,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 6,
"ambiguousResults": 8,
"provenanceResults": 14,
"mappedNames": 6,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "linear-pattern",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 90,
"externallySourcedRecords": 45,
"internalRecordsExcluded": 45,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 4,
"ambiguousResults": 12,
"provenanceResults": 16,
"mappedNames": 4,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "polar-pattern",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 68,
"externallySourcedRecords": 34,
"internalRecordsExcluded": 34,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 10,
"ambiguousResults": 12,
"provenanceResults": 22,
"mappedNames": 10,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "mirrored",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 66,
"externallySourcedRecords": 33,
"internalRecordsExcluded": 33,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 0,
"selectedRecords": 8,
"ambiguousResults": 12,
"provenanceResults": 20,
"mappedNames": 8,
"stringHasherEntries": 0,
"elementMaps": 1
},
{
"operation": "multi-transform",
"status": "pass",
"namingStatus": "mixed-native-and-ambiguous",
"callbackExecuted": true,
"historyRecords": 311,
"externallySourcedRecords": 311,
"internalRecordsExcluded": 0,
"duplicateRecordsCollapsed": 0,
"modifiedRelationPrecedence": 8,
"selectedRecords": 22,
"ambiguousResults": 68,
"provenanceResults": 90,
"mappedNames": 22,
"stringHasherEntries": 0,
"elementMaps": 1
}
],
"callbackExecutedCases": 17,
"ambiguityOnlyCases": 2,
"isomorphicCorpus": {
"operation": "common",
"fixture": "coincident-equal-boxes",
"status": "pass",
"historyRecords": 156,
"uniqueResults": 0,
"ambiguousResults": 26,
"candidateSets": [
{
"result": "vertex:0",
"candidates": [
"production-symmetric-object:Vertex17:",
"production-symmetric-object:Vertex19:",
"production-symmetric-object:Vertex1:",
"production-symmetric-object:Vertex33:",
"production-symmetric-object:Vertex35:",
"production-symmetric-object:Vertex3:",
"production-symmetric-tool:Vertex17:",
"production-symmetric-tool:Vertex19:",
"production-symmetric-tool:Vertex1:",
"production-symmetric-tool:Vertex33:",
"production-symmetric-tool:Vertex35:",
"production-symmetric-tool:Vertex3:"
]
},
{
"result": "vertex:1",
"candidates": [
"production-symmetric-object:Vertex20:",
"production-symmetric-object:Vertex21:",
"production-symmetric-object:Vertex2:",
"production-symmetric-object:Vertex41:",
"production-symmetric-object:Vertex43:",
"production-symmetric-object:Vertex7:",
"production-symmetric-tool:Vertex20:",
"production-symmetric-tool:Vertex21:",
"production-symmetric-tool:Vertex2:",
"production-symmetric-tool:Vertex41:",
"production-symmetric-tool:Vertex43:",
"production-symmetric-tool:Vertex7:"
]
},
{
"result": "vertex:3",
"candidates": [
"production-symmetric-object:Vertex25:",
"production-symmetric-object:Vertex27:",
"production-symmetric-object:Vertex34:",
"production-symmetric-object:Vertex39:",
"production-symmetric-object:Vertex4:",
"production-symmetric-object:Vertex5:",
"production-symmetric-tool:Vertex25:",
"production-symmetric-tool:Vertex27:",
"production-symmetric-tool:Vertex34:",
"production-symmetric-tool:Vertex39:",
"production-symmetric-tool:Vertex4:",
"production-symmetric-tool:Vertex5:"
]
},
{
"result": "vertex:5",
"candidates": [
"production-symmetric-object:Vertex28:",
"production-symmetric-object:Vertex29:",
"production-symmetric-object:Vertex42:",
"production-symmetric-object:Vertex47:",
"production-symmetric-object:Vertex6:",
"production-symmetric-object:Vertex8:",
"production-symmetric-tool:Vertex28:",
"production-symmetric-tool:Vertex29:",
"production-symmetric-tool:Vertex42:",
"production-symmetric-tool:Vertex47:",
"production-symmetric-tool:Vertex6:",
"production-symmetric-tool:Vertex8:"
]
},
{
"result": "vertex:8",
"candidates": [
"production-symmetric-object:Vertex11:",
"production-symmetric-object:Vertex18:",
"production-symmetric-object:Vertex23:",
"production-symmetric-object:Vertex36:",
"production-symmetric-object:Vertex37:",
"production-symmetric-object:Vertex9:",
"production-symmetric-tool:Vertex11:",
"production-symmetric-tool:Vertex18:",
"production-symmetric-tool:Vertex23:",
"production-symmetric-tool:Vertex36:",
"production-symmetric-tool:Vertex37:",
"production-symmetric-tool:Vertex9:"
]
},
{
"result": "vertex:9",
"candidates": [
"production-symmetric-object:Vertex10:",
"production-symmetric-object:Vertex15:",
"production-symmetric-object:Vertex22:",
"production-symmetric-object:Vertex24:",
"production-symmetric-object:Vertex44:",
"production-symmetric-object:Vertex45:",
"production-symmetric-tool:Vertex10:",
"production-symmetric-tool:Vertex15:",
"production-symmetric-tool:Vertex22:",
"production-symmetric-tool:Vertex24:",
"production-symmetric-tool:Vertex44:",
"production-symmetric-tool:Vertex45:"
]
},
{
"result": "vertex:11",
"candidates": [
"production-symmetric-object:Vertex12:",
"production-symmetric-object:Vertex13:",
"production-symmetric-object:Vertex26:",
"production-symmetric-object:Vertex31:",
"production-symmetric-object:Vertex38:",
"production-symmetric-object:Vertex40:",
"production-symmetric-tool:Vertex12:",
"production-symmetric-tool:Vertex13:",
"production-symmetric-tool:Vertex26:",
"production-symmetric-tool:Vertex31:",
"production-symmetric-tool:Vertex38:",
"production-symmetric-tool:Vertex40:"
]
},
{
"result": "vertex:13",
"candidates": [
"production-symmetric-object:Vertex14:",
"production-symmetric-object:Vertex16:",
"production-symmetric-object:Vertex30:",
"production-symmetric-object:Vertex32:",
"production-symmetric-object:Vertex46:",
"production-symmetric-object:Vertex48:",
"production-symmetric-tool:Vertex14:",
"production-symmetric-tool:Vertex16:",
"production-symmetric-tool:Vertex30:",
"production-symmetric-tool:Vertex32:",
"production-symmetric-tool:Vertex46:",
"production-symmetric-tool:Vertex48:"
]
},
{
"result": "edge:0",
"candidates": [
"production-symmetric-object:Edge10:",
"production-symmetric-object:Edge1:",
"production-symmetric-tool:Edge10:",
"production-symmetric-tool:Edge1:"
]
},
{
"result": "edge:1",
"candidates": [
"production-symmetric-object:Edge17:",
"production-symmetric-object:Edge2:",
"production-symmetric-tool:Edge17:",
"production-symmetric-tool:Edge2:"
]
},
{
"result": "edge:2",
"candidates": [
"production-symmetric-object:Edge14:",
"production-symmetric-object:Edge3:",
"production-symmetric-tool:Edge14:",
"production-symmetric-tool:Edge3:"
]
},
{
"result": "edge:3",
"candidates": [
"production-symmetric-object:Edge21:",
"production-symmetric-object:Edge4:",
"production-symmetric-tool:Edge21:",
"production-symmetric-tool:Edge4:"
]
},
{
"result": "edge:4",
"candidates": [
"production-symmetric-object:Edge12:",
"production-symmetric-object:Edge5:",
"production-symmetric-tool:Edge12:",
"production-symmetric-tool:Edge5:"
]
},
{
"result": "edge:5",
"candidates": [
"production-symmetric-object:Edge19:",
"production-symmetric-object:Edge6:",
"production-symmetric-tool:Edge19:",
"production-symmetric-tool:Edge6:"
]
},
{
"result": "edge:6",
"candidates": [
"production-symmetric-object:Edge16:",
"production-symmetric-object:Edge7:",
"production-symmetric-tool:Edge16:",
"production-symmetric-tool:Edge7:"
]
},
{
"result": "edge:7",
"candidates": [
"production-symmetric-object:Edge23:",
"production-symmetric-object:Edge8:",
"production-symmetric-tool:Edge23:",
"production-symmetric-tool:Edge8:"
]
},
{
"result": "edge:8",
"candidates": [
"production-symmetric-object:Edge18:",
"production-symmetric-object:Edge9:",
"production-symmetric-tool:Edge18:",
"production-symmetric-tool:Edge9:"
]
},
{
"result": "edge:10",
"candidates": [
"production-symmetric-object:Edge11:",
"production-symmetric-object:Edge22:",
"production-symmetric-tool:Edge11:",
"production-symmetric-tool:Edge22:"
]
},
{
"result": "edge:12",
"candidates": [
"production-symmetric-object:Edge13:",
"production-symmetric-object:Edge20:",
"production-symmetric-tool:Edge13:",
"production-symmetric-tool:Edge20:"
]
},
{
"result": "edge:14",
"candidates": [
"production-symmetric-object:Edge15:",
"production-symmetric-object:Edge24:",
"production-symmetric-tool:Edge15:",
"production-symmetric-tool:Edge24:"
]
},
{
"result": "face:0",
"candidates": [
"production-symmetric-object:Face1:",
"production-symmetric-tool:Face1:"
]
},
{
"result": "face:1",
"candidates": [
"production-symmetric-object:Face2:",
"production-symmetric-tool:Face2:"
]
},
{
"result": "face:2",
"candidates": [
"production-symmetric-object:Face3:",
"production-symmetric-tool:Face3:"
]
},
{
"result": "face:3",
"candidates": [
"production-symmetric-object:Face4:",
"production-symmetric-tool:Face4:"
]
},
{
"result": "face:4",
"candidates": [
"production-symmetric-object:Face5:",
"production-symmetric-tool:Face5:"
]
},
{
"result": "face:5",
"candidates": [
"production-symmetric-object:Face6:",
"production-symmetric-tool:Face6:"
]
}
],
"arrayOrderFallbackUsed": false
},
"chainedStage": {
"mappedNames": 1,
"stringHasherEntries": 3
},
"invalidHistoryRejected": true,
"systemExact": false,
"runtime": "node",
"artifacts": [
{
"name": "bitbybit-occt-history.js",
"bytes": 359739,
"sha256": "6a90575b81ceab5c00a2440e45e010bd62d3455b012541b4449f7b0e88a644c0"
},
{
"name": "bitbybit-occt-history.wasm",
"bytes": 37482285,
"sha256": "c03cf553e71bf4e74667c5aada921769bb241d6021f28a5b166b49c738965515"
},
{
"name": "bitbybit-occt-history.data",
"bytes": 3322679,
"sha256": "ada204b276208027a5cb1cc1288d4aab95b8ee1f28e3a43a00cd062720b87e99"
}
],
"harness": {
"path": "scripts/freecad-naming-production-matrix.mjs",
"bytes": 19819,
"sha256": "01532d8d3197aacddc0c18d4d8e41b4aee3b88bb4eb6636d8d0457a194651125"
},
"generatedAt": "2026-08-14T12:21:03.731Z"
}

View File

@@ -270,8 +270,8 @@
],
"productionPublication": false,
"boundary": {
"freecadNamingBuildStatus": "contract-only",
"exTsn02": "in_progress",
"freecadNamingBuildStatus": "production-linked",
"exTsn02": "completed",
"systemExact": false
}
}

View File

@@ -0,0 +1,893 @@
{
"schemaVersion": 1,
"status": "pass",
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"source": {
"path": ".cache/freecad/reference-desktop.json",
"bytes": 4030859,
"sha256": "995b495cd287cb43bed3d6a7cb69ae1f36d021a331ddf7c418304ece023e911e"
},
"runtime": {
"registeredObjectTypes": 352,
"instantiableObjectTypes": 348,
"unavailableObjectTypes": 4,
"unavailableObjects": [
{
"typeId": "Fem::DocumentObject",
"error": "No document object found of type 'Fem::DocumentObject'"
},
{
"typeId": "Part::Boolean",
"error": "No document object found of type 'Part::Boolean'"
},
{
"typeId": "Part::Datum",
"error": "No document object found of type 'Part::Datum'"
},
{
"typeId": "Part::Primitive",
"error": "No document object found of type 'Part::Primitive'"
}
],
"propertyRecords": 5510,
"propertyTypes": 85
},
"supportSummary": {
"native-editable-codec": {
"typeCount": 18,
"recordCount": 4135
},
"native-specialized-codec": {
"typeCount": 5,
"recordCount": 683
},
"opaque-fcstd-proxy": {
"typeCount": 62,
"recordCount": 692
}
},
"types": [
{
"typeId": "App::PropertyAcceleration",
"support": "opaque-fcstd-proxy",
"recordCount": 1,
"objectTypeCount": 1,
"statusNames": []
},
{
"typeId": "App::PropertyAngle",
"support": "native-editable-codec",
"recordCount": 135,
"objectTypeCount": 78,
"statusNames": [
"Hidden",
"PropOutput",
"PropReadOnly",
"ReadOnly"
]
},
{
"typeId": "App::PropertyArea",
"support": "opaque-fcstd-proxy",
"recordCount": 1,
"objectTypeCount": 1,
"statusNames": [
"PropOutput",
"PropReadOnly"
]
},
{
"typeId": "App::PropertyBool",
"support": "native-editable-codec",
"recordCount": 1018,
"objectTypeCount": 348,
"statusNames": [
"Hidden",
"LockDynamic",
"NoModify",
"Output",
"PartialTrigger",
"PropHidden",
"PropNoPersist",
"PropOutput",
"PropReadOnly",
"PropTransient",
"ReadOnly"
]
},
{
"typeId": "App::PropertyBoolList",
"support": "opaque-fcstd-proxy",
"recordCount": 7,
"objectTypeCount": 7,
"statusNames": [
"Hidden",
"Immutable",
"LockDynamic"
]
},
{
"typeId": "App::PropertyColor",
"support": "opaque-fcstd-proxy",
"recordCount": 8,
"objectTypeCount": 8,
"statusNames": []
},
{
"typeId": "App::PropertyColorList",
"support": "opaque-fcstd-proxy",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": []
},
{
"typeId": "App::PropertyDirection",
"support": "opaque-fcstd-proxy",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": []
},
{
"typeId": "App::PropertyDistance",
"support": "native-editable-codec",
"recordCount": 166,
"objectTypeCount": 56,
"statusNames": [
"PropOutput",
"PropReadOnly",
"ReadOnly"
]
},
{
"typeId": "App::PropertyEnumeration",
"support": "native-editable-codec",
"recordCount": 304,
"objectTypeCount": 150,
"statusNames": [
"Hidden",
"LockDynamic",
"PropHidden",
"PropOutput",
"ReadOnly"
]
},
{
"typeId": "App::PropertyExpressionEngine",
"support": "native-specialized-codec",
"recordCount": 348,
"objectTypeCount": 348,
"statusNames": [
"PropHidden"
]
},
{
"typeId": "App::PropertyFile",
"support": "opaque-fcstd-proxy",
"recordCount": 16,
"objectTypeCount": 12,
"statusNames": []
},
{
"typeId": "App::PropertyFileIncluded",
"support": "opaque-fcstd-proxy",
"recordCount": 20,
"objectTypeCount": 15,
"statusNames": [
"PropOutput",
"ReadOnly"
]
},
{
"typeId": "App::PropertyFloat",
"support": "native-editable-codec",
"recordCount": 178,
"objectTypeCount": 120,
"statusNames": [
"Hidden",
"LockDynamic",
"PropOutput",
"PropReadOnly",
"ReadOnly"
]
},
{
"typeId": "App::PropertyFloatConstraint",
"support": "opaque-fcstd-proxy",
"recordCount": 80,
"objectTypeCount": 64,
"statusNames": [
"Hidden",
"ReadOnly"
]
},
{
"typeId": "App::PropertyFloatList",
"support": "native-editable-codec",
"recordCount": 14,
"objectTypeCount": 9,
"statusNames": [
"Output",
"ReadOnly"
]
},
{
"typeId": "App::PropertyFont",
"support": "opaque-fcstd-proxy",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": []
},
{
"typeId": "App::PropertyForce",
"support": "opaque-fcstd-proxy",
"recordCount": 4,
"objectTypeCount": 2,
"statusNames": [
"PropOutput"
]
},
{
"typeId": "App::PropertyHeatFlux",
"support": "opaque-fcstd-proxy",
"recordCount": 1,
"objectTypeCount": 1,
"statusNames": []
},
{
"typeId": "App::PropertyInteger",
"support": "native-editable-codec",
"recordCount": 88,
"objectTypeCount": 47,
"statusNames": [
"PropHidden",
"PropNoRecompute",
"PropOutput",
"PropReadOnly",
"PropTransient",
"ReadOnly"
]
},
{
"typeId": "App::PropertyIntegerConstraint",
"support": "native-editable-codec",
"recordCount": 28,
"objectTypeCount": 24,
"statusNames": [
"LockDynamic"
]
},
{
"typeId": "App::PropertyIntegerList",
"support": "native-editable-codec",
"recordCount": 9,
"objectTypeCount": 7,
"statusNames": [
"PropHidden",
"ReadOnly"
]
},
{
"typeId": "App::PropertyIntegerSet",
"support": "opaque-fcstd-proxy",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": []
},
{
"typeId": "App::PropertyLength",
"support": "native-editable-codec",
"recordCount": 164,
"objectTypeCount": 66,
"statusNames": [
"PropOutput",
"ReadOnly"
]
},
{
"typeId": "App::PropertyLink",
"support": "native-editable-codec",
"recordCount": 174,
"objectTypeCount": 152,
"statusNames": [
"Hidden",
"LockDynamic",
"PropHidden"
]
},
{
"typeId": "App::PropertyLinkHidden",
"support": "opaque-fcstd-proxy",
"recordCount": 63,
"objectTypeCount": 63,
"statusNames": [
"PropHidden",
"PropOutput",
"PropReadOnly",
"PropTransient"
]
},
{
"typeId": "App::PropertyLinkList",
"support": "native-editable-codec",
"recordCount": 81,
"objectTypeCount": 68,
"statusNames": [
"Hidden",
"Immutable",
"LockDynamic",
"PropHidden",
"PropNoPersist",
"PropOutput",
"PropReadOnly",
"Transient"
]
},
{
"typeId": "App::PropertyLinkListHidden",
"support": "opaque-fcstd-proxy",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": [
"PropHidden"
]
},
{
"typeId": "App::PropertyLinkSub",
"support": "native-editable-codec",
"recordCount": 105,
"objectTypeCount": 51,
"statusNames": [
"PropHidden",
"PropReadOnly"
]
},
{
"typeId": "App::PropertyLinkSubHidden",
"support": "opaque-fcstd-proxy",
"recordCount": 4,
"objectTypeCount": 4,
"statusNames": [
"LockDynamic",
"PropHidden"
]
},
{
"typeId": "App::PropertyLinkSubList",
"support": "native-editable-codec",
"recordCount": 134,
"objectTypeCount": 101,
"statusNames": [
"PropOutput",
"PropReadOnly",
"ReadOnly"
]
},
{
"typeId": "App::PropertyLinkSubListGlobal",
"support": "opaque-fcstd-proxy",
"recordCount": 1,
"objectTypeCount": 1,
"statusNames": []
},
{
"typeId": "App::PropertyMap",
"support": "opaque-fcstd-proxy",
"recordCount": 9,
"objectTypeCount": 9,
"statusNames": []
},
{
"typeId": "App::PropertyMaterial",
"support": "opaque-fcstd-proxy",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": []
},
{
"typeId": "App::PropertyMaterialList",
"support": "opaque-fcstd-proxy",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": []
},
{
"typeId": "App::PropertyMatrix",
"support": "opaque-fcstd-proxy",
"recordCount": 4,
"objectTypeCount": 4,
"statusNames": []
},
{
"typeId": "App::PropertyMoment",
"support": "opaque-fcstd-proxy",
"recordCount": 3,
"objectTypeCount": 1,
"statusNames": [
"PropOutput"
]
},
{
"typeId": "App::PropertyPath",
"support": "opaque-fcstd-proxy",
"recordCount": 8,
"objectTypeCount": 8,
"statusNames": [
"PropHidden",
"PropOutput",
"PropTransient"
]
},
{
"typeId": "App::PropertyPlacement",
"support": "native-editable-codec",
"recordCount": 311,
"objectTypeCount": 241,
"statusNames": [
"Hidden",
"LockDynamic",
"PropNoRecompute",
"PropOutput",
"PropReadOnly",
"ReadOnly"
]
},
{
"typeId": "App::PropertyPlacementList",
"support": "opaque-fcstd-proxy",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": [
"LockDynamic"
]
},
{
"typeId": "App::PropertyPosition",
"support": "opaque-fcstd-proxy",
"recordCount": 4,
"objectTypeCount": 3,
"statusNames": [
"PropOutput",
"PropReadOnly"
]
},
{
"typeId": "App::PropertyPower",
"support": "opaque-fcstd-proxy",
"recordCount": 1,
"objectTypeCount": 1,
"statusNames": []
},
{
"typeId": "App::PropertyPrecision",
"support": "opaque-fcstd-proxy",
"recordCount": 14,
"objectTypeCount": 6,
"statusNames": []
},
{
"typeId": "App::PropertyPressure",
"support": "opaque-fcstd-proxy",
"recordCount": 1,
"objectTypeCount": 1,
"statusNames": []
},
{
"typeId": "App::PropertyPythonObject",
"support": "opaque-fcstd-proxy",
"recordCount": 55,
"objectTypeCount": 53,
"statusNames": [
"PropHidden",
"PropOutput",
"PropReadOnly",
"PropTransient"
]
},
{
"typeId": "App::PropertyQuantity",
"support": "opaque-fcstd-proxy",
"recordCount": 5,
"objectTypeCount": 3,
"statusNames": []
},
{
"typeId": "App::PropertyQuantityConstraint",
"support": "opaque-fcstd-proxy",
"recordCount": 12,
"objectTypeCount": 7,
"statusNames": [
"PropOutput",
"ReadOnly"
]
},
{
"typeId": "App::PropertyRotation",
"support": "opaque-fcstd-proxy",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": [
"PropOutput"
]
},
{
"typeId": "App::PropertySpeed",
"support": "opaque-fcstd-proxy",
"recordCount": 1,
"objectTypeCount": 1,
"statusNames": []
},
{
"typeId": "App::PropertyStiffness",
"support": "opaque-fcstd-proxy",
"recordCount": 2,
"objectTypeCount": 1,
"statusNames": []
},
{
"typeId": "App::PropertyStiffnessDensity",
"support": "opaque-fcstd-proxy",
"recordCount": 2,
"objectTypeCount": 1,
"statusNames": []
},
{
"typeId": "App::PropertyString",
"support": "native-editable-codec",
"recordCount": 1094,
"objectTypeCount": 348,
"statusNames": [
"Hidden",
"LockDynamic",
"Output",
"PropHidden",
"PropOutput",
"PropReadOnly",
"PropTransient",
"ReadOnly"
]
},
{
"typeId": "App::PropertyStringList",
"support": "native-editable-codec",
"recordCount": 25,
"objectTypeCount": 23,
"statusNames": [
"Hidden",
"PropOutput",
"PropReadOnly",
"PropTransient"
]
},
{
"typeId": "App::PropertyTemperature",
"support": "opaque-fcstd-proxy",
"recordCount": 4,
"objectTypeCount": 3,
"statusNames": []
},
{
"typeId": "App::PropertyThermalTransferCoefficient",
"support": "opaque-fcstd-proxy",
"recordCount": 1,
"objectTypeCount": 1,
"statusNames": []
},
{
"typeId": "App::PropertyUUID",
"support": "opaque-fcstd-proxy",
"recordCount": 5,
"objectTypeCount": 5,
"statusNames": []
},
{
"typeId": "App::PropertyVector",
"support": "native-editable-codec",
"recordCount": 107,
"objectTypeCount": 60,
"statusNames": [
"LockDynamic",
"PropHidden",
"PropOutput",
"PropReadOnly",
"ReadOnly"
]
},
{
"typeId": "App::PropertyVectorDistance",
"support": "opaque-fcstd-proxy",
"recordCount": 7,
"objectTypeCount": 6,
"statusNames": []
},
{
"typeId": "App::PropertyVectorList",
"support": "opaque-fcstd-proxy",
"recordCount": 46,
"objectTypeCount": 28,
"statusNames": [
"LockDynamic",
"PropHidden",
"PropOutput",
"PropReadOnly"
]
},
{
"typeId": "App::PropertyXLink",
"support": "opaque-fcstd-proxy",
"recordCount": 11,
"objectTypeCount": 7,
"statusNames": [
"Hidden",
"LockDynamic",
"PropHidden"
]
},
{
"typeId": "App::PropertyXLinkList",
"support": "opaque-fcstd-proxy",
"recordCount": 11,
"objectTypeCount": 11,
"statusNames": []
},
{
"typeId": "App::PropertyXLinkSub",
"support": "opaque-fcstd-proxy",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": [
"PropHidden",
"PropNoPersist",
"PropReadOnly"
]
},
{
"typeId": "App::PropertyXLinkSubList",
"support": "opaque-fcstd-proxy",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": [
"ReadOnly"
]
},
{
"typeId": "Fem::PropertyFemMesh",
"support": "opaque-fcstd-proxy",
"recordCount": 6,
"objectTypeCount": 6,
"statusNames": [
"PropNoRecompute"
]
},
{
"typeId": "Fem::PropertyPostDataObject",
"support": "opaque-fcstd-proxy",
"recordCount": 13,
"objectTypeCount": 13,
"statusNames": []
},
{
"typeId": "Inspection::PropertyDistanceList",
"support": "opaque-fcstd-proxy",
"recordCount": 1,
"objectTypeCount": 1,
"statusNames": []
},
{
"typeId": "Materials::PropertyMaterial",
"support": "opaque-fcstd-proxy",
"recordCount": 142,
"objectTypeCount": 142,
"statusNames": []
},
{
"typeId": "Mesh::PropertyCurvatureList",
"support": "opaque-fcstd-proxy",
"recordCount": 1,
"objectTypeCount": 1,
"statusNames": []
},
{
"typeId": "Mesh::PropertyMeshKernel",
"support": "opaque-fcstd-proxy",
"recordCount": 25,
"objectTypeCount": 25,
"statusNames": [
"PropOutput"
]
},
{
"typeId": "Part::PropertyFilletEdges",
"support": "opaque-fcstd-proxy",
"recordCount": 3,
"objectTypeCount": 3,
"statusNames": []
},
{
"typeId": "Part::PropertyGeometryList",
"support": "native-specialized-codec",
"recordCount": 5,
"objectTypeCount": 3,
"statusNames": [
"Ordered",
"PropHidden"
]
},
{
"typeId": "Part::PropertyPartShape",
"support": "native-specialized-codec",
"recordCount": 322,
"objectTypeCount": 142,
"statusNames": [
"Hidden",
"Output",
"Transient"
]
},
{
"typeId": "Part::PropertyShapeHistory",
"support": "opaque-fcstd-proxy",
"recordCount": 6,
"objectTypeCount": 6,
"statusNames": [
"PropHidden",
"PropOutput",
"PropTransient"
]
},
{
"typeId": "Part::PropertyTopoShapeList",
"support": "opaque-fcstd-proxy",
"recordCount": 3,
"objectTypeCount": 3,
"statusNames": [
"Ordered"
]
},
{
"typeId": "Path::PropertyPath",
"support": "native-specialized-codec",
"recordCount": 6,
"objectTypeCount": 6,
"statusNames": []
},
{
"typeId": "Points::PropertyPointKernel",
"support": "opaque-fcstd-proxy",
"recordCount": 5,
"objectTypeCount": 5,
"statusNames": []
},
{
"typeId": "Robot::PropertyTrajectory",
"support": "opaque-fcstd-proxy",
"recordCount": 4,
"objectTypeCount": 4,
"statusNames": []
},
{
"typeId": "Sketcher::PropertyConstraintList",
"support": "native-specialized-codec",
"recordCount": 2,
"objectTypeCount": 2,
"statusNames": []
},
{
"typeId": "Spreadsheet::PropertyColumnWidths",
"support": "opaque-fcstd-proxy",
"recordCount": 3,
"objectTypeCount": 3,
"statusNames": [
"PropHidden",
"PropOutput",
"PropReadOnly"
]
},
{
"typeId": "Spreadsheet::PropertyRowHeights",
"support": "opaque-fcstd-proxy",
"recordCount": 3,
"objectTypeCount": 3,
"statusNames": [
"PropHidden",
"PropOutput",
"PropReadOnly"
]
},
{
"typeId": "Spreadsheet::PropertySheet",
"support": "opaque-fcstd-proxy",
"recordCount": 3,
"objectTypeCount": 3,
"statusNames": [
"PropHidden"
]
},
{
"typeId": "TechDraw::PropertyCenterLineList",
"support": "opaque-fcstd-proxy",
"recordCount": 10,
"objectTypeCount": 10,
"statusNames": [
"PropOutput"
]
},
{
"typeId": "TechDraw::PropertyCosmeticEdgeList",
"support": "opaque-fcstd-proxy",
"recordCount": 10,
"objectTypeCount": 10,
"statusNames": [
"PropOutput"
]
},
{
"typeId": "TechDraw::PropertyCosmeticVertexList",
"support": "opaque-fcstd-proxy",
"recordCount": 10,
"objectTypeCount": 10,
"statusNames": [
"PropOutput"
]
},
{
"typeId": "TechDraw::PropertyGeomFormatList",
"support": "opaque-fcstd-proxy",
"recordCount": 10,
"objectTypeCount": 10,
"statusNames": [
"PropOutput"
]
}
],
"propertyStatus": {
"observed": [
"Hidden",
"Immutable",
"LockDynamic",
"NoModify",
"Ordered",
"Output",
"PartialTrigger",
"PropHidden",
"PropNoPersist",
"PropNoRecompute",
"PropOutput",
"PropReadOnly",
"PropTransient",
"ReadOnly",
"Transient"
],
"facadeNative": [
"Hidden",
"ReadOnly"
],
"proxyOnly": [
"Immutable",
"LockDynamic",
"NoModify",
"Ordered",
"Output",
"PartialTrigger",
"PropHidden",
"PropNoPersist",
"PropNoRecompute",
"PropOutput",
"PropReadOnly",
"PropTransient",
"Transient"
],
"proxyOnlyRecordCount": 2639,
"unknownNumericBits": []
},
"harness": {
"path": "scripts/run-freecad-native-property-semantics.mjs",
"bytes": 5658,
"sha256": "35eb62dc7988ac5f373fb25d1558ab830ecb42b261009fbd79638ee428800331"
},
"exactPromotionReady": false,
"exactBlocker": "complete native document and property semantics",
"generatedAt": "2026-08-14T12:20:59.613Z"
}

View File

@@ -64,14 +64,17 @@
"hostAdapterBound": true,
"productionEligible": false
},
"notLinkedProductionComponents": [
"productionLinkedComponents": [
"FreeCADBase static library",
"FreeCADApp static library",
"Part static library",
"Python static library",
"real Application and Document integration",
"FreeCAD private naming Worker bridge"
],
"remainingExactComponents": [
"complete Application and Document parity",
"exhaustive FCStd edit and round-trip corpus"
],
"candidateAbi": {
"scope": "isolated-non-production",
"exports": [
@@ -90,8 +93,12 @@
},
"production": {
"workerArtifact": "native/occt-history/dist/bitbybit-occt-history.wasm",
"workerLinked": false,
"exportedCallbacks": [],
"workerLinked": true,
"exportedCallbacks": [
"freecadNamingAbiVersion",
"freecadNamingCapabilitiesJson",
"freecadNamingEvidenceJson"
],
"requiredCallbacks": [
"freecadNamingAbiVersion",
"freecadNamingCapabilitiesJson",
@@ -99,8 +106,8 @@
]
},
"boundary": {
"freecadNamingBuildStatus": "contract-only",
"exTsn02": "in_progress",
"freecadNamingBuildStatus": "production-linked",
"exTsn02": "completed",
"systemExact": false
}
}

View File

@@ -7,7 +7,7 @@
"claim": {
"scope": "supported-web-facade",
"exactFreeCadParity": false,
"reason": "The contract exhausts the Sketcher serialization surface and supported PartDesign facade families; the shipped OCCT-only Worker is not linked with FreeCAD private naming code."
"reason": "The contract exhausts the Sketcher serialization surface and supported PartDesign facade families, and the production OCCT Worker links the locked FreeCAD private naming ABI; broader native oracle and round-trip gates remain open."
},
"sketcher": {
"geometryTypes": [
@@ -92,7 +92,7 @@
"ElementMap2"
],
"runtimeProfile": "freecad-private-v1-optional-worker",
"shippedWorkerImplementation": "not-linked",
"shippedWorkerImplementation": "freecad-linked",
"fallback": "final-shape-only",
"syntheticTokenGeneration": "forbidden"
}

View File

@@ -103,10 +103,10 @@
"The upstream FreeCAD CMake project currently creates shared libraries and requires a full wasm dependency graph; this plan does not treat a host build as a wasm SDK."
],
"boundary": {
"freecadNamingBuildStatus": "contract-only",
"exTsn02": "in_progress",
"freecadNamingBuildStatus": "production-linked",
"exTsn02": "completed",
"systemExact": false,
"workerLinked": false,
"callbacks": []
"workerLinked": true,
"callbacks": ["freecadNamingAbiVersion", "freecadNamingCapabilitiesJson", "freecadNamingEvidenceJson"]
}
}

View File

@@ -32,16 +32,16 @@
{ "id": "EX-KER-01", "title": "Match OCCT construction, validation, tolerances and failure diagnostics", "priority": "P0", "status": "in_progress", "dependencies": ["EX-ORA-02"], "deliverables": ["Per-operation native differential", "Tolerance and placement contract", "Failure-code map"], "acceptance": ["Shape validity, topology, mass properties and diagnostics match locked FreeCAD fixtures", "Worker ownership returns to zero after every case"], "evidence": ["check:browser-occt", "check:chrome-geometry-features"], "exactBlockedBy": ["Not all FreeCAD builder flags and failure branches are represented"] },
{ "id": "EX-TSN-00", "title": "Fail closed when native naming or builder evidence is absent", "priority": "P0", "status": "completed", "dependencies": [], "deliverables": ["Runtime naming evidence contract", "final-shape-only and ambiguous persistence", "ElementMap2 writer evidence guard"], "acceptance": ["Final geometry cannot mint a private FreeCAD token", "Unproven stage relations and isomorphic sources cannot become stable"], "evidence": ["check:freecad-native-naming-evidence", "check:freecad-exact-history-elementmap-gate"], "exactBlockedBy": [] },
{ "id": "EX-TSN-01", "title": "Capture native stage Shape and Generated/Modified/Deleted for every builder", "priority": "P0", "status": "completed", "dependencies": ["EX-KER-01", "EX-TSN-00"], "deliverables": ["All builder-stage captures", "Multi-input and one-to-many lineage", "Local feature recompute history"], "acceptance": ["Every feature result relation has a producing native stage", "No final-result index is applied to an intermediate Shape"], "evidence": ["check:freecad-composite-history-elementmap", "check:freecad-tsn-stage-evidence"], "exactBlockedBy": [] },
{ "id": "EX-TSN-02", "title": "Expose native MappedNameRef and StringHasher decisions for every feature", "priority": "P0", "status": "in_progress", "dependencies": ["EX-TSN-01"], "deliverables": ["Native naming callback ABI", "Per-stage StringHasher evidence", "Lossless ElementMap2 token generation"], "acceptance": ["All new tokens originate in native evidence", "FreeCAD round-trip names remain byte and semantic stable"], "evidence": ["check:freecad-native-naming-evidence", "check:freecad-sketcher-partdesign-abi", "check:freecad-naming-sdk", "check:freecad-private-naming-boundary", "check:occt-history-artifact"], "exactBlockedBy": ["The shipped Worker does not link the FreeCAD private naming implementation for every builder"] },
{ "id": "EX-TSN-03", "title": "Resolve isomorphic topology only from unique native provenance", "priority": "P0", "status": "in_progress", "dependencies": ["EX-TSN-01", "EX-TSN-02"], "deliverables": ["Symmetric Boolean corpus", "Candidate provenance graph", "Ambiguity repair lifecycle"], "acceptance": ["Unique native sources resolve deterministically", "Non-unique sources remain ambiguous across save, undo and recompute"], "evidence": ["test:topology-replay", "check:freecad-exact-history-elementmap-gate"], "exactBlockedBy": ["Symmetric cases without unique native provenance remain intentionally ambiguous"] },
{ "id": "EX-TSN-04", "title": "Close topology naming across all feature edits and FCStd round-trips", "priority": "P0", "status": "pending", "dependencies": ["EX-TSN-02", "EX-TSN-03"], "deliverables": ["Cross-feature mutation matrix", "ElementMap2 history migration", "Long-chain LinkSub stability report"], "acceptance": ["Wrong bindings, unexplained relations and name drift are zero for the exhaustive corpus"], "evidence": ["check:freecad-fcstd-roundtrip", "check:freecad-exact-history-elementmap-gate"], "exactBlockedBy": ["Exhaustive cross-feature naming corpus is incomplete"] }
{ "id": "EX-TSN-02", "title": "Expose native MappedNameRef and StringHasher decisions for every feature", "priority": "P0", "status": "completed", "dependencies": ["EX-TSN-01"], "deliverables": ["Native naming callback ABI", "Per-stage StringHasher evidence", "Lossless ElementMap2 token generation"], "acceptance": ["All new tokens originate in native evidence", "FreeCAD round-trip names remain byte and semantic stable"], "evidence": ["check:freecad-native-naming-evidence", "check:freecad-sketcher-partdesign-abi", "check:freecad-naming-sdk", "check:freecad-naming-production", "check:chrome-freecad-naming-production", "check:freecad-private-naming-boundary", "check:occt-history-artifact"], "exactBlockedBy": [] },
{ "id": "EX-TSN-03", "title": "Resolve isomorphic topology only from unique native provenance", "priority": "P0", "status": "completed", "dependencies": ["EX-TSN-01", "EX-TSN-02"], "deliverables": ["Symmetric Boolean corpus", "Candidate provenance graph", "Ambiguity repair lifecycle"], "acceptance": ["Unique native sources resolve deterministically", "Non-unique sources remain ambiguous across save, undo and recompute"], "evidence": ["test:topology-replay", "test:facade", "check:freecad-isomorphic-provenance", "check:freecad-naming-production", "check:chrome-freecad-naming-production", "check:freecad-exact-history-elementmap-gate"], "exactBlockedBy": [] },
{ "id": "EX-TSN-04", "title": "Close topology naming across all feature edits and FCStd round-trips", "priority": "P0", "status": "in_progress", "dependencies": ["EX-TSN-02", "EX-TSN-03"], "deliverables": ["Cross-feature mutation matrix", "ElementMap2 history migration", "Long-chain LinkSub stability report"], "acceptance": ["Wrong bindings, unexplained relations and name drift are zero for the exhaustive corpus"], "evidence": ["check:freecad-isomorphic-provenance", "check:freecad-composite-history-elementmap", "check:freecad-fcstd-roundtrip", "check:freecad-exact-history-elementmap-gate"], "exactBlockedBy": ["The 30-case native save-reopen-resave corpus now has zero mapped-name drift, but the exhaustive cross-feature transition matrix and production-chain desktop resave correlation remain incomplete"] }
]
},
{
"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-fcstd-roundtrip"], "exactBlockedBy": ["The runtime property inventory has unpromoted static candidates"] },
{ "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-fcstd-roundtrip"], "exactBlockedBy": ["Of 85 runtime property types and 5510 records, 62 types/692 records remain opaque-only and 2639 records use status semantics not represented natively by the Facade"] },
{ "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"] },
@@ -56,14 +56,14 @@
{ "id": "EX-SK-02", "title": "Match Sketcher editing tools, autoconstraints, virtual space and UI lifecycle", "priority": "P0", "status": "in_progress", "dependencies": ["EX-SK-01", "EX-UI-03"], "deliverables": ["Pointer and keyboard editor oracle", "All editing tools", "Task and focus lifecycle"], "acceptance": ["Every tool supports success, failure, cancel, undo and redo with matching selection"], "evidence": ["check:freecad-sketcher-editor", "check:chrome-sketcher-bspline"], "exactBlockedBy": ["The full GUI tool and focus matrix is incomplete"] },
{ "id": "EX-PART-01", "title": "Complete all Part primitives, builders, booleans, healing and inspection", "priority": "P0", "status": "in_progress", "dependencies": ["EX-KER-01", "EX-TSN-04"], "deliverables": ["All Part commands and parameters", "Healing and tolerance tools", "Native history for local operations"], "acceptance": ["Success and failure outputs match native Shape, history and diagnostics"], "evidence": ["check:chrome-part-primitives", "check:freecad-golden-fixtures"], "exactBlockedBy": ["Current golden corpus does not enumerate every Part command and option"] },
{ "id": "EX-PD-01", "title": "Complete all PartDesign features, parameters and additive/subtractive combinations", "priority": "P0", "status": "in_progress", "dependencies": ["EX-PART-01", "EX-TSN-04"], "deliverables": ["Complete PartDesign feature matrix", "Body Tip and feature-list semantics", "Per-feature native history and naming"], "acceptance": ["Every feature edit, failure recovery and save-reopen matches FreeCAD"], "evidence": ["check:partdesign-closure", "check:freecad-sketcher-partdesign-abi", "check:chrome-partdesign-lifecycle"], "exactBlockedBy": ["The parameter contract covers the supported Facade subset, not every registered PartDesign TypeId or cross-product"] },
{ "id": "EX-PD-02", "title": "Complete attachment, datum, ShapeBinder, SubShapeBinder and body workflows", "priority": "P0", "status": "pending", "dependencies": ["EX-PD-01", "EX-DOC-04"], "deliverables": ["All map modes and support rules", "Datum and binder lifecycle", "Multi-body and cross-document corpus"], "acceptance": ["Support migration, visibility, Tip and references remain exact through mutation"], "evidence": ["check:chrome-partdesign-lifecycle", "check:freecad-fcstd-roundtrip", "check:freecad-partdesign-structure", "check:freecad-attachment-modes"], "exactBlockedBy": ["Native same-document, first cross-document SubShapeBinder cases, and the 55-mode registry/engine partition pass; executable geometry for every implemented mode/reference combination, other XLink modes, relink recovery and Web Chrome replay remain incomplete"] }
{ "id": "EX-PD-02", "title": "Complete attachment, datum, ShapeBinder, SubShapeBinder and body workflows", "priority": "P0", "status": "completed", "dependencies": ["EX-PD-01", "EX-DOC-04"], "deliverables": ["All map modes and support rules", "Datum and binder lifecycle", "Multi-body and cross-document corpus"], "acceptance": ["Support migration, visibility, Tip and references remain exact through mutation"], "evidence": ["check:chrome-partdesign-lifecycle", "check:chrome-partdesign-reference-lifecycle", "check:freecad-fcstd-roundtrip", "check:freecad-partdesign-structure", "check:freecad-attachment-modes", "check:freecad-attachment-combinations", "check:freecad-xlink-relink"], "exactBlockedBy": [] }
]
},
{
"id": "EX05",
"title": "FCStd and all import/export entrypoints",
"tasks": [
{ "id": "EX-FC-01", "title": "Round-trip every native FCStd object, property, extension and resource", "priority": "P0", "status": "in_progress", "dependencies": ["EX-DOC-04", "EX-TSN-04"], "deliverables": ["Complete native archive model", "Unknown object preservation", "FreeCAD-Web-FreeCAD mutation corpus"], "acceptance": ["No supported object, property, GUI state or resource drifts after mutation and resave"], "evidence": ["check:fcstd-closure", "check:chrome-fcstd-roundtrip"], "exactBlockedBy": ["FCStd currently supports a verified subset plus read-only proxies"] },
{ "id": "EX-FC-01", "title": "Round-trip every native FCStd object, property, extension and resource", "priority": "P0", "status": "in_progress", "dependencies": ["EX-DOC-04", "EX-TSN-04"], "deliverables": ["Complete native archive model", "Unknown object preservation", "FreeCAD-Web-FreeCAD mutation corpus"], "acceptance": ["No supported object, property, GUI state or resource drifts after mutation and resave"], "evidence": ["check:freecad-native-property-semantics", "check:freecad-isomorphic-provenance", "check:fcstd-closure", "check:chrome-fcstd-roundtrip"], "exactBlockedBy": ["FCStd supports 23 native property codecs plus opaque preservation for 62 runtime types; exhaustive native mutation and resave remains open"] },
{ "id": "EX-FMT-01", "title": "Close BREP, STEP and IGES import/export semantics", "priority": "P0", "status": "in_progress", "dependencies": ["EX-KER-01"], "deliverables": ["Assembly/color/name import", "Unit and tolerance handling", "Deterministic exports"], "acceptance": ["Native and Web topology, metadata and diagnostics match for each format"] , "evidence": ["check:chrome-secondary-formats", "check:browser-occt"], "exactBlockedBy": ["Advanced STEP/IGES metadata and assembly cases are incomplete"] },
{ "id": "EX-FMT-02", "title": "Close STL, OBJ, PLY, DXF, SVG and PDF round-trips", "priority": "P1", "status": "in_progress", "dependencies": ["EX-MESH-01", "EX-DRAFT-01", "EX-TD-01"], "deliverables": ["Mesh and 2D format codecs", "Style/layer metadata", "Import-export failure corpus"], "acceptance": ["All supported entities and metadata round-trip or fail with a registered difference"] , "evidence": ["check:chrome-secondary-formats", "check:document-closure"], "exactBlockedBy": ["Several formats remain read-only or omit advanced entity metadata"] },
{ "id": "EX-FMT-03", "title": "Close IFC, CSV and G-code native object semantics", "priority": "P1", "status": "in_progress", "dependencies": ["EX-BIM-01", "EX-SS-01", "EX-CAM-01"], "deliverables": ["IFC schema and property sets", "Spreadsheet CSV dialect parity", "Path/G-code object round-trip"], "acceptance": ["Import, edit, export and native reopen preserve the declared object graph"] , "evidence": ["check:chrome-bim", "check:document-closure", "check:cam-parity"], "exactBlockedBy": ["IFC and G-code entrypoint inventory still records unsupported desktop semantics"] },

View File

@@ -0,0 +1,544 @@
{
"baselineId": "freecad-1.1.1-xlink-relink-oracle",
"edited": {
"binder": {
"area": 54,
"shapeNull": false,
"state": [
"Up-to-date"
],
"status": "Valid",
"support": [
{
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
}
]
},
"dimensions": {
"xLinkLength": 8,
"xLinkListHeights": [
6,
4
],
"xLinkSubListAreas": [
54,
28,
28
],
"xLinkSubWidth": 9
},
"holder": {
"propertyStatus": {
"XLink": [
"21"
],
"XLinkList": [
"21"
],
"XLinkSub": [
"21"
],
"XLinkSubList": [
"21"
]
},
"state": [
"Up-to-date"
],
"status": "Valid",
"xLink": {
"document": "XLinkSource",
"object": "SourceBox"
},
"xLinkList": [
{
"document": "XLinkSource",
"object": "SourceBox"
},
{
"document": "XLinkSource",
"object": "SecondBox"
}
],
"xLinkSub": {
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
},
"xLinkSubList": [
{
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
},
{
"document": "XLinkSource",
"object": "SecondBox",
"subElements": [
"Face1",
"Face2"
]
}
]
},
"sourceFaceArea": 54
},
"finalRoundtrip": {
"binder": {
"area": 54,
"shapeNull": false,
"state": [
"Up-to-date"
],
"status": "Valid",
"support": [
{
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
}
]
},
"dimensions": {
"xLinkLength": 8,
"xLinkListHeights": [
6,
4
],
"xLinkSubListAreas": [
54,
28,
28
],
"xLinkSubWidth": 9
},
"holder": {
"propertyStatus": {
"XLink": [
"21"
],
"XLinkList": [
"21"
],
"XLinkSub": [
"21"
],
"XLinkSubList": [
"21"
]
},
"state": [
"Up-to-date"
],
"status": "Valid",
"xLink": {
"document": "XLinkSource",
"object": "SourceBox"
},
"xLinkList": [
{
"document": "XLinkSource",
"object": "SourceBox"
},
{
"document": "XLinkSource",
"object": "SecondBox"
}
],
"xLinkSub": {
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
},
"xLinkSubList": [
{
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
},
{
"document": "XLinkSource",
"object": "SecondBox",
"subElements": [
"Face1",
"Face2"
]
}
]
},
"sourceFaceArea": 54
},
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"initial": {
"binder": {
"area": 30,
"shapeNull": false,
"state": [
"Up-to-date"
],
"status": "Valid",
"support": [
{
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
}
]
},
"dimensions": {
"xLinkLength": 4,
"xLinkListHeights": [
6,
2
],
"xLinkSubListAreas": [
30,
14,
14
],
"xLinkSubWidth": 5
},
"holder": {
"propertyStatus": {
"XLink": [
"21"
],
"XLinkList": [
"21"
],
"XLinkSub": [
"21"
],
"XLinkSubList": [
"21"
]
},
"state": [
"Up-to-date"
],
"status": "Valid",
"xLink": {
"document": "XLinkSource",
"object": "SourceBox"
},
"xLinkList": [
{
"document": "XLinkSource",
"object": "SourceBox"
},
{
"document": "XLinkSource",
"object": "SecondBox"
}
],
"xLinkSub": {
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
},
"xLinkSubList": [
{
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
},
{
"document": "XLinkSource",
"object": "SecondBox",
"subElements": [
"Face1",
"Face2"
]
}
]
},
"sourceDocuments": [
"XLinkConsumer",
"XLinkSource"
]
},
"missingSource": {
"binder": {
"area": 30,
"shapeNull": false,
"state": [
"Up-to-date"
],
"status": "Valid",
"support": []
},
"holder": {
"propertyStatus": {
"XLink": [
"21"
],
"XLinkList": [
"21"
],
"XLinkSub": [
"21"
],
"XLinkSubList": [
"21"
]
},
"state": [
"Up-to-date"
],
"status": "Valid",
"xLink": null,
"xLinkList": [],
"xLinkSub": null,
"xLinkSubList": []
},
"sourceOpen": false
},
"propertyTypes": [
"App::PropertyXLink",
"App::PropertyXLinkSub",
"App::PropertyXLinkList",
"App::PropertyXLinkSubList"
],
"relinkAfterClose": {
"binder": {
"area": 30,
"shapeNull": false,
"state": [
"Up-to-date"
],
"status": "Valid",
"support": [
{
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
}
]
},
"dimensions": {
"xLinkLength": 4,
"xLinkListHeights": [
6,
2
],
"xLinkSubListAreas": [
30,
14,
14
],
"xLinkSubWidth": 5
},
"holder": {
"propertyStatus": {
"XLink": [
"21"
],
"XLinkList": [
"21"
],
"XLinkSub": [
"21"
],
"XLinkSubList": [
"21"
]
},
"state": [
"Up-to-date"
],
"status": "Valid",
"xLink": {
"document": "XLinkSource",
"object": "SourceBox"
},
"xLinkList": [
{
"document": "XLinkSource",
"object": "SourceBox"
},
{
"document": "XLinkSource",
"object": "SecondBox"
}
],
"xLinkSub": {
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
},
"xLinkSubList": [
{
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
},
{
"document": "XLinkSource",
"object": "SecondBox",
"subElements": [
"Face1",
"Face2"
]
}
]
},
"sourceOpen": true
},
"relinkAfterMissing": {
"binder": {
"area": 30,
"shapeNull": false,
"state": [
"Up-to-date"
],
"status": "Valid",
"support": [
{
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
}
]
},
"dimensions": {
"xLinkLength": 4,
"xLinkListHeights": [
6,
2
],
"xLinkSubListAreas": [
30,
14,
14
],
"xLinkSubWidth": 5
},
"holder": {
"propertyStatus": {
"XLink": [
"21"
],
"XLinkList": [
"21"
],
"XLinkSub": [
"21"
],
"XLinkSubList": [
"21"
]
},
"state": [
"Up-to-date"
],
"status": "Valid",
"xLink": {
"document": "XLinkSource",
"object": "SourceBox"
},
"xLinkList": [
{
"document": "XLinkSource",
"object": "SourceBox"
},
{
"document": "XLinkSource",
"object": "SecondBox"
}
],
"xLinkSub": {
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
},
"xLinkSubList": [
{
"document": "XLinkSource",
"object": "SourceBox",
"subElements": [
"Face1"
]
},
{
"document": "XLinkSource",
"object": "SecondBox",
"subElements": [
"Face1",
"Face2"
]
}
]
},
"sourceOpen": true
},
"schemaVersion": 1,
"sourceClosed": {
"binder": {
"area": 30,
"shapeNull": false,
"state": [
"Up-to-date"
],
"status": "Valid",
"support": []
},
"holder": {
"propertyStatus": {
"XLink": [
"21"
],
"XLinkList": [
"21"
],
"XLinkSub": [
"21"
],
"XLinkSubList": [
"21"
]
},
"state": [
"Up-to-date"
],
"status": "Valid",
"xLink": null,
"xLinkList": [],
"xLinkSub": null,
"xLinkSubList": []
},
"sourceOpen": false
},
"status": "pass",
"tolerance": 1e-7
}

View File

@@ -17,8 +17,10 @@
"nativeOcct": {
"version": "8.0.0",
"sourceCommit": "bb75017e915f6509a4bfa8b551f853352754c2da",
"javascriptSha256": "78f1cdd17a6a7b61ff8435c0ff8c912a43c4517e6ef49f3f741521662a903557",
"wasmSha256": "b52125bd2c4999f62d435f0a34664556b7f1feb23590ddc0503fc6d3c7f1c8d6"
"buildStatus": "production-linked",
"javascriptSha256": "6a90575b81ceab5c00a2440e45e010bd62d3455b012541b4449f7b0e88a644c0",
"wasmSha256": "c03cf553e71bf4e74667c5aada921769bb241d6021f28a5b166b49c738965515",
"dataSha256": "ada204b276208027a5cb1cc1288d4aab95b8ee1f28e3a43a00cd062720b87e99"
},
"golden": {
"manifestScenarioCount": 100,

View File

@@ -111,6 +111,13 @@
"libraryPath": "artifacts/occt-history-dist.tar.zst",
"required": true
},
{
"id": "freecad-naming-wasm-sdk",
"source": ".cache/toolchains/freecad-naming-sdk",
"restore": ".cache/toolchains/freecad-naming-sdk",
"libraryPath": "toolchains/freecad-naming-wasm-sdk-1.1.1.tar.zst",
"required": true
},
{
"id": "planegcs-dist",
"source": "native/planegcs/dist",

View File

@@ -24,7 +24,7 @@
"wrong-document-root": 77
},
"timing": {
"p95Ms": 0.137,
"maxMs": 2.691
"p95Ms": 0.209,
"maxMs": 3.268
}
}

View File

@@ -41,7 +41,7 @@
"zero-revolution-axis": 67
},
"timing": {
"p95Ms": 0.02,
"maxMs": 1.133
"p95Ms": 0.022,
"maxMs": 1.146
}
}

View File

@@ -22,7 +22,7 @@
"invalid": 800
},
"timing": {
"p95Ms": 0.032,
"maxMs": 0.733
"p95Ms": 0.061,
"maxMs": 1.509
}
}

View File

@@ -22,20 +22,20 @@
"bytes": 556597,
"sha256": "1679307fb0f01e9d7b9f37a081458bf44583e4d1899edf9224b49a1435ce7105"
},
{
"path": "assets/index-B7ENiszF.js",
"bytes": 1134628,
"sha256": "53bd3b2876d56238158be315cfdf8d7143767c46c0a429271d9985c36f003ca4"
},
{
"path": "assets/index-BnRqhr3m.css",
"bytes": 65976,
"sha256": "b8eacf86224d2705e3c27367b3a0b166f4d662a5b8142d34a8abcdeef58753ec"
},
{
"path": "assets/nativeHistoryWorkerEntry-C7hZKjun.js",
"bytes": 21764,
"sha256": "a4fbc5e765e1d919c8f066b6b07e2064f62e3c291496972a2b4006069a17902b"
"path": "assets/index-BZhOOUrh.js",
"bytes": 1135258,
"sha256": "f8d20cf0ceeb131295d21f8d9809a542aa8871a50e74a712fdc065be307fd021"
},
{
"path": "assets/nativeHistoryWorkerEntry-BEDB1h7o.js",
"bytes": 26720,
"sha256": "461d02c24e96338bf3028da9d0c2b2d2021665954ecf46b21357cf51805a747d"
},
{
"path": "assets/persistenceWorker-DQjay47f.js",
@@ -232,6 +232,11 @@
"bytes": 190,
"sha256": "3cb76a9187f3f0cda082bfcf28c78c5bbf6abfc78a3cdb57d8560c2a7632fa51"
},
{
"path": "chrome-partdesign-reference-lifecycle-harness.html",
"bytes": 5646,
"sha256": "eb682b4a3681e189e80c90ec9ac9c246bb6922f9da2f0fe9ea0e3b3b25f05903"
},
{
"path": "chrome-partdesign-transform-harness.html",
"bytes": 200,
@@ -330,22 +335,27 @@
{
"path": "index.html",
"bytes": 678,
"sha256": "019c7f7b5255a12f94a19ae72edc50a45343e81779bed1b68842a934b31da01a"
"sha256": "b78bfb7e023a1f03371b5f2c322cb367a9a05c622e45a06e37670c87cc68cd3a"
},
{
"path": "manifest.webmanifest",
"bytes": 344,
"sha256": "cc7f6ffa211d1a79486885182e2e129640b0bf4367a18a2d2d08bd2c6cff3758"
},
{
"path": "native/occt-history/bitbybit-occt-history.data",
"bytes": 3322679,
"sha256": "ada204b276208027a5cb1cc1288d4aab95b8ee1f28e3a43a00cd062720b87e99"
},
{
"path": "native/occt-history/bitbybit-occt-history.js",
"bytes": 237925,
"sha256": "78f1cdd17a6a7b61ff8435c0ff8c912a43c4517e6ef49f3f741521662a903557"
"bytes": 359739,
"sha256": "6a90575b81ceab5c00a2440e45e010bd62d3455b012541b4449f7b0e88a644c0"
},
{
"path": "native/occt-history/bitbybit-occt-history.wasm",
"bytes": 23091986,
"sha256": "b52125bd2c4999f62d435f0a34664556b7f1feb23590ddc0503fc6d3c7f1c8d6"
"bytes": 37482285,
"sha256": "c03cf553e71bf4e74667c5aada921769bb241d6021f28a5b166b49c738965515"
},
{
"path": "native/occt-history/browser-harness-worker.js",
@@ -380,7 +390,7 @@
{
"path": "sw.js",
"bytes": 1390,
"sha256": "5389aba344f93a8948bfed30aa20c0a1c38cdba7d9ebf120964d0897bba7e8cc"
"sha256": "020250b7a88f8106b0666ad9d7070aefab28892371e4c670ab3d164b9e0922b6"
},
{
"path": "vendor/camotics/camotics-sweep.wasm",
@@ -402,7 +412,7 @@
"status": "signed",
"algorithm": "Ed25519",
"keyId": "bitbybit-local-release-2026",
"payloadSha256": "c8734e374954b614941eb295623252af2094e9de7e415a46a399936d1cc391a9",
"signature": "vtnNIPTf3sCXN2F0c5lRVO7E76DXuolr+B5dZ8YQ34rWeWbJvgLqFVIqQ3IHke9nQVUhwYOR7SR2EyG3gucBAQ=="
"payloadSha256": "44d3d76c20d3a5d4e691b2d98cc5dc6fa1df910e492bf811fa64133fb2f6177a",
"signature": "m2GxJ+PLZ2RcDSI9w0hUMF+ArOLKydE6ilbgRXKgJlj8qiIRrgvaFghAZQL23NGws++j/9Xv78EsaXRvZC8oDA=="
}
}