test: add reproducible FreeCAD golden oracle

This commit is contained in:
2026-08-03 03:20:37 -04:00
parent 81fcc69a74
commit 2ce261b982
27 changed files with 678 additions and 12 deletions

View File

@@ -21,7 +21,8 @@
"document": { "level": "experimental", "operations": ["typed-properties", "property-vector", "property-placement", "property-multi-transform", "property-link-list", "property-string-list", "property-link-sub", "expressions", "units", "dependency-dag", "parallel-level-recompute", "sync-recompute", "async-generation-recompute", "root-cause-diagnostics", "repair-branch-recompute", "versioned-toporef", "toporef-migration", "generation-topology-snapshot", "linksub-external-geometry-migration", "ambiguous-deleted-topology-diagnostics", "toporef-candidate-replacement-transaction", "signature-topology-history-fallback", "undo-redo"] },
"persistence": { "level": "experimental", "provider": "SQLite WASM + OPFS with transient fallback", "operations": ["schema-v6", "object-topology-snapshots", "transactional-migrations", "migration-rollback", "serialized-write-queue", "five-version-checkpoints", "checkpoint-load", "recovery-report", "content-addressed-resources", "quota-preflight", "resource-sweep-plan", "opfs-orphan-sweep", "cross-tab-lock-notice"] },
"sketcher": { "level": "experimental", "provider": "typescript-basic; planegcs-wasm unavailable", "operations": ["point-line-circle-arc-model", "ellipse-bspline-model-only", "construction-geometry", "stable-external-geometry-model", "basic-constraints", "diameter-symmetric-tangent", "basic-solver", "versioned-solver-protocol", "solver-capability-probe", "cancel-stale-isolation", "replay-contract", "persistence"] },
"fcstd": { "level": "read-only", "operations": ["zip-preflight", "document-xml-metadata", "proxy-report", "script-isolation"] }
"fcstd": { "level": "read-only", "operations": ["zip-preflight", "document-xml-metadata", "proxy-report", "script-isolation"] },
"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"] }
},
"rules": [
"UI status does not imply geometry or file compatibility.",

View File

@@ -5,6 +5,6 @@
"sourceUrl": "https://github.com/FreeCAD/FreeCAD/releases/tag/1.1.1",
"uiContract": "FreeCAD official desktop UI and Developers Handbook",
"compatibilityLevels": ["exact", "compatible", "read-only", "proxy", "unsupported"],
"status": "release-tag-and-source-commit-verified",
"notes": "The official 1.1.1 release tag resolves to the recorded commit. Build flags, compiler image, and enabled workbenches remain P0-01 deliverables."
"status": "native-headless-part-oracle-verified",
"notes": "The official 1.1.1 tag and commit are locked. A reproducible local headless Part oracle and five geometry replay fixtures are verified; the digest-locked container, full workbench build, 100 golden files, and 50 error files remain P0-01/P0-03 deliverables."
}

View File

@@ -0,0 +1,3 @@
# FreeCAD 1.1.1 generates Base translations in headless builds but only loads
# LinguistTools from its GUI branch. Keep the pinned source tree unmodified.
find_package(Qt6 REQUIRED COMPONENTS LinguistTools)

View File

@@ -0,0 +1,36 @@
{
"schemaVersion": 1,
"baselineId": "freecad-1.1.1",
"source": {
"repository": "https://github.com/FreeCAD/FreeCAD.git",
"tag": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"host": {
"distribution": "Debian trixie",
"compiler": "GCC 14.2.0",
"cmake": "3.31.6",
"ninja": "1.12.1",
"python": "3.13.5",
"qt": "6.8.2",
"occt": "7.8.1",
"swig": "4.3.0"
},
"configuration": {
"buildType": "Release",
"gui": false,
"enabledModules": ["Part", "Material", "Measure"],
"purpose": "FreeCADCmd geometry oracle; not a complete desktop distribution"
},
"artifact": {
"path": ".cache/freecad/install-native/bin/FreeCADCmd",
"reportedVersion": "FreeCAD 1.1.1 Revision: 14556 (Git)",
"sizeBytes": 137688,
"sha256": "14b8e8c94472249c657426ee312f6f6d05b62e328dfe2794d20c81c95379bfbc"
},
"verification": {
"goldenManifest": "fixtures/freecad-golden/manifest.json",
"scenarioCount": 5,
"result": "passed"
}
}

View File

@@ -0,0 +1,38 @@
{
"schemaVersion": 1,
"baselineId": "freecad-1.1.1",
"source": {
"repository": "https://github.com/FreeCAD/FreeCAD.git",
"tag": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"verification": "git-ls-remote-tag"
},
"desktopOracle": {
"commandEnvironmentVariable": "FREECAD_CMD",
"candidateCommands": [".cache/freecad/install-native/bin/FreeCADCmd", "FreeCADCmd", "freecadcmd"],
"requiredVersion": "1.1.1",
"localBuildManifest": "config/freecad-native-build.json"
},
"wasmToolchain": {
"emscripten": "3.1.69",
"cmake": "3.31.6",
"ninja": "1.12.1",
"status": "host-tools-detected-container-lock-pending"
},
"sourceCheckout": {
"defaultDirectory": ".cache/freecad/FreeCAD",
"mode": "detached-pinned-commit"
},
"nativeBuild": {
"buildDirectory": ".cache/freecad/build-native",
"installDirectory": ".cache/freecad/install-native",
"configuration": "Release",
"status": "headless-part-oracle-verified"
},
"goldenContract": {
"manifest": "fixtures/freecad-golden/manifest.json",
"driver": "scripts/freecad-golden-driver.py",
"resultPrefix": "FREECAD_GOLDEN_RESULT=",
"schemaVersion": 1
}
}