Compare commits

...

12 Commits

749 changed files with 372190 additions and 683 deletions

82
.github/workflows/real-verification.yml vendored Normal file
View File

@@ -0,0 +1,82 @@
name: real-verification
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
permissions:
contents: read
# These jobs deliberately use the CAD self-hosted runner. The runner image must
# contain Chrome, CMake/Ninja, Emscripten, and the pinned CAMotics/OpenCAMLib/
# LinuxCNC worktrees described in docs/ci-real-verification.zh-CN.md.
jobs:
chrome:
runs-on: [self-hosted, linux, cad]
timeout-minutes: 90
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22.23.2
cache: npm
- run: ./npmw ci --ignore-scripts
- name: Run real Chrome harnesses
run: ./npmw run ci:real:chrome
env:
CHROME_BIN: ${{ vars.CHROME_BIN }}
- name: Check generated Chrome reports
run: ./npmw run ci:check:chrome
env:
CHROME_BIN: ${{ vars.CHROME_BIN }}
- name: Run Firefox and WebKit matrix
run: ./npmw run test:browser-matrix
env:
FIREFOX_BIN: ${{ vars.FIREFOX_BIN }}
WEBKIT_BIN: ${{ vars.WEBKIT_BIN }}
- name: Check Firefox and WebKit reports
run: ./npmw run check:browser-matrix
- name: Upload Chrome evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: chrome-real-verification-${{ github.run_id }}
if-no-files-found: warn
path: |
.cache/ci/real-verification*.json
config/chrome-*-verification.json
config/browser-matrix-verification.json
fixtures/chrome-app-e2e/*.png
freecad-oracle:
runs-on: [self-hosted, linux, cad]
timeout-minutes: 180
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22.23.2
cache: npm
- run: ./npmw ci --ignore-scripts
- run: ./npmw run ci:real -- --lane=oracle
env:
FREECAD_ORACLE_PROFILE: desktop
wasm:
runs-on: [self-hosted, linux, cad]
timeout-minutes: 120
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22.23.2
cache: npm
- run: ./npmw ci --ignore-scripts
- run: ./npmw run ci:real -- --lane=wasm
env:
CHROME_BIN: ${{ vars.CHROME_BIN }}
EMSDK: ${{ vars.EMSDK }}
OCCT_SOURCE_DIR: ${{ vars.OCCT_SOURCE_DIR }}
CI_REAL_REBUILD_WASM: '1'

10
.gitignore vendored
View File

@@ -3,6 +3,16 @@ dist/
.vite/
.runtime/
.cache/
.secrets/
# Reproducible upstream source/build worktrees. Their revisions and artifact
# hashes are recorded under config/ and fetched by the build scripts.
CAMotics/
OpenCAMLib/
cnc_wams_gpt6/
working_ocl/
# Ephemeral output from real CI lanes.
.cache/ci/
native/occt-history/dist/
public/native/occt-history/
__pycache__/

View File

@@ -11,6 +11,10 @@ FreeCAD-aligned web CAD frontend baseline for the BitBybit runtime boundary.
- Chinese implementation plan in `docs/web-cad-implementation-plan.zh-CN.md`
- Full 34-module FreeCAD 1.1.1 scope, Bitbybit/OCCT source-build track and executable task ledger in [docs/freecad-complete-parity-backlog.zh-CN.md](docs/freecad-complete-parity-backlog.zh-CN.md)
- Executable reference-oracle and R0-R9 delivery order in [docs/freecad-reference-execution-roadmap.zh-CN.md](docs/freecad-reference-execution-roadmap.zh-CN.md)
- Detailed owner lanes, 83-task WBS, dependencies and gates in [docs/freecad-full-parity-execution-wbs.zh-CN.md](docs/freecad-full-parity-execution-wbs.zh-CN.md)
- Reproducible 34-module source inventory in [config/freecad-source-inventory.json](config/freecad-source-inventory.json), generated and checked with `./npmw run generate:freecad-inventory` and `./npmw run check:freecad-inventory`
- Source-traceable TypeId/property candidate inventory in [config/freecad-type-property-inventory.json](config/freecad-type-property-inventory.json), checked with `./npmw run check:freecad-type-properties`
- Locked FreeCAD 1.1.1 planegcs WASM subset with Dedicated Worker verification for line/circle/curve constraints, SnellsLaw, Ellipse InternalAlignment helpers and clamped cubic B-spline Weight
The current milestone is a facade-first integration slice. Part Design document transactions and history are executable in the mock domain adapter; the internal SQLite WASM + OPFS Persistence Worker, schema and in-memory fallback are bundled behind `facade.project`. FreeCAD/OCCT geometry, solver behavior, FCStd interoperability and full workbench semantics remain staged behind the documented P3-P7 gates.

View File

@@ -0,0 +1,5 @@
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>CAM LinuxCNC WASM Machine Harness</title></head>
<body><pre id="result">running</pre><script type="module" src="/src/chromeCamLinuxcncMachineHarness.ts"></script></body>
</html>

View File

@@ -0,0 +1,12 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CAMotics WASM Harness</title>
</head>
<body>
<pre id="result">Running CAMotics WASM...</pre>
<script type="module" src="/src/chromeCamoticsWasmHarness.ts"></script>
</body>
</html>

View File

@@ -0,0 +1,16 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" href="data:," />
<title>Chrome FCStd Golden Harness</title>
</head>
<body>
<main>
<h1>Chrome FCStd Golden Harness</h1>
<p id="status">Initializing Bitbybit...</p>
</main>
<script type="module" src="/src/chromeFcstdGoldenHarness.ts"></script>
</body>
</html>

View File

@@ -0,0 +1,5 @@
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8" /><title>Chrome FCStd semantic round-trip harness</title></head>
<body><main id="status">Initializing FCStd semantic harness.</main><script type="module" src="/src/chromeFcstdSemanticHarness.ts"></script></body>
</html>

View File

@@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" href="data:," />
<title>Bitbybit geometry feature harness</title>
</head>
<body>
<main id="status">Initializing Bitbybit geometry feature harness.</main>
<script type="module" src="/src/chromeGeometryFeatureHarness.ts"></script>
</body>
</html>

View File

@@ -0,0 +1,5 @@
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8" /><title>Bitbybit Part primitive harness</title></head>
<body><main id="status">Initializing Part primitive harness.</main><script type="module" src="/src/chromePartPrimitivesHarness.ts"></script></body>
</html>

View File

@@ -0,0 +1,45 @@
{
"schemaVersion": 1,
"generatedAt": "2026-08-11T04:50:53.969Z",
"status": "pass",
"browsers": [
{
"engine": "firefox",
"status": "pass",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64; rv:153.0) Gecko/20100101 Firefox/153.0",
"crossOriginIsolated": true,
"sharedArrayBuffer": true,
"opfs": true,
"persistence": "opfs",
"shell": true,
"workspace": true,
"workbench": "Part Design",
"canvas": {
"width": 732,
"height": 579,
"geometrySource": "bitbybit-occt"
},
"screenshotBytes": 131545,
"pageErrors": []
},
{
"engine": "webkit",
"status": "pass",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5 Safari/605.1.15",
"crossOriginIsolated": true,
"sharedArrayBuffer": true,
"opfs": false,
"persistence": "memory-fallback",
"shell": true,
"workspace": true,
"workbench": "Part Design",
"canvas": {
"width": 732,
"height": 579,
"geometrySource": "bitbybit-occt"
},
"screenshotBytes": 128023,
"pageErrors": []
}
]
}

View File

@@ -0,0 +1,38 @@
{
"schemaVersion": 1,
"status": "pass",
"source": {
"path": "CAMotics",
"revision": "e84665f2fa9d1151f03282ac7e01320bc65e015b",
"version": "1.3"
},
"build": {
"command": "scons -C CAMotics with_gui=1 with_tpl=1 strict=0 cxxstd=c++17 v8_compress_pointers=0 camotics tplang -j4",
"gui": true,
"tpl": true,
"qtModules": ["QtCore", "QtGui", "QtOpenGL", "QtNetwork", "QtWidgets", "QtWebSockets"],
"compiler": "g++ (Debian 14.2.0-19) 14.2.0",
"sconsVersion": "4.8.1"
},
"artifacts": {
"CAMotics/camotics": {
"bytes": 6332544,
"sha256": "4a592f91e6987f87aba596dbcaa9ce8826b5f5249361eafe6f7638d039efa658"
},
"CAMotics/tplang": {
"bytes": 4062360,
"sha256": "7d4ae6e81a7382aa355615690c1a9cfbf00be52cd5c5277e7c421795ceef9b1d"
}
},
"smoke": {
"camotics": {"command": "QT_QPA_PLATFORM=offscreen CAMotics/camotics --help", "exitCode": 0, "contains": ["Usage:", "--version"]},
"tplang": {"command": "CAMotics/tplang --help", "exitCode": 0, "contains": ["Usage:", "--linearize", "--json-out"]}
},
"browserBoundary": {
"nativeGuiExecutable": true,
"browserNativeGuiExecutable": false,
"browserSweepWasmKernel": true,
"fullBrowserProgram": false,
"canonicalGcodeParser": "linuxcnc-wasm"
}
}

View File

@@ -0,0 +1,124 @@
{
"schemaVersion": 2,
"status": "pass",
"source": {
"path": "CAMotics",
"repository": "https://github.com/CauldronDevelopmentLLC/CAMotics.git",
"revision": "e84665f2fa9d1151f03282ac7e01320bc65e015b",
"version": "1.3"
},
"cbang": {
"path": ".cache/camotics-native/cbang",
"repository": "https://github.com/CauldronDevelopmentLLC/cbang.git",
"revision": "9b6672a0e2b800a909d799ffa3ab46774cf171b8",
"version": "1.7.2",
"v8PointerCompression": false
},
"build": {
"mode": "release-native-qt5-tpl-cli",
"compiler": "g++ (Debian 14.2.0-19) 14.2.0",
"sconsVersion": "SCons by Steven Knight et al.:",
"nodeV8PackageVersion": "20.19.2+dfsg-1+deb13u2",
"qtVersion": "5.15.15",
"options": [
"strict=0",
"cxxstd=c++17",
"v8_compress_pointers=0"
],
"withGui": true,
"withTpl": true,
"browserExecutable": false
},
"artifacts": {
"CAMotics/camotics": {
"bytes": 6332544,
"sha256": "4a592f91e6987f87aba596dbcaa9ce8826b5f5249361eafe6f7638d039efa658",
"mode": "100775"
},
"CAMotics/tplang": {
"bytes": 4062360,
"sha256": "7d4ae6e81a7382aa355615690c1a9cfbf00be52cd5c5277e7c421795ceef9b1d",
"mode": "100775"
}
},
"cliArtifacts": {
"CAMotics/camsim": {
"bytes": 4566168,
"sha256": "e5446f5089afc402ef5302e41673b24bdb2dfffec020f77c5c31b92466def8a1",
"mode": "100775"
},
"CAMotics/gcodetool": {
"bytes": 3435664,
"sha256": "0df147ba191be9a14bf828b6a9a2b8d1344927b0870540dd16da2e9dd004a8fc",
"mode": "100775"
},
"CAMotics/planner": {
"bytes": 4258968,
"sha256": "c2ddbad1e63519796d48fc59e4bb146c4694e5f9a992805657279eb2957ebcca",
"mode": "100775"
},
"CAMotics/build/camotics.so": {
"bytes": 5354352,
"sha256": "a05293ffff45608ab78a954c0886a3b308a8443f89d5b64aa4dc0e258d8bb707",
"mode": "100775"
}
},
"cliSmoke": {
"CAMotics/camsim": {
"exitCode": 0,
"containsUsage": true
},
"CAMotics/gcodetool": {
"exitCode": 0,
"containsUsage": true
},
"CAMotics/planner": {
"exitCode": 0,
"containsUsage": true
}
},
"tplTests": {
"command": "cd CAMotics/tests/tplTests && ../testHarness --no-color",
"passed": 10,
"failed": 0,
"outputSha256": "d950c742211b31732a0c2e3eb5b13d142f55c93ce5ed316d426ca64de50c3aeb"
},
"tplExample": {
"input": "CAMotics/examples/box/box.tpl",
"bytes": 1875,
"lines": 118,
"sha256": "bedef74675d294d94f1e820531c605cb0a0c50f16cad1c01af58d01aa0072ee9"
},
"guiSmoke": {
"status": "pass",
"processAliveBeforeTerminate": true,
"browserRuntime": false,
"window": {
"title": "CAMotics",
"width": 1200,
"height": 800,
"depth": 24,
"mapState": "IsViewable"
},
"startupBannerSha256": "4eef1b2b798a03772a6803dc9b70432e1fdc4f404d56f236f803e173a66e3b2a",
"startupStderrSha256": "222d98d486e328bf627d4dde8fae9c7d65b31685fb6cf5d871ff8bf316719811"
},
"pipelineBoundary": {
"workspaceNativeGuiAvailable": true,
"workspaceNativeTplAvailable": true,
"workspaceNativeCliAvailable": true,
"browserNativeGuiAvailable": false,
"browserNativeTplAvailable": false,
"nativeRole": "host-native-qt5-tpl-cli-sidecar",
"generationAuthority": "camotics-source-stage",
"canonicalGcodeParser": "linuxcnc-wasm",
"camoticsParsesCanonicalPipelineGcode": false,
"order": [
"cad",
"opencamlib-wasm",
"camotics-source-stage",
"gcode",
"linuxcnc-wasm-parse-execute"
]
}
}

View File

@@ -0,0 +1,58 @@
{
"schemaVersion": 1,
"status": "pass",
"kind": "standalone-camotics-sweep-wasm-kernel",
"upstream": {
"path": "CAMotics",
"repository": "https://github.com/CauldronDevelopmentLLC/CAMotics.git",
"revision": "e84665f2fa9d1151f03282ac7e01320bc65e015b",
"version": "1.3"
},
"build": {
"script": "native/camotics-wasm/build.sh",
"compiler": "Emscripten 3.1.69",
"language": "C++17",
"standaloneWasm": true,
"optimization": "O3-lto",
"sourceFiles": {
"CAMotics/src/camotics/sim/Sweep.cpp": "5e32782ab4f258aaba09374a93647e6292088956cbccbae578fbb9dff1c77faf",
"CAMotics/src/camotics/sim/ConicSweep.cpp": "fbc00eb1b5f274d929c59338145da2f054569e831ab1309dd36f2652b61d5dab",
"CAMotics/src/camotics/sim/SpheroidSweep.cpp": "9783b9cb805c138d91e25160fdddf28913b3cb3844d912bf888e795431b68f83",
"native/camotics-wasm/camotics_sweep.cpp": "d5e28dbe64ba4619b0266b902f8956561d4a1f65f4f6da39967c9b5a98e6a147",
"native/camotics-wasm/include/cbang/geom/Rectangle.h": "400e11b1d5bcc8d950758d5cf963f5cabf779e98b48f004c08783ff513be87e0"
}
},
"artifact": {
"path": "public/vendor/camotics/camotics-sweep.wasm",
"url": "/vendor/camotics/camotics-sweep.wasm",
"bytes": 11932,
"sha256": "889588d2dc9755f84f56b8ebe1acc9bc1f0ded7e676e162a5a001011f4ebec5b",
"abiVersion": 1,
"imports": [],
"requiredExports": [
"memory",
"camotics_sweep_abi_version",
"camotics_conic_depth",
"camotics_spheroid_depth",
"camotics_conic_bbox_count"
]
},
"scope": {
"actualUpstreamCppCompiled": true,
"browserExecutable": true,
"conicSweep": true,
"spheroidSweep": true,
"sweepBoundingBoxes": true,
"fullCamoticsProgram": false,
"qtGuiIncluded": false,
"tplIncluded": false,
"gcodeParserIncluded": false,
"canonicalGcodeParser": "linuxcnc-wasm"
},
"smoke": {
"conicInsideDepth": 1,
"conicOutsideDepth": -1,
"spheroidInsideDepth": 1,
"longMoveBoundingBoxes": 3
}
}

View File

@@ -0,0 +1,35 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"catalog": {
"installed": 1,
"revision": 1,
"rollbackVersion": "1.0.0"
},
"security": {
"forgedRejected": true,
"permissionRejected": true,
"removed": true
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 838,
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "ADDON-ALL",
"markerInstalled": 1,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,441 @@
{
"schemaVersion": 1,
"generatedAt": "2026-08-11T02:37:40.468Z",
"browserId": "chrome",
"status": "pass",
"browser": {
"product": "Chrome/150.0.7871.128",
"protocolVersion": "1.3",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
},
"headers": {
"coop": "same-origin",
"coep": "require-corp"
},
"workflows": [
"start-to-workspace",
"viewport-multi-object-box-selection",
"freecad-menus",
"command-search-dialog",
"preferences-about-dialogs",
"model-tree-context-menu",
"workbench-change",
"create-sketch-command",
"loft-section-task",
"drawer-collapse",
"cam-workbench-job-flow",
"opfs-save-reopen",
"import-format-selection",
"export-format-selection"
],
"uiParity": {
"fileMenu": {
"items": 7,
"labels": [
"New documentCtrl+N",
"Open...Ctrl+O",
"SaveCtrl+S",
"Save as...",
"Import...",
"Export...",
"Close documentCtrl+W"
],
"expanded": "File"
},
"commandDialog": {
"modal": true,
"results": 18,
"title": "Command search",
"focused": "Command search"
},
"preferencesDialog": {
"selects": 3,
"checks": 2,
"modal": true
},
"aboutDialog": {
"modal": true,
"baseline": true
},
"contextMenu": {
"items": [
"Toggle visibility Space",
"Rename F2",
"Recompute object",
"Delete"
],
"left": 180,
"top": 330
},
"multiSelection": {
"count": 2,
"labels": [
"Sketch",
"Pad"
]
},
"viewportBoxSelection": {
"objectCount": 2,
"topologySource": "occt-analytic",
"topologySources": {
"face": "occt-analytic",
"edge": "occt-analytic",
"vertex": "occt-analytic"
},
"edgeCount": 15,
"vertexCount": 10,
"selectedCount": 2,
"labels": [
"Box",
"Cylinder"
],
"gesture": {
"mode": "crossing",
"objectIds": [
"box",
"cylinder"
]
}
},
"camMenu": {
"items": 60,
"groups": [
"Project Setup",
"Simulation and Tools",
"2D Operations",
"Machining Operations",
"Path Modification"
],
"labels": [
"Project SetupCreate Job",
"Fixture",
"Compound Path",
"Property Bag",
"Post Process",
"Export Template",
"Sanity Check",
"Simulation and ToolsSimulators",
"CAM Simulator",
"CAM Simulator GL",
"CAMotics",
"Inspect Path",
"Select Loop",
"Stop Processing",
"Toggle Operation",
"ToolBit Library",
"Tool Controller",
"Create ToolBit",
"ToolBit Dock",
"Load ToolBit",
"Save ToolBit",
"Save ToolBit As",
"2D OperationsProfile",
"Pocket Shape",
"Mill Face",
"Helix",
"Adaptive",
"Slot",
"Area",
"Area Workplane",
"Drilling",
"Tapping",
"Thread Milling",
"Engrave",
"Deburr",
"V-Carve",
"Probe",
"Path Shape",
"Custom Operation",
"Path Shape Tool Controller",
"Machining OperationsDrilling Operations",
"Engraving Operations",
"3D Operations",
"Pocket 3D",
"Path ModificationCopy Operation",
"Copy Path",
"Simple Copy",
"Array",
"Dressup Operations",
"Array Dress-up",
"Axis Map Dress-up",
"Dogbone Dress-up",
"Drag Knife Dress-up",
"Lead In/Out Dress-up",
"Path Boundary Dress-up",
"Ramp Entry Dress-up",
"Holding Tags Dress-up",
"Z Correct Dress-up",
"Set Start Point",
"Comment"
]
}
},
"desktop": {
"path": "/workspace/pump-housing",
"workbench": "Part Design",
"persistenceMode": "sqlite-opfs",
"bodyHorizontalOverflow": 0,
"overflowingControls": 0,
"canvas": {
"width": 892,
"height": 679,
"source": "bitbybit-occt",
"uniqueColors": 36,
"glError": 0
},
"panelsSeparated": true,
"commandGroups": 5,
"comboTabs": [
"Model",
"Tasks 1"
],
"selectionView": true,
"statusBar": true,
"kernelPreviewSource": "bitbybit-occt"
},
"loftTask": {
"sectionCount": 1,
"checkedSectionCount": 1,
"labels": [
"Sketch (sketch)"
],
"listVerticalOverflow": 0,
"panelHorizontalOverflow": 0
},
"cam": {
"jobTask": {
"stockModes": 4,
"fields": 5,
"actions": [
"OK",
"Apply",
"Cancel"
]
},
"toolTask": {
"selects": 2,
"inputs": 13
},
"operationTask": {
"inputs": 5,
"selects": 2
},
"undoRedo": {
"undo": {
"pathPoints": 0,
"redoEnabled": true
},
"redo": {
"pathPoints": 5,
"undoEnabled": true
}
},
"extendedTasks": {
"fixture": {
"inputs": 7,
"section": true,
"labels": [
"Fixture ID",
"Min X",
"Min Y",
"Min Z",
"Max X",
"Max Y",
"Max Z"
]
},
"toolBitLoad": {
"inputs": 1,
"textareas": 1,
"schemaVersion": true
},
"drilling": {
"inputs": 5,
"selects": 2,
"labels": [
"Final Depth mm",
"Step Down mm",
"Step Over %",
"Horizontal Feed mm/min",
"Vertical Feed mm/min",
"DirectionClimbConventionalEither",
"Coolant ModeNoneFloodMist"
]
},
"dragKnife": {
"inputs": 1,
"selects": 1,
"knifeOffset": true
},
"post": {
"inputs": 4,
"selects": 4,
"labels": [
"Post Processorgrbllinuxcncmach3-mach4centroidmarlinmasso-g3snapmaker",
"Axis Configuration3-axis4-axis5-axis",
"Rotary AxisABC",
"Rotary Start deg",
"Rotary End deg",
"Tilt AxisABC",
"Tilt Start deg",
"Tilt End deg"
],
"note": "LinuxCNC WASM - XYZBC RTCP; rotary limit checks are enforced before posting."
}
},
"ui": {
"workbench": "CAM",
"commandGroups": 4,
"toolbarCommands": 60,
"jobTree": true,
"treeRows": 7,
"operations": 1,
"generated": true,
"toolpathPoints": 5,
"toolpathOperations": 1,
"toolpathLegend": true,
"horizontalOverflow": 0
}
},
"persistenceRoundTrip": {
"path": "/workspace/pump-housing",
"documentLabel": "Pump Housing / CAM",
"persistenceMode": "sqlite-opfs"
},
"importFlow": {
"path": "/import",
"accept": ".FCStd,.fcstd,.step,.stp,.iges,.igs,.brep,.brp",
"exchangeHint": true
},
"exportFlow": {
"path": "/export",
"formats": {
"STEP": {
"disabled": false,
"selected": true
},
"IGES": {
"disabled": false,
"selected": false
},
"STL": {
"disabled": false,
"selected": false
},
"BREP": {
"disabled": false,
"selected": false
},
"GLB / GLTF": {
"disabled": true,
"selected": false
},
"Web CAD package": {
"disabled": true,
"selected": false
}
},
"selectedAfterInteraction": "STL"
},
"mobile": {
"path": "/start",
"viewport": {
"width": 390,
"height": 844,
"devicePixelRatio": 2
},
"bodyHorizontalOverflow": 0,
"visibleHeading": true,
"visibleActions": true
},
"accessibility": {
"checked": 15,
"missing": []
},
"screenReader": {
"nodes": 162,
"controls": 16,
"namedControls": 16,
"unnamedControls": 0,
"landmarks": 0
},
"keyboard": {
"steps": 8,
"named": 8,
"unnamedVisible": 0,
"sequence": [
{
"tag": "DIV",
"name": "BitBybit Web FreeCAD start page",
"visible": true
},
{
"tag": "BUTTON",
"name": "Help",
"visible": true
},
{
"tag": "BUTTON",
"name": "Account and sync",
"visible": true
},
{
"tag": "BUTTON",
"name": "Open project",
"visible": true
},
{
"tag": "BUTTON",
"name": "New document",
"visible": true
},
{
"tag": "BUTTON",
"name": "Create blank document",
"visible": true
},
{
"tag": "BUTTON",
"name": "Browse examples",
"visible": true
},
{
"tag": "BUTTON",
"name": "Open a projectBrowse local files",
"visible": true
}
]
},
"pwa": {
"manifestLinked": true,
"manifestStatus": 200,
"name": "BitBybit CAD Studio",
"startUrl": "/start",
"scope": "/",
"display": "standalone"
},
"offline": {
"path": "/start",
"shell": true,
"heading": true,
"mode": "online-shell"
},
"screenshots": {
"desktop": {
"path": "fixtures/chrome-app-e2e/desktop-workspace.png",
"byteLength": 108743,
"sha256": "dd67ab23283ffd55dc0509174f8636eac5344de581d4cacfff13cc1828617399"
},
"cam": {
"path": "fixtures/chrome-app-e2e/cam-workbench.png",
"byteLength": 118389,
"sha256": "c339e4b998b8ce7b3290c32efeffebed85dbd1d56d8ae9f764196c7b52e80a8f"
},
"mobile": {
"path": "fixtures/chrome-app-e2e/mobile-start.png",
"byteLength": 130371,
"sha256": "9d69c9e9ced4b45bbd083a37a94b5df074e8d60540c0857e79b9df08a8648d81"
}
},
"pageErrors": []
}

View File

@@ -0,0 +1,64 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"geometry": {
"components": 2,
"validShapes": 2,
"releasedShapes": 0
},
"solver": {
"status": "solved",
"iterations": 2,
"coincident": "solved",
"distance": "solved",
"shaftX": 5,
"diagnostics": 0,
"workerStatus": "solved",
"angleStatus": "solved",
"angleYaw": 1.5707963267948966
},
"tools": {
"bomRows": 2,
"collisionCount": 1,
"explodedMoved": true,
"variantX": 7,
"motionFrames": 5,
"motionEndX": 9
},
"scale": {
"components": 1000,
"bomRows": 10,
"durationMs": 6.685000061988831,
"budgetMs": 1000
},
"fcstd": {
"bytes": 727,
"objects": 4,
"links": 1,
"reopenedObjects": 4,
"roundTrip": true,
"released": true
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 980,
"hash": "93bbadc1517ccf2443c74578e92bea6d13c01b02976a53630707f5e7002a6066",
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "ASM-TOOLS",
"markerComponents": 2,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,44 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"model": {
"sites": 1,
"buildings": 1,
"levels": 1,
"spaces": 1,
"materials": 1,
"elements": 1,
"scheduleRows": 1,
"ifc4Bytes": 492,
"ifc2x3Bytes": 494,
"ifc4Schema": "IFC4",
"ifc2x3Schema": "IFC2X3",
"ifc4Entities": 7,
"ifc4Hierarchy": 4,
"ifc4PropertySets": 1,
"ifc4Classifications": 1,
"ifc2x3RoundTrip": true
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 848,
"hash": "7a55c8b5c5f1f5354c2819c6289c9ae60351f7c0d6d1844e51eea2785ce7fad8",
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "BIM-IFC",
"elements": 1,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,46 @@
{
"schemaVersion": 1,
"status": "pass",
"stages": [
"CAD",
"OCL",
"CAMotics",
"GCODE",
"LinuxCNC WASM"
],
"openCamLib": {
"backend": "upstream-opencamlib-wasm",
"sourceRevision": "95b036fe28ce6d77c97b98e5fbc337904ae49560",
"artifactSha256": "30ca7dd307a131f9df66288d530c3fbacf155f375f83a2d733c5c00a85a712e0",
"algorithm": "path-drop-cutter",
"surfaceModel": "cad-operation-plane",
"triangleCount": 2,
"inputPoints": 5,
"outputPoints": 48,
"sampling": 1
},
"gcode": {
"bytes": 2758,
"hasM428": true,
"hasM429": true,
"hasG93": true,
"hasG94": true,
"hasB": true,
"hasC359": true,
"hasC361": true
},
"machine": {
"backend": "linuxcnc-wasm",
"status": "accepted",
"dryRunStatus": "dry-run",
"parserAuthority": "linuxcnc-wasm",
"lines": 65,
"blocks": 138,
"trajectorySegments": 48
},
"browserId": "chrome",
"browser": {
"product": "150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,134 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"capabilities": {
"openCamLib": {
"status": "available",
"backend": "upstream-opencamlib-wasm",
"sourceRevision": "95b036fe28ce6d77c97b98e5fbc337904ae49560",
"artifactSha256": "30ca7dd307a131f9df66288d530c3fbacf155f375f83a2d733c5c00a85a712e0",
"algorithms": [
"path-drop-cutter",
"adaptive-path-drop-cutter",
"waterline",
"adaptive-waterline"
]
},
"solidRemoval": {
"status": "available",
"backend": "bitbybit-occt-wasm",
"model": "sampled-flat-end-brep",
"nativeSolid": true,
"freeCadNativeEquivalent": false,
"sweepModes": [
"sampled-flat-end",
"continuous-segment"
]
},
"camotics": {
"status": "native-host-available",
"backend": "camotics-native-host-qt5-tpl",
"sourceRevision": "e84665f2fa9d1151f03282ac7e01320bc65e015b",
"cbangRevision": "9b6672a0e2b800a909d799ffa3ab46774cf171b8",
"sourcePaths": [
"CAMotics/src/gcode/machine/GCodeMachine.cpp",
"CAMotics/src/tplang/GCodeModule.cpp",
"CAMotics/src/camotics/sim/ToolSweep.cpp"
],
"workspaceNativeExecutable": true,
"nativeGuiPath": "CAMotics/camotics",
"nativeTplPath": "CAMotics/tplang",
"nativeArtifactEvidence": "config/camotics-native-artifact.json",
"browserExecutable": false,
"browserWasmKernelExecutable": true,
"nativeCliPath": "CAMotics/camsim",
"wasmKernel": {
"backend": "camotics-upstream-sweep-wasm",
"artifactSha256": "889588d2dc9755f84f56b8ebe1acc9bc1f0ded7e676e162a5a001011f4ebec5b",
"scope": [
"conic-sweep",
"spheroid-sweep",
"sweep-bounding-boxes"
],
"fullCamoticsProgram": false,
"gcodeParserIncluded": false
},
"generationAuthority": "camotics-source-stage",
"parserAuthority": "linuxcnc-wasm",
"camoticsParsesCanonicalGcode": false,
"reason": "CAMotics 1.3 native Qt5 GUI and TPL compiler are workspace-verified host sidecars with pinned C! 1.7.2 and V8 ABI settings. The browser executes a standalone upstream Conic/Spheroid sweep WASM subset, not the native ELF, Qt GUI, TPL compiler, or full program; browser G-code generation preserves source-stage motion semantics and sends canonical G-code to LinuxCNC WASM."
}
},
"openCamLib": {
"backend": "upstream-opencamlib-wasm",
"sourceRevision": "95b036fe28ce6d77c97b98e5fbc337904ae49560",
"artifactSha256": "30ca7dd307a131f9df66288d530c3fbacf155f375f83a2d733c5c00a85a712e0",
"triangles": 2,
"points": 14,
"minimumZ": 2,
"maximumZ": 2,
"deterministic": true
},
"camotics": {
"backend": "camotics-source-stage-contract",
"sourceRevision": "e84665f2fa9d1151f03282ac7e01320bc65e015b",
"nativeExecutable": false,
"lineCount": 18,
"gcodeBytes": 164,
"gcodeHash": "0a7731201c19564c7b00950ee6432b4201918811a70b00db501a3663750fb792",
"parserAuthority": "linuxcnc-wasm",
"camoticsParsesCanonicalGcode": false
},
"pipeline": {
"stages": [
"cad",
"opencamlib-wasm",
"camotics-source-stage",
"gcode",
"linuxcnc-wasm-parse-execute"
],
"canonicalGcodeAuthority": "linuxcnc-wasm",
"camoticsSemanticParser": false,
"linuxcncWasmExecution": "handoff-required"
},
"solidRemoval": {
"backend": "bitbybit-occt-wasm",
"model": "sampled-flat-end-brep",
"sweepMode": "sampled-flat-end",
"nativeSolid": true,
"freeCadNativeEquivalent": false,
"sampleCount": 7,
"stockVolume": 299.99999999999994,
"removedVolume": 12,
"remainingVolume": 287.99999999999994,
"structuralValid": true,
"solids": 1,
"meshVertices": 48,
"meshTriangles": 28,
"brepBytes": 4885,
"brepHash": "76237c323f4614488e527b92c9ad7e3d8b6b5db968b5d7a481da26da59fe00be"
},
"curvedSolidRemoval": {
"backend": "bitbybit-occt-wasm",
"model": "continuous-segment-sweep-brep",
"sweepMode": "continuous-segment",
"sampleCount": 13,
"stockVolume": 299.99999999999994,
"removedVolume": 13.876647806980372,
"remainingVolume": 286.12335219301957,
"structuralValid": true,
"solids": 1,
"meshVertices": 506,
"meshTriangles": 652
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,100 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"extended": {
"commandSurface": 60,
"operationKinds": 22,
"dressupKinds": 9,
"toolAssetRoundTrip": true,
"jobAssetRoundTrip": true,
"metadataRoundTrip": true,
"metadataComments": 1,
"metadataProperties": 3,
"metadataCompounds": 1,
"undoRedo": true,
"startPointChanged": true,
"materialRemoval": true,
"removalTimelinePoints": 23,
"fixtureCollision": true,
"multiAxis": true
},
"geometry": {
"sourceShape": "shape-msjl38sz-1",
"valid": true,
"volume": 30
},
"job": {
"stockMode": "from-base-bound-box",
"tools": 2,
"controllers": 2,
"operations": 3,
"operationKinds": [
"profile",
"pocket",
"drilling"
],
"operationStatuses": [
"generated",
"generated",
"generated"
],
"pathPoints": 23,
"dressups": 1,
"setup": {
"safeHeightOffset": 1,
"clearanceHeightOffset": 2,
"coolantMode": "flood"
},
"sanity": "pass",
"sanityIssues": 0,
"simulation": "pass",
"collisions": 0,
"collisionFixture": 1,
"simulationDiagnostics": 0,
"postprocessors": [
"grbl",
"linuxcnc",
"mach3-mach4",
"centroid",
"marlin",
"masso-g3",
"snapmaker"
],
"post": "linuxcnc",
"postHashes": {
"grbl": "9c61705ba595d923d2b44af6ac3c241084ceba2e09f79b1fea73480b4b6a0335",
"linuxcnc": "dc7cb5950e6726652bdec45bcc5050e57df90bc02d5474981534835a6dc67ea6",
"mach3-mach4": "3a19dd81b0aeec7f39e801912af13f66d6cdca564a094c558a6fc7fa5a829140",
"centroid": "ae2e7a7567ef16627bc9ec3279763c492d1a4836905133fdf438a1f7e9043a3d",
"marlin": "f31fe4e2bc177cb4b9d5942f807d26df1a15d8081c244d9b38ac18ad7323e84b",
"masso-g3": "7503170abe807b3be53c599efd3626a3b471809875c898107ce3f7aa378247cb",
"snapmaker": "ee8e3b7cc0403e62e3f382023bec7d67e04edf64c2be69543ecaf6a504c5c638"
},
"unsafePostRejected": true,
"gcodeBytes": 1055,
"gcodeHash": "dc7cb5950e6726652bdec45bcc5050e57df90bc02d5474981534835a6dc67ea6",
"deterministic": true
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 2478,
"hash": "a5259a9b16395ed0d76f5b7f06303aec72ab5f6b4c1aa3b05bd094f794ec88a7",
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "CAM-ALL",
"operations": 3,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,27 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"kernel": {
"backend": "camotics-upstream-sweep-wasm",
"sourceRevision": "e84665f2fa9d1151f03282ac7e01320bc65e015b",
"artifactSha256": "889588d2dc9755f84f56b8ebe1acc9bc1f0ded7e676e162a5a001011f4ebec5b",
"abiVersion": 1,
"imports": 0,
"fullCamoticsProgram": false,
"gcodeParserIncluded": false
},
"sweep": {
"conicInsideDepth": 1,
"conicOutsideDepth": -1,
"spheroidInsideDepth": 1,
"longMoveBoundingBoxes": 3,
"deterministic": true
},
"parserAuthority": "linuxcnc-wasm",
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,78 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"adapters": {
"total": 7,
"supported": 4,
"proxy": 3
},
"records": {
"total": 7,
"proxy": 3,
"manifestBytes": 18893
},
"points": {
"sourceCount": 6,
"parsedFormats": [
"pts",
"pcd",
"ply"
],
"mergedCount": 12,
"croppedCount": 4,
"polygonCroppedCount": 4,
"reducedCount": 1,
"structured": {
"width": 3,
"height": 2,
"cells": 6
},
"centered": {
"x": 0,
"y": 0,
"z": 0
},
"exportBytes": {
"asc": 36,
"pts": 38,
"xyz": 36,
"csv": 42,
"pcd": 168,
"ply": 139
}
},
"reverseEngineering": {
"planeRms": 1.725911830690932e-16,
"sphereRadius": 2,
"cylinderRadius": 3,
"cylinderHeight": 8,
"polynomialRms": 0,
"segmentCount": 2,
"segmentSizes": [
2,
2
]
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 8049,
"hash": "cddf902c92cbe1b131aaf8a1bc800f3a7acb0bddc234acaa41130f9e0d6d0860",
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "DATA-ALL",
"records": 7,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,59 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"workingPlane": {
"worldPoint": {
"x": 10,
"y": 22,
"z": 33
},
"snapped": {
"x": 1,
"y": 2.5
}
},
"objects": {
"total": 9,
"lines": 2,
"wires": 1,
"circles": 1,
"clones": 5,
"arrays": 4,
"layers": 2,
"sourceDependencies": 5
},
"operations": {
"moved": true,
"rotated": true,
"scaled": true,
"offsetLength": 8,
"trimmedLength": 4,
"cloneTranslation": {
"x": 10,
"y": 0
},
"arrayCount": 4
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 1566,
"hash": "80ed54a852ec54887444b8c003ddd17dcf0cdf73322d2745cb768000306b27b5",
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "DRAFT-OPS",
"markerObjects": 9,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,65 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"integrity": {
"complete": true,
"artifacts": 4,
"kinds": 4,
"missingKinds": 0,
"missingRefs": 0,
"projectVersion": 8,
"artifactVersions": [
2,
2,
2,
2
],
"reopenedComplete": true
},
"workflow": {
"assemblyComponents": 2,
"bimElements": 1,
"meshTriangles": 12,
"surfacePatches": 5,
"exports": {
"assemblyBytes": 718,
"ifcBytes": 437,
"meshObjBytes": 340,
"surfaceObjBytes": 641
},
"edited": {
"assemblyX": 6,
"fireRating": "A1",
"meshMinX": -2.75,
"surfaceOffset": 0.5
}
},
"scale": {
"components": 1000,
"bomRows": 20,
"durationMs": 5.044999957084656,
"budgetMs": 1000
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 10035,
"hash": "9e550b295f8f5cb124c341b276437bbfa4b486928a83430538b4151ba8ce1e8e",
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "ENG-CLOSURE",
"artifacts": 4,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,35 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"executionContext": "dedicated-worker",
"crossOriginIsolated": true,
"sharedArrayBuffer": true,
"status": "pass",
"lifecycle": {
"initialAvailable": true,
"completed": "completed",
"cancelled": "cancelled",
"crashInjected": true,
"unavailableAfterCrash": true,
"workerFactoryCount": 3,
"recovered": "completed",
"stale": "stale",
"recoveredEnd": {
"x": 5,
"y": 0
},
"nativeInitialAvailable": true,
"nativeCrashInjected": true,
"nativeUnavailableAfterCrash": true,
"nativeWorkerFactoryCount": 2,
"nativeRecoveredAvailable": true
},
"opfs": {
"markerBytes": 0,
"markerRemoved": true
},
"activeWorkersBeforeDispose": 3,
"activeNativeWorkersBeforeDispose": 2,
"activeWorkersAfterDispose": 3,
"activeNativeWorkersAfterDispose": 2
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,57 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"baseline": {
"freecadVersion": "1.1.1",
"bitbybitVersion": "1.1.1"
},
"directions": [
"freecad-web-freecad",
"web-freecad-web"
],
"scenarios": [
{
"id": "freecad-web-freecad-core",
"direction": "freecad-web-freecad",
"status": "pass",
"differences": [],
"domains": [
"objectTree",
"properties",
"gui",
"resources"
]
},
{
"id": "web-freecad-web-core",
"direction": "web-freecad-web",
"status": "pass",
"differences": [],
"domains": [
"objectTree",
"properties",
"shape",
"resources"
]
}
],
"persistence": {
"mode": "sqlite-opfs",
"bytes": 1969,
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "FC-10",
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,56 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"objectNames": [
"Source",
"Spreadsheet",
"Cut",
"Sketch"
],
"expression": "Spreadsheet.Width * 2",
"link": "Source",
"linkSub": {
"objectId": "Source",
"subElement": "Face1"
},
"linkSubList": [
{
"objectId": "Source",
"subElement": "Face1"
},
{
"objectId": "Source",
"subElement": "Face2"
}
],
"sketchGeometryIds": [
"profile"
],
"dependencyRelations": [
"expression",
"link",
"topo-ref",
"topo-ref-list"
],
"archiveBytes": 1807,
"guiViews": [
"Front",
"Top"
],
"shapeResource": {
"path": "Part/Source.Shape.brp",
"byteLength": 20,
"elementMap": "1",
"elementMapEntries": 1
},
"opfs": {
"markerSuite": "FC-06",
"archiveBytes": 1807,
"markerRemoved": true
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,45 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"geometry": {
"sourceShape": "shape-msi9tz1t-1",
"valid": true,
"vertices": 8,
"volume": 39.99999999999999
},
"solve": {
"status": "solved",
"strategy": "local-reference",
"nodes": 2,
"nodeSets": 1,
"resultFields": [
"displacement",
"stress"
],
"maxDisplacement": 0.00125,
"maxStress": 25,
"csvBytes": 80
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 664,
"hash": "55d2c9b06f0e451acad3a9295facd864f37044a5e39446447591c015b435b336",
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "FEM-ALL",
"nodes": 2,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,270 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"geometryProvider": "Bitbybit OCCT",
"operations": [
{
"name": "fcstd-brep-import",
"shapeId": "shape-msi3gc2p-3",
"meshVertices": 24,
"meshTriangles": 12,
"topology": {
"faces": 6,
"edges": 12,
"vertices": 8
}
},
{
"name": "extrude",
"shapeId": "shape-msi3gc3x-5",
"meshVertices": 24,
"meshTriangles": 12
},
{
"name": "revolution",
"shapeId": "shape-msi3gc4e-6",
"meshVertices": 188,
"meshTriangles": 176
},
{
"name": "fillet-selected-edge",
"shapeId": "shape-msi3gc64-8",
"meshVertices": 54,
"meshTriangles": 40
},
{
"name": "chamfer-selected-edge",
"shapeId": "shape-msi3gc6i-a",
"meshVertices": 30,
"meshTriangles": 16
},
{
"name": "draft-selected-face",
"shapeId": "shape-msi3gc7d-c",
"meshVertices": 24,
"meshTriangles": 12
},
{
"name": "thickness",
"shapeId": "shape-msi3gc9p-e",
"meshVertices": 48,
"meshTriangles": 28
},
{
"name": "hole-counterbore",
"shapeId": "shape-msi3gclb-i",
"meshVertices": 322,
"meshTriangles": 248
},
{
"name": "hole-countersink",
"shapeId": "shape-msi3gcy0-m",
"meshVertices": 476,
"meshTriangles": 350
},
{
"name": "hole-counterdrill",
"shapeId": "shape-msi3gdce-r",
"meshVertices": 530,
"meshTriangles": 402
},
{
"name": "hole-angled-drill-point",
"shapeId": "shape-msi3gdo2-v",
"meshVertices": 439,
"meshTriangles": 323
},
{
"name": "hole-angled-included-depth",
"shapeId": "shape-msi3gdz7-z",
"meshVertices": 439,
"meshTriangles": 323
},
{
"name": "hole-tapered",
"shapeId": "shape-msi3ge0m-12",
"meshVertices": 186,
"meshTriangles": 220
},
{
"name": "loft",
"shapeId": "shape-msi3ge1k-13",
"meshVertices": 28,
"meshTriangles": 20
},
{
"name": "loft-ruled",
"shapeId": "shape-msi3ge21-14",
"meshVertices": 28,
"meshTriangles": 20
},
{
"name": "loft-additive",
"shapeId": "shape-msi3ge70-16",
"meshVertices": 48,
"meshTriangles": 28
},
{
"name": "loft-subtractive",
"shapeId": "shape-msi3ge87-18",
"meshVertices": 52,
"meshTriangles": 32
},
{
"name": "pipe",
"shapeId": "shape-msi3ge93-19",
"meshVertices": 24,
"meshTriangles": 12
},
{
"name": "extrude-two-sided",
"shapeId": "shape-msi3ge9z-1c",
"meshVertices": 24,
"meshTriangles": 12
},
{
"name": "revolution-symmetric",
"shapeId": "shape-msi3gebl-1f",
"meshVertices": 132,
"meshTriangles": 120
},
{
"name": "revolution-two-angles",
"shapeId": "shape-msi3gedv-1i",
"meshVertices": 16,
"meshTriangles": 8
},
{
"name": "pad-two-sided",
"shapeId": "shape-msi3geem-1l",
"meshVertices": 24,
"meshTriangles": 12
},
{
"name": "pocket-two-sided",
"shapeId": "shape-msi3gemb-1o",
"meshVertices": 216,
"meshTriangles": 144
},
{
"name": "pad-tapered",
"shapeId": "shape-msi3gen7-1p",
"meshVertices": 28,
"meshTriangles": 20,
"volume": 98.7734437461102
},
{
"name": "pocket-tapered",
"shapeId": "shape-msi3geos-1r",
"meshVertices": 52,
"meshTriangles": 40,
"volume": 810.4374375507407
},
{
"name": "pocket-through-all",
"shapeId": "shape-msi3gepy-1t",
"meshVertices": 48,
"meshTriangles": 32,
"volume": 960
},
{
"name": "pocket-up-to-face",
"shapeId": "shape-msi3geqo-1v",
"meshVertices": 48,
"meshTriangles": 32,
"volume": 960
},
{
"name": "pad-midplane",
"shapeId": "shape-msi3ger1-1w",
"meshVertices": 24,
"meshTriangles": 12,
"volume": 95.99999999999999
},
{
"name": "linear-pattern-spacing",
"shapeId": "shape-msi3geru-20",
"meshVertices": 72,
"meshTriangles": 36
},
{
"name": "polar-pattern-spacing",
"shapeId": "shape-msi3gesr-24",
"meshVertices": 72,
"meshTriangles": 36
}
],
"beforeRelease": {
"shapeCount": 1076,
"kernelReferenceCount": 1062
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"fcstdBrep": {
"resourcePath": "Part/Box.Shape.brp",
"references": 1,
"sourceBytes": 2573,
"topology": {
"faces": 6,
"edges": 12,
"vertices": 8
},
"massProperties": {
"source": {
"volume": 24,
"surfaceArea": 52,
"centerOfMass": [
9.540979117872439e-18,
4.625929269271485e-18,
3.700743415417188e-17
]
},
"imported": {
"volume": 24,
"surfaceArea": 52,
"centerOfMass": [
9.540979117872439e-18,
4.625929269271485e-18,
3.700743415417188e-17
]
}
},
"emptyRejected": true,
"cancelledBeforeImport": true,
"cancelledResultReleased": true
},
"exchangeFormats": {
"iges": {
"sourceBytes": 12393,
"sourceVolume": 24,
"importedVolume": 24,
"importedFaces": 6,
"importedEdges": 24,
"importedVertices": 24
}
},
"performance": {
"durationMs": 7560.079999923706,
"operationCount": 30,
"averageOperationMs": 252.00266666412352,
"peakShapeCount": 75,
"stressObjectCount": 1000,
"stressDurationMs": 130.1799999475479,
"stressPeakShapeCount": 1075,
"triangleStress": {
"radius": 100,
"precision": 0.01,
"triangles": 100520,
"vertices": 50420,
"durationMs": 2931.8450000286102
}
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
},
"pageErrors": []
}

View File

@@ -0,0 +1,49 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"shape": {
"volume": 120,
"area": 148,
"valid": true,
"solids": 1,
"faces": 6,
"vertices": 8
},
"measurements": {
"distance": 5,
"angle": 90,
"volume": 120,
"area": 148,
"deviation": 0.009999999999999787,
"deviationStatus": "resolved",
"sectionArea": 24.000002000000038,
"topoRefs": 2,
"stableRefs": 1,
"unresolvedRefs": [
"Face2"
],
"csvRows": 6
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 823,
"hash": "85640b462b63bfa773b23b0799541af30db1dce095df77d3ae3bf9fd6cf89b86",
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "INSP-ALL",
"measurements": 5,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,55 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"geometry": {
"sourceShape": "shape-msi8t4og-1",
"vertices": 8,
"triangles": 12,
"boundaryEdges": 0,
"nonManifoldEdges": 0,
"degenerateTriangles": 0,
"selfIntersections": 0,
"surfaceArea": 304
},
"operations": {
"welded": 16,
"transformedMin": [
-6.5,
-1,
-3
],
"objBytes": 340,
"objHash": "5e92b07b682e0a4a0133b556494a2c11cacf97ed901579efde985dd270a1213a",
"plyBytes": 479,
"stlBytes": 1371,
"lodTriangles": 6,
"workerLodTriangles": 6
},
"repairs": {
"selfIntersectionFixture": 1,
"nonManifoldFixture": 1,
"holeFilledTriangles": 1
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 259,
"hash": "47984c2196fe7d53e5e9bc8f25796ab0da32a24fdefef0c688ae5d3f8ec78dd1",
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "MESH-CORE",
"triangles": 12,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,72 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"executionContext": "geometry-and-history-workers",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 150,
"relations": {
"modified": 6,
"generated": 72,
"deleted": 72
},
"sourceObjects": [
"Base"
]
},
"result": {
"structuralValid": true,
"solids": 1,
"volume": 215.52000000000004
},
"opfs": {
"markerCreated": true,
"markerSuite": "chamfer",
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,72 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"executionContext": "geometry-and-history-workers",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 5,
"relations": {
"modified": 4,
"generated": 1,
"deleted": 0
},
"sourceObjects": [
"Base"
]
},
"result": {
"structuralValid": true,
"solids": 1,
"volume": 63.999999999999986
},
"opfs": {
"markerCreated": true,
"markerSuite": "draft",
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,72 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"executionContext": "geometry-and-history-workers",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 150,
"relations": {
"modified": 6,
"generated": 72,
"deleted": 72
},
"sourceObjects": [
"Base"
]
},
"result": {
"structuralValid": true,
"solids": 1,
"volume": 215.79398223686158
},
"opfs": {
"markerCreated": true,
"markerSuite": "fillet",
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,491 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 2,
"sourceObjects": [
"Base",
"Profile",
"chrome-native-groove-history:native-stage:0:result"
],
"relations": {
"modified": 1,
"generated": 0,
"deleted": 1
},
"stages": [
{
"stageId": "chrome-native-groove-history:native-stage:0",
"operation": "revolution",
"inputObjectIds": [
"Profile"
],
"resultObjectId": "chrome-native-groove-history:native-stage:0:result",
"ordinal": 0,
"topologyEntries": 14,
"recordCount": 23
},
{
"stageId": "chrome-native-groove-history:native-stage:1",
"operation": "cut",
"inputObjectIds": [
"Base",
"chrome-native-groove-history:native-stage:0:result"
],
"resultObjectId": "chrome-native-groove-history:native-stage:1:result",
"ordinal": 1,
"topologyEntries": 40,
"recordCount": 2
}
]
},
"twoAngleHistory": {
"recordCount": 2,
"sourceObjects": [
"Base",
"Profile",
"chrome-native-groove-two-angles-history:native-stage:0:result",
"chrome-native-groove-two-angles-history:native-stage:1:result"
],
"structuralValid": true,
"graphStructuralValid": false,
"graphStructuralErrors": 40,
"graphStructuralWarnings": 0,
"graphStructuralIssues": [
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 0
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 1
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 2
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 3
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 4
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 5
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 6
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 7
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 8
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 9
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 10
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 11
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 12
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 13
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 14
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 15
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 16
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 17
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 18
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 19
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 20
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 21
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 22
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 23
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 24
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 25
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 26
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 27
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 32
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 33
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 34
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 35
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 40
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 41
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 42
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 43
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 44
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 45
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 46
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 47
},
"description": "CoEdgeDef has no Curve2D representation"
}
],
"unexplainedStructuralErrors": 0,
"solids": 1,
"volume": 790.5752220392302,
"stages": [
{
"stageId": "chrome-native-groove-two-angles-history:native-stage:0",
"operation": "rotate",
"inputObjectIds": [
"Profile"
],
"resultObjectId": "chrome-native-groove-two-angles-history:native-stage:0:result",
"ordinal": 0,
"topologyEntries": 9,
"recordCount": 13
},
{
"stageId": "chrome-native-groove-two-angles-history:native-stage:1",
"operation": "revolution",
"inputObjectIds": [
"chrome-native-groove-two-angles-history:native-stage:0:result"
],
"resultObjectId": "chrome-native-groove-two-angles-history:native-stage:1:result",
"ordinal": 1,
"topologyEntries": 26,
"recordCount": 25
},
{
"stageId": "chrome-native-groove-two-angles-history:native-stage:2",
"operation": "cut",
"inputObjectIds": [
"Base",
"chrome-native-groove-two-angles-history:native-stage:1:result"
],
"resultObjectId": "GrooveTwoAngles",
"ordinal": 2,
"topologyEntries": 52,
"recordCount": 2
}
]
},
"base": {
"boundingBox": {
"min": [
-5.0000001,
-1e-7,
-4.0000001
],
"max": [
5.0000001,
10.0000001,
4.0000001
]
},
"volume": 799.9999999999998
},
"result": {
"structuralValid": true,
"structuralErrors": 0,
"structuralWarnings": 0,
"solids": 1,
"faces": 10,
"edges": 18,
"vertices": 12,
"volume": 781.1504440784611
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"opfs": {
"markerOperation": "groove",
"markerRemoved": true
}
}

View File

@@ -0,0 +1,57 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 87,
"relations": {
"deleted": 69,
"modified": 18
}
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,102 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"executionContext": "geometry-and-history-workers",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 8,
"relations": {
"modified": 6,
"generated": 0,
"deleted": 2
},
"sourceObjects": [
"Base",
"chrome-native-hole-history:native-stage:0:result"
],
"stages": [
{
"stageId": "chrome-native-hole-history:native-stage:0",
"operation": "hole",
"inputObjectIds": [],
"resultObjectId": "chrome-native-hole-history:native-stage:0:result",
"ordinal": 0,
"topologyEntries": 8,
"recordCount": 0
},
{
"stageId": "chrome-native-hole-history:native-stage:1",
"operation": "cut",
"inputObjectIds": [
"Base",
"chrome-native-hole-history:native-stage:0:result"
],
"resultObjectId": "chrome-native-hole-history:native-stage:1:result",
"ordinal": 1,
"topologyEntries": 32,
"recordCount": 8
}
],
"sourceStageIds": [
"chrome-native-hole-history:native-stage:0"
],
"resultStageIds": [
"chrome-native-hole-history:native-stage:1"
]
},
"result": {
"structuralValid": true,
"solids": 1,
"volume": 968.584073464102
},
"opfs": {
"markerCreated": true,
"markerSuite": "hole",
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,73 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 66,
"relations": {
"modified": 64,
"generated": 0,
"deleted": 2
},
"sourceObjects": [
"Base"
]
},
"result": {
"bitbybitStructuralValid": false,
"bitbybitSolids": 1,
"bitbybitVolume": 12,
"nativeStructuralValid": true,
"nativeSolids": 1,
"nativeVolume": 11.999999999999995
},
"opfs": {
"markerSuite": "linear-pattern",
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,75 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 24,
"relations": {
"modified": 0,
"generated": 24,
"deleted": 0
},
"sourceObjects": [
"FirstSection",
"SecondSection"
]
},
"result": {
"bitbybitStructuralValid": false,
"bitbybitSolids": 1,
"bitbybitVolume": 20
},
"opfs": {
"markerPayload": {
"operation": "loft",
"sections": 2,
"ruled": false
},
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,73 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 66,
"relations": {
"modified": 64,
"generated": 0,
"deleted": 2
},
"sourceObjects": [
"Base"
]
},
"result": {
"bitbybitStructuralValid": false,
"bitbybitSolids": 1,
"bitbybitVolume": 3,
"nativeStructuralValid": true,
"nativeSolids": 1,
"nativeVolume": 2.999999999999999
},
"opfs": {
"markerSuite": "mirrored",
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,120 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 311,
"relations": {
"modified": 88,
"generated": 222,
"deleted": 1
},
"sourceObjects": [
"Base"
],
"transformKinds": [
"linear",
"mirrored"
],
"stagedRecordCount": 97,
"stages": [
{
"stageId": "multi-transform-staged-history:native-stage:0",
"operation": "linear-pattern",
"inputObjectIds": [
"Base"
],
"resultObjectId": "multi-transform-staged-history:native-stage:0:result",
"ordinal": 0,
"topologyEntries": 58,
"recordCount": 30
},
{
"stageId": "multi-transform-staged-history:native-stage:1",
"operation": "mirrored",
"inputObjectIds": [
"multi-transform-staged-history:native-stage:0:result"
],
"resultObjectId": "MultiTransform",
"ordinal": 1,
"topologyEntries": 90,
"recordCount": 97
}
],
"finalRecordLineage": {
"records": 97,
"sourceObjectIds": [
"multi-transform-staged-history:native-stage:0:result"
],
"sourceStageIds": [
"multi-transform-staged-history:native-stage:0"
],
"resultStageIds": [
"multi-transform-staged-history:native-stage:1"
]
}
},
"result": {
"bitbybitStructuralValid": false,
"bitbybitSolids": 1,
"bitbybitVolume": 4.999999999999999,
"nativeStructuralValid": true,
"nativeSolids": 1,
"nativeVolume": 4.999999999999998
},
"opfs": {
"markerPayload": {
"operation": "multi-transform",
"transformKinds": [
"linear",
"mirrored"
]
},
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,74 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"executionContext": "dedicated-worker",
"crossOriginIsolated": true,
"status": "pass",
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"execution": {
"status": "completed",
"recordCount": 25,
"crossKindRecords": 12,
"relations": {
"modified": 13,
"generated": 12,
"deleted": 0
},
"profileKinds": [
"vertex",
"edge",
"face"
],
"summary": {
"shapeType": "CompSolid",
"isNull": false,
"isValid": true,
"solids": 1,
"faces": 6,
"edges": 12,
"vertices": 8,
"volume": 30,
"area": 62,
"boundingBox": {
"min": [
-1e-7,
-1e-7,
-1e-7
],
"max": [
2.0000001,
3.0000001,
5.0000001
]
}
}
},
"workerDisposed": true
}

View File

@@ -0,0 +1,75 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 18,
"relations": {
"modified": 1,
"generated": 17,
"deleted": 0
},
"sourceObjects": [
"Profile",
"Spine"
]
},
"result": {
"bitbybitStructuralValid": false,
"bitbybitSolids": 1,
"bitbybitVolume": 20.000000000000004
},
"opfs": {
"markerPayload": {
"operation": "pipe",
"profiles": 1,
"spineEdges": 1
},
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 42,
"sourceObjects": [
"Base",
"Profile",
"chrome-native-pocket-history:native-stage:0:result"
],
"relations": {
"modified": 21,
"generated": 0,
"deleted": 21
},
"stages": [
{
"stageId": "chrome-native-pocket-history:native-stage:0",
"operation": "pad",
"inputObjectIds": [
"Profile"
],
"resultObjectId": "chrome-native-pocket-history:native-stage:0:result",
"ordinal": 0,
"topologyEntries": 26,
"recordCount": 25
},
{
"stageId": "chrome-native-pocket-history:native-stage:1",
"operation": "cut",
"inputObjectIds": [
"Base",
"chrome-native-pocket-history:native-stage:0:result"
],
"resultObjectId": "chrome-native-pocket-history:native-stage:1:result",
"ordinal": 1,
"topologyEntries": 44,
"recordCount": 42
}
]
},
"twoSidedHistory": {
"recordCount": 20,
"structuralValid": true,
"solids": 1,
"sourceObjects": [
"BaseTwoSided",
"Profile",
"chrome-native-pocket-two-sided-history:native-stage:0:result",
"chrome-native-pocket-two-sided-history:native-stage:1:result",
"chrome-native-pocket-two-sided-history:native-stage:2:result"
],
"stages": [
{
"stageId": "chrome-native-pocket-two-sided-history:native-stage:0",
"operation": "pad",
"inputObjectIds": [
"Profile"
],
"resultObjectId": "chrome-native-pocket-two-sided-history:native-stage:0:result",
"ordinal": 0,
"topologyEntries": 26,
"recordCount": 25
},
{
"stageId": "chrome-native-pocket-two-sided-history:native-stage:1",
"operation": "pad",
"inputObjectIds": [
"Profile"
],
"resultObjectId": "chrome-native-pocket-two-sided-history:native-stage:1:result",
"ordinal": 1,
"topologyEntries": 26,
"recordCount": 25
},
{
"stageId": "chrome-native-pocket-two-sided-history:native-stage:2",
"operation": "fuse",
"inputObjectIds": [
"chrome-native-pocket-two-sided-history:native-stage:0:result",
"chrome-native-pocket-two-sided-history:native-stage:1:result"
],
"resultObjectId": "chrome-native-pocket-two-sided-history:native-stage:2:result",
"ordinal": 2,
"topologyEntries": 42,
"recordCount": 90
},
{
"stageId": "chrome-native-pocket-two-sided-history:native-stage:3",
"operation": "cut",
"inputObjectIds": [
"BaseTwoSided",
"chrome-native-pocket-two-sided-history:native-stage:2:result"
],
"resultObjectId": "PocketTwoSided",
"ordinal": 3,
"topologyEntries": 66,
"recordCount": 20
}
]
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,73 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 68,
"relations": {
"modified": 68,
"generated": 0,
"deleted": 0
},
"sourceObjects": [
"Base"
]
},
"result": {
"bitbybitStructuralValid": false,
"bitbybitSolids": 1,
"bitbybitVolume": 3,
"nativeStructuralValid": true,
"nativeSolids": 1,
"nativeVolume": 3.0000000000000004
},
"opfs": {
"markerSuite": "polar-pattern",
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,132 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 23,
"crossKindRecords": 10,
"relations": {
"modified": 10,
"generated": 10,
"deleted": 3
}
},
"twoSidedHistory": {
"recordCount": 25,
"structuralValid": true,
"graphStructuralValid": false,
"graphStructuralErrors": 4,
"graphStructuralWarnings": 0,
"graphStructuralIssues": [
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 16
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 17
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 18
},
"description": "CoEdgeDef has no Curve2D representation"
},
{
"severity": "error",
"node": {
"kind": "coedge",
"index": 19
},
"description": "CoEdgeDef has no Curve2D representation"
}
],
"unexplainedStructuralErrors": 0,
"solids": 1,
"volume": 37.69911184307333,
"stages": [
{
"stageId": "chrome-native-revolution-two-sided-history:native-stage:0",
"operation": "rotate",
"inputObjectIds": [
"Profile"
],
"resultObjectId": "chrome-native-revolution-two-sided-history:native-stage:0:result",
"ordinal": 0,
"topologyEntries": 9,
"recordCount": 13
},
{
"stageId": "chrome-native-revolution-two-sided-history:native-stage:1",
"operation": "revolution",
"inputObjectIds": [
"chrome-native-revolution-two-sided-history:native-stage:0:result"
],
"resultObjectId": "RevolutionTwoSided",
"ordinal": 1,
"topologyEntries": 26,
"recordCount": 25
}
]
},
"result": {
"structuralValid": true,
"solids": 1,
"volume": 75.39822368615503
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,75 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"executionContext": "geometry-and-history-workers",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"nativeCapabilities": {
"providerId": "occt-native.history-step",
"providerVersion": "8.0.0-embind",
"occtVersion": "8.0.0",
"availability": "available",
"operations": [
"fuse",
"cut",
"common",
"rotate",
"pad",
"pocket",
"loft",
"pipe",
"revolution",
"groove",
"fillet",
"chamfer",
"hole",
"draft",
"thickness",
"linear-pattern",
"polar-pattern",
"mirrored",
"multi-transform"
],
"transport": "step-text"
},
"history": {
"recordCount": 38,
"relations": {
"modified": 1,
"generated": 37,
"deleted": 0
},
"sourceObjects": [
"Base"
]
},
"result": {
"bitbybitStructuralValid": false,
"bitbybitSolids": 1,
"bitbybitVolume": 64.57600000000002,
"nativeStructuralValid": true,
"nativeSolids": 1,
"nativeVolume": 64.57600000000002
},
"opfs": {
"markerCreated": true,
"markerSuite": "thickness",
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,34 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"serviceWorker": {
"registered": true,
"controlled": true,
"shellCached": true,
"staleCacheRemoved": true,
"offlineFallback": true,
"cacheNames": [
"bitbybit-cad-shell-v1"
]
},
"persistence": {
"mode": "sqlite-opfs",
"bytes": 80,
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "REL-01",
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,36 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"migration": {
"sourceSchemaVersion": 1,
"migratedSchemaVersion": 6,
"migratedDocumentVersion": 3,
"migratedLabel": "Legacy OPFS project",
"migratedObjectCount": 1,
"recomputeDefaulted": true,
"reopenedSchemaVersion": 6,
"reopenedVersion": 4,
"reopenedLabel": "Migrated OPFS project",
"checkpointVersion": 4,
"recoveryIntegrity": "ok",
"reopenedRecoveryIntegrity": "ok",
"resourceRoundTrip": true,
"resourceReleased": true
},
"rollback": {
"rejected": true,
"interruptedAfterMarker": true,
"error": "Injected migration interruption after schema version 3.",
"appliedVersionsAfterFailure": [
1
]
},
"cleanup": {
"databasePath": "/bitbybit-rel02-301b6b76-9ab6-44ef-bf40-f2e6052e58ae.sqlite3",
"removedFiles": [
"bitbybit-rel02-301b6b76-9ab6-44ef-bf40-f2e6052e58ae.sqlite3"
]
}
}

View File

@@ -0,0 +1,54 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"operations": [
{
"name": "ellipsoid",
"meshVertices": 603,
"meshTriangles": 1170,
"volume": 100.48699804303837
},
{
"name": "torus",
"meshVertices": 972,
"meshTriangles": 1820,
"volume": 98.69604401089352
},
{
"name": "prism",
"meshVertices": 36,
"meshTriangles": 20,
"volume": 41.569219381653056
},
{
"name": "wedge",
"meshVertices": 24,
"meshTriangles": 12,
"volume": 120
},
{
"name": "helix",
"meshVertices": 0,
"meshTriangles": 0,
"length": 25.839014719433763
}
],
"beforeRelease": {
"shapeCount": 5,
"kernelReferenceCount": 5
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"opfs": {
"markerSuite": "PART-ALL",
"markerOperations": 5,
"markerRemoved": true
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,93 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"structural": {
"initialOrder": [
"sketch",
"pad",
"pocket",
"fillet"
],
"restoredOrder": [
"sketch",
"pad",
"pocket",
"fillet"
],
"reorderRejected": true,
"dependencyRemovalRejected": true,
"deleted": {
"removed": [
"fillet"
],
"tip": "pocket",
"filletExists": false
},
"deletionUndone": {
"tip": "fillet",
"filletExists": true
},
"deletionRedone": {
"tip": "pocket",
"filletExists": false
},
"restoredTip": "fillet"
},
"initial": {
"length": 42,
"tip": "pad",
"support": "XY_Plane",
"pocketSuppressed": true,
"filletSuppressed": true,
"shapeId": "shape-msi74mj9-1",
"volume": 504,
"solids": 1,
"structuralValid": false
},
"edited": {
"length": 31,
"tip": "pad",
"support": "XY_Plane",
"recompute": "completed",
"shapeCount": 1,
"kernelReferenceCount": 1,
"shapeId": "shape-msi74ml0-2",
"volume": 372,
"solids": 1,
"structuralValid": false
},
"undone": {
"length": 42,
"tip": "pad",
"support": "XY_Plane",
"recompute": "completed",
"shapeCount": 1,
"kernelReferenceCount": 1,
"shapeId": "shape-msi74mln-3",
"volume": 504,
"solids": 1,
"structuralValid": false
},
"reopened": {
"length": 42,
"tip": "pad",
"support": "XY_Plane",
"pocketSuppressed": true,
"filletSuppressed": true,
"persistedLength": 42,
"savedVersion": 24,
"activeVersion": 24,
"recompute": "completed",
"persistenceMode": "sqlite-opfs",
"shapeId": "shape-msi74moe-5",
"volume": 504,
"solids": 1,
"structuralValid": false
},
"released": {
"shapeCount": 0,
"kernelReferenceCount": 0
}
}

View File

@@ -0,0 +1,118 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"operations": [
{
"command": "additive-loft",
"objectId": "additive-loft",
"typeId": "PartDesign::AdditiveLoft",
"recompute": "completed",
"base": "pad",
"profile": "sketch",
"sections": [
"sketch001"
],
"spine": null,
"transition": null,
"tip": "additive-loft",
"shapeId": "shape-msi3obcr-2",
"volume": 504
},
{
"command": "additive-pipe",
"objectId": "additive-pipe",
"typeId": "PartDesign::AdditivePipe",
"recompute": "completed",
"base": "additive-loft",
"profile": "sketch003",
"sections": null,
"spine": {
"schemaVersion": 1,
"objectId": "sketch002",
"subElements": []
},
"transition": "Transformed",
"tip": "additive-pipe",
"shapeId": "shape-msi3obgk-4",
"volume": 524
},
{
"command": "subtractive-loft",
"objectId": "subtractive-loft",
"typeId": "PartDesign::SubtractiveLoft",
"recompute": "completed",
"base": "additive-pipe",
"profile": "sketch004",
"sections": [
"sketch005"
],
"spine": null,
"transition": null,
"tip": "subtractive-loft",
"shapeId": "shape-msi3obk0-5",
"volume": 512.0000000000001
},
{
"command": "subtractive-pipe",
"objectId": "subtractive-pipe",
"typeId": "PartDesign::SubtractivePipe",
"recompute": "completed",
"base": "subtractive-loft",
"profile": "sketch006",
"sections": null,
"spine": {
"schemaVersion": 1,
"objectId": "sketch007",
"subElements": []
},
"transition": "Transformed",
"tip": "subtractive-pipe",
"shapeId": "shape-msi3obnp-6",
"volume": 511.0000000000001
}
],
"failureRecovery": {
"loft": {
"status": "failed",
"code": "LOFT_SECTIONS_DUPLICATE",
"retainedShapeId": "shape-msi3obcr-2",
"previousShapeId": "shape-msi3obcr-2",
"restoredStatus": "completed",
"restoredShapeId": "shape-msi3obdt-3"
},
"pipe": {
"status": "failed",
"code": "PIPE_PATH_BRANCH",
"retainedShapeId": "shape-msi3obnp-6",
"previousShapeId": "shape-msi3obnp-6",
"restoredStatus": "completed",
"restoredShapeId": "shape-msi3obq6-7"
}
},
"persistence": {
"mode": "sqlite-opfs",
"savedVersion": 70,
"reopenedVersion": 70,
"objectCount": 19,
"reopenedTip": "subtractive-pipe"
},
"opfs": {
"markerSuite": "PD-LOFT",
"markerOperations": 4,
"markerRemoved": true
},
"beforeRelease": {
"shapeCount": 5,
"kernelReferenceCount": 5
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,337 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"operations": [
{
"command": "hole",
"objectId": "hole",
"typeId": "PartDesign::Hole",
"base": "pad",
"tip": "hole",
"recompute": "completed",
"shapeCount": 2,
"kernelReferenceCount": 2,
"shapeId": "shape-msi6khll-3",
"volume": 497.71681469282044,
"solids": 1,
"structuralValid": false,
"threaded": false,
"modelThread": false,
"threadType": "None",
"threadSize": "M6x1.0",
"threadDirection": "Right"
},
{
"command": "fillet",
"objectId": "fillet001",
"typeId": "PartDesign::Fillet",
"base": {
"schemaVersion": 1,
"objectId": "hole",
"kind": "edge",
"persistentId": "topo-edge-c5080c7f512c3757",
"topologyVersion": 25,
"generation": 2,
"status": "new",
"signature": "edge|curve=line|length=800|range=|adjacent=plane,plane,plane|degenerated=0"
},
"tip": "fillet001",
"recompute": "completed",
"shapeCount": 3,
"kernelReferenceCount": 3,
"shapeId": "shape-msi6khor-4",
"volume": 497.5808989123684,
"solids": 1,
"structuralValid": false
},
{
"command": "chamfer",
"objectId": "chamfer",
"typeId": "PartDesign::Chamfer",
"base": {
"schemaVersion": 1,
"objectId": "hole",
"kind": "edge",
"persistentId": "topo-edge-1190dbb2fa02bb4d",
"topologyVersion": 25,
"generation": 2,
"status": "new",
"signature": "edge|curve=line|length=800|range=|adjacent=plane,plane|degenerated=0"
},
"tip": "chamfer",
"recompute": "completed",
"shapeCount": 4,
"kernelReferenceCount": 4,
"shapeId": "shape-msi6khqq-5",
"volume": 497.5368146928205,
"solids": 1,
"structuralValid": false
},
{
"command": "draft",
"objectId": "draft",
"typeId": "PartDesign::Draft",
"base": {
"schemaVersion": 1,
"objectId": "hole",
"kind": "face",
"persistentId": "topo-face-154d54dd4cc87e90",
"topologyVersion": 25,
"generation": 2,
"status": "new",
"signature": "face|surface=cylinder|area=5027|adjacent=2|edges=3|wires=0|natural=0"
},
"tip": "draft",
"recompute": "completed",
"shapeCount": 5,
"kernelReferenceCount": 5,
"shapeId": "shape-msi6khs1-7",
"volume": 484.8175441487494,
"solids": 1,
"structuralValid": false
},
{
"command": "thickness",
"objectId": "thickness",
"typeId": "PartDesign::Thickness",
"base": "hole",
"tip": "thickness",
"recompute": "completed",
"shapeCount": 6,
"kernelReferenceCount": 6,
"shapeId": "shape-msi6khue-9",
"volume": 505.16706481222076,
"solids": 1,
"structuralValid": false
},
{
"command": "hole",
"objectId": "hole001",
"typeId": "PartDesign::Hole",
"base": "hole",
"tip": "hole001",
"recompute": "completed",
"shapeCount": 7,
"kernelReferenceCount": 7,
"shapeId": "shape-msi6ki2i-j",
"volume": 363.66427233552065,
"solids": 1,
"structuralValid": false,
"threaded": true,
"modelThread": false,
"threadType": "ISOMetricProfile",
"threadSize": "M1x0.25",
"threadDirection": "Right"
},
{
"command": "hole",
"objectId": "hole002",
"typeId": "PartDesign::Hole",
"base": "hole001",
"tip": "hole002",
"recompute": "completed",
"shapeCount": 8,
"kernelReferenceCount": 8,
"shapeId": "shape-msi6kjlh-m",
"volume": 347.12633973440813,
"solids": 1,
"structuralValid": false,
"threaded": true,
"modelThread": true,
"threadType": "ISOMetricProfile",
"threadSize": "M2x0.4",
"threadDirection": "Left"
},
{
"command": "linear-pattern",
"objectId": "linear-pattern",
"typeId": "PartDesign::LinearPattern",
"base": "hole001",
"tip": "linear-pattern",
"recompute": "completed",
"shapeCount": 9,
"kernelReferenceCount": 9,
"shapeId": "shape-msi6kk24-p",
"volume": 357.3810870283411,
"solids": 1,
"structuralValid": false,
"transformMode": "Features",
"originals": [
"hole"
]
},
{
"command": "mirrored",
"objectId": "mirrored",
"typeId": "PartDesign::Mirrored",
"base": "linear-pattern",
"tip": "mirrored",
"recompute": "completed",
"shapeCount": 10,
"kernelReferenceCount": 10,
"shapeId": "shape-msi6kk4j-s",
"volume": 354.26859542168523,
"solids": 1,
"structuralValid": false,
"transformMode": "Features",
"originals": [
"hole"
]
},
{
"command": "mirrored",
"objectId": "mirrored001",
"typeId": "PartDesign::Mirrored",
"base": "mirrored",
"tip": "mirrored001",
"recompute": "completed",
"shapeCount": 11,
"kernelReferenceCount": 11,
"shapeId": "shape-msi6kk61-t",
"volume": 354.26859542168523,
"solids": 1,
"structuralValid": false,
"transformMode": "Whole shape",
"originals": []
},
{
"command": "linear-pattern",
"objectId": "linear-pattern001",
"typeId": "PartDesign::LinearPattern",
"base": "mirrored001",
"tip": "linear-pattern001",
"recompute": "completed",
"shapeCount": 12,
"kernelReferenceCount": 12,
"shapeId": "shape-msi6kkk8-w",
"volume": 547.6164162707034,
"solids": 1,
"structuralValid": false,
"transformMode": "Whole shape",
"originals": []
},
{
"command": "polar-pattern",
"objectId": "polar-pattern",
"typeId": "PartDesign::PolarPattern",
"base": "linear-pattern001",
"tip": "polar-pattern",
"recompute": "completed",
"shapeCount": 13,
"kernelReferenceCount": 13,
"shapeId": "shape-msi6kl0z-z",
"volume": 1351.4339505434775,
"solids": 1,
"structuralValid": false,
"transformMode": "Whole shape",
"originals": []
},
{
"command": "multi-transform",
"objectId": "multi-transform",
"typeId": "PartDesign::MultiTransform",
"base": "polar-pattern",
"tip": "multi-transform",
"recompute": "completed",
"shapeCount": 14,
"kernelReferenceCount": 14,
"shapeId": "shape-msi6kmxn-13",
"volume": 2031.0345622237955,
"solids": 1,
"structuralValid": false,
"transformMode": "Whole shape",
"originals": []
},
{
"command": "hole",
"objectId": "hole003",
"typeId": "PartDesign::Hole",
"base": "multi-transform",
"tip": "hole003",
"recompute": "completed",
"shapeCount": 15,
"kernelReferenceCount": 15,
"shapeId": "shape-msi6kn10-17",
"volume": 1996.182518723034,
"solids": 1,
"structuralValid": false,
"threaded": false,
"modelThread": false,
"threadType": "None",
"threadSize": "M6x1.0",
"threadDirection": "Right"
}
],
"ambiguityRecovery": {
"command": "fillet",
"status": "failed",
"code": "DRESSUP_EDGE_REFERENCE_UNRESOLVED",
"retainedShapeId": "shape-msi6khor-4",
"previousShapeId": "shape-msi6khor-4",
"restoredStatus": "completed",
"restoredShapeId": "shape-msi6khvg-a"
},
"topologyMigration": {
"editedPadLength": 31,
"migrated": [
{
"command": "fillet",
"objectId": "hole",
"kind": "edge",
"status": "ambiguous",
"persistentId": "topo-edge-c5080c7f512c3757"
},
{
"command": "chamfer",
"objectId": "hole",
"kind": "edge",
"status": "ambiguous",
"persistentId": "topo-edge-1190dbb2fa02bb4d"
},
{
"command": "draft",
"objectId": "hole",
"kind": "face",
"status": "stable",
"persistentId": "topo-face-154d54dd4cc87e90"
},
{
"command": "thickness",
"objectId": "hole",
"kind": "face",
"status": "ambiguous",
"persistentId": "topo-face-82a09f740c619c10"
}
],
"stable": 1,
"ambiguous": 3,
"ambiguityDiagnostics": 3,
"wrongBindings": 0
},
"persistence": {
"mode": "sqlite-opfs",
"savedVersion": 41,
"reopenedVersion": 41,
"reopenedTip": "hole003",
"objectCount": 21
},
"opfs": {
"markerSuite": "PD-TRANSFORM",
"markerOperations": 14,
"markerRemoved": true
},
"beforeRelease": {
"shapeCount": 12,
"kernelReferenceCount": 12
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,35 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"benchmark": {
"objects": 1000,
"triangles": 1000000,
"tableCells": 100000,
"objectMs": 0.26999998092651367,
"triangleMs": 3.1500000953674316,
"tableMs": 1.0499999523162842,
"heapBytes": 34939773,
"pass": true
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 408,
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "QA-05",
"triangles": 1000000,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,22 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"mode": "sqlite-opfs",
"sqliteWasm": true,
"opfs": true,
"schemaVersion": 6,
"crossTabWriteLock": "web-locks"
},
"roundTrip": {
"savedMode": "sqlite-opfs",
"loadedVersion": 7,
"loadedLabel": "Chrome OPFS persistence",
"checkpointVersion": 7,
"resourceRoundTrip": true,
"recoveryIntegrity": "ok",
"checkpointCount": 1
}
}

View File

@@ -0,0 +1,757 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"executionContext": "dedicated-worker",
"crossOriginIsolated": true,
"sharedArrayBuffer": true,
"status": "pass",
"solve": {
"solveStatus": 0,
"startX": 0,
"startY": 0,
"endX": 5,
"endY": 0,
"residual": 0
},
"verticalSolve": {
"solveStatus": 0,
"startX": 0,
"startY": 0,
"endX": 0,
"endY": 5,
"residual": 0
},
"distanceXSolve": {
"solveStatus": 0,
"startX": 0,
"startY": 0,
"endX": 6,
"endY": 0,
"residual": 0
},
"distanceYSolve": {
"solveStatus": 0,
"startX": 0,
"startY": 0,
"endX": 0,
"endY": 6,
"residual": 0
},
"angleSolve": {
"solveStatus": 0,
"startX": 0,
"startY": 0,
"endX": 3.5355339059327666,
"endY": 3.535533905932768,
"lengthResidual": 4.1744385725905886e-14,
"residual": 2.220446049250313e-16,
"targetAngle": 0.7853981633974483
},
"circleRadiusSolve": {
"solveStatus": 0,
"centerX": 2,
"centerY": 3,
"radius": 4,
"residual": 0
},
"circleDiameterSolve": {
"solveStatus": 0,
"centerX": 2,
"centerY": 3,
"radius": 4,
"residual": 0
},
"equalLinesSolve": {
"solveStatus": 0,
"firstStartX": 0,
"firstStartY": 0,
"firstEndX": 4,
"firstEndY": 0,
"secondStartX": 0,
"secondStartY": 2,
"secondEndX": 2.8550078532679066,
"secondEndY": 4.801594217187551,
"residual": 1.865174681370263e-14
},
"equalCirclesSolve": {
"solveStatus": 0,
"firstCenterX": 2,
"firstCenterY": 3,
"firstRadius": 4,
"secondCenterX": 8,
"secondCenterY": 9,
"secondRadius": 4,
"residual": 0
},
"tangentCirclesSolve": {
"solveStatus": 0,
"firstCenterX": 2,
"firstCenterY": 3,
"firstRadius": 4,
"secondCenterX": 10,
"secondCenterY": 3,
"secondRadius": 4.000000000000001,
"residual": -8.881784197001252e-16
},
"pointSymmetrySolve": {
"solveStatus": 0,
"firstX": 1,
"firstY": 2,
"secondX": 7.000000000002508,
"secondY": 9.99999999999955,
"centerX": 4,
"centerY": 6,
"residual": 1.2740804112383381e-12
},
"pointOnLineSolve": {
"solveStatus": 0,
"pointX": 2,
"pointY": 0,
"startX": 0,
"startY": 0,
"endX": 4,
"endY": 0,
"residual": 0
},
"pointOnCircleSolve": {
"solveStatus": 0,
"pointX": 4,
"pointY": 6.464101615137755,
"centerX": 2,
"centerY": 3,
"radius": 4,
"residual": 0
},
"pointOnArcSolve": {
"solveStatus": 0,
"pointX": 2,
"pointY": 7,
"centerX": 2,
"centerY": 3,
"radius": 4,
"startAngle": 0,
"endAngle": 3.141592653589793,
"residual": 0
},
"pointOnEllipseSolve": {
"solveStatus": 0,
"pointX": 2,
"pointY": 6.000000000037419,
"centerX": 2,
"centerY": 3,
"focusX": 6,
"focusY": 3,
"minorRadius": 3,
"residual": 4.490274818635953e-11
},
"pointOnBsplineSolve": {
"solveStatus": 0,
"pointX": 2,
"pointY": 1.500000000000298,
"pointParameter": 0.5,
"residualX": 0,
"residualY": 2.97983859809392e-13
},
"bsplineWeightSolve": {
"solveStatus": 0,
"weights": [
1,
1.5,
1.25,
1
],
"helper": {
"center": {
"x": 1,
"y": 2
},
"radius": 1.5
},
"alignmentResidual": 0,
"residual": 0
},
"parallelSolve": {
"solveStatus": 0,
"firstStartX": 0,
"firstStartY": 0,
"firstEndX": 4,
"firstEndY": 0,
"secondStartX": 0,
"secondStartY": 2,
"secondEndX": 5,
"secondEndY": 2,
"residual": 0
},
"perpendicularSolve": {
"solveStatus": 0,
"firstStartX": 0,
"firstStartY": 0,
"firstEndX": 4,
"firstEndY": 0,
"secondStartX": 0,
"secondStartY": 2,
"secondEndX": 0,
"secondEndY": 7,
"residual": 0
},
"coincidentSolve": {
"solveStatus": 0,
"firstEndX": 4,
"firstEndY": 0,
"secondStartX": 4,
"secondStartY": 0,
"residual": 0
},
"coincidentEndpointSolves": [
{
"firstPoint": "start",
"secondPoint": "start",
"solveStatus": 0,
"first": {
"x": 0,
"y": 0
},
"second": {
"x": 0,
"y": 0
},
"secondLength": 5.000000000000613,
"residual": 0
},
{
"firstPoint": "start",
"secondPoint": "end",
"solveStatus": 0,
"first": {
"x": 0,
"y": 0
},
"second": {
"x": 0,
"y": 0
},
"secondLength": 5,
"residual": 0
},
{
"firstPoint": "end",
"secondPoint": "start",
"solveStatus": 0,
"first": {
"x": 4,
"y": 0
},
"second": {
"x": 4,
"y": 0
},
"secondLength": 5.000000000000001,
"residual": 0
},
{
"firstPoint": "end",
"secondPoint": "end",
"solveStatus": 0,
"first": {
"x": 4,
"y": 0
},
"second": {
"x": 4,
"y": 0
},
"secondLength": 5,
"residual": 0
}
],
"coincidentEndpointProviders": [
{
"firstPoint": "start",
"secondPoint": "start",
"completed": "completed",
"first": {
"x": 0,
"y": 0
},
"second": {
"x": 0,
"y": 0
},
"secondLength": 5.000000000000613
},
{
"firstPoint": "start",
"secondPoint": "end",
"completed": "completed",
"first": {
"x": 0,
"y": 0
},
"second": {
"x": 0,
"y": 0
},
"secondLength": 5
},
{
"firstPoint": "end",
"secondPoint": "start",
"completed": "completed",
"first": {
"x": 4,
"y": 0
},
"second": {
"x": 4,
"y": 0
},
"secondLength": 5.000000000000001
},
{
"firstPoint": "end",
"secondPoint": "end",
"completed": "completed",
"first": {
"x": 4,
"y": 0
},
"second": {
"x": 4,
"y": 0
},
"secondLength": 5
}
],
"snellsLawSolve": {
"solveStatus": 0,
"firstStart": {
"x": 0,
"y": 0
},
"firstEnd": {
"x": -4,
"y": 4
},
"secondStart": {
"x": 0,
"y": 0
},
"secondEnd": {
"x": 2.3570226039551594,
"y": 4.409585518440984
},
"boundaryStart": {
"x": -5,
"y": 0
},
"boundaryEnd": {
"x": 5,
"y": 0
},
"ratio": 1.5,
"residual": -4.440892098500626e-16
},
"snellsLawProvider": {
"completed": "completed",
"degreesOfFreedom": 8,
"residual": 4.440892098500626e-16,
"first": {
"start": {
"x": 0,
"y": 0
},
"end": {
"x": -4,
"y": 4
}
},
"second": {
"start": {
"x": 0,
"y": 0
},
"end": {
"x": 2.3570226039551594,
"y": 4.409585518440984
}
},
"boundary": {
"start": {
"x": -5,
"y": 0
},
"end": {
"x": 5,
"y": 0
}
}
},
"ellipseInternalAlignmentSolves": [
{
"alignmentType": 1,
"solveStatus": 0,
"center": {
"x": 2,
"y": 3
},
"focus": {
"x": 5.8756496868425785,
"y": 3.989615837018092
},
"minorRadius": 3,
"helperStart": {
"x": 6.844562108553224,
"y": 4.237019796272614
},
"helperEnd": {
"x": -2.844562108553224,
"y": 1.7629802037273854
},
"helperError": 0,
"residual": 7.771561172376096e-16
},
{
"alignmentType": 2,
"solveStatus": 0,
"center": {
"x": 2,
"y": 3
},
"focus": {
"x": 5.8756496868425785,
"y": 3.989615837018092
},
"minorRadius": 3,
"helperStart": {
"x": 1.2577881222364313,
"y": 5.906737265131934
},
"helperEnd": {
"x": 2.7422118777635687,
"y": 0.09326273486806569
},
"helperError": 0,
"residual": 5.874748045952207e-16
},
{
"alignmentType": 3,
"solveStatus": 0,
"center": {
"x": 2,
"y": 3
},
"focus": {
"x": 5.8756496868425785,
"y": 3.989615837018092
},
"minorRadius": 3,
"helperStart": {
"x": 5.8756496868425785,
"y": 3.989615837018092
},
"helperEnd": {
"x": 5.8756496868425785,
"y": 3.989615837018092
},
"helperError": 0,
"residual": 0
},
{
"alignmentType": 4,
"solveStatus": 0,
"center": {
"x": 2,
"y": 3
},
"focus": {
"x": 5.8756496868425785,
"y": 3.989615837018092
},
"minorRadius": 3,
"helperStart": {
"x": -1.875649686842579,
"y": 2.010384162981908
},
"helperEnd": {
"x": -1.875649686842579,
"y": 2.010384162981908
},
"helperError": 0,
"residual": 3.1401849173675503e-16
}
],
"ellipseInternalAlignmentProvider": {
"completed": "completed",
"degreesOfFreedom": 5,
"residual": 7.771561172376096e-16,
"ellipse": {
"center": {
"x": 2,
"y": 3
},
"majorRadius": 5,
"minorRadius": 3,
"rotation": 0.25
}
},
"bsplineWeightProvider": {
"completed": "completed",
"degreesOfFreedom": 11,
"residual": 0,
"bspline": {
"degree": 3,
"controlPoints": [
{
"x": 0,
"y": 0
},
{
"x": 1,
"y": 2
},
{
"x": 3,
"y": 2
},
{
"x": 4,
"y": 0
}
],
"weights": [
1,
1.5,
1.25,
1
],
"knots": [
0,
0,
0,
0,
1,
1,
1,
1
],
"periodic": false
}
},
"pointOnCircleProvider": {
"completed": "completed",
"point": {
"x": 4,
"y": 6.464101615137755
}
},
"pointOnArcProvider": {
"completed": "completed",
"point": {
"x": 2,
"y": 7
},
"arc": {
"center": {
"x": 2,
"y": 3
},
"radius": 4,
"startAngle": 0,
"endAngle": 3.141592653589793
}
},
"pointOnEllipseProvider": {
"completed": "completed",
"point": {
"x": 2,
"y": 6.000000000037419
},
"ellipse": {
"center": {
"x": 2,
"y": 3
},
"majorRadius": 5,
"minorRadius": 3,
"rotation": 0
}
},
"pointOnBsplineProvider": {
"completed": "completed",
"point": {
"x": 2,
"y": 1.5
},
"bspline": {
"degree": 3,
"controlPoints": [
{
"x": 0,
"y": 0
},
{
"x": 1,
"y": 2
},
{
"x": 3,
"y": 2
},
{
"x": 4,
"y": 0
}
],
"weights": [
1,
1,
1,
1
],
"knots": [
0,
0,
0,
0,
1,
1,
1,
1
],
"periodic": false
}
},
"blockProvider": {
"completed": "completed",
"degreesOfFreedom": 0,
"line": {
"start": {
"x": 1,
"y": 2
},
"end": {
"x": 4,
"y": 6
}
}
},
"providerLifecycle": {
"availability": "available",
"engine": "planegcs-wasm",
"supportedGeometry": [
"point",
"line",
"circle",
"arc",
"ellipse",
"bspline"
],
"supportedConstraints": [
"horizontal",
"vertical",
"parallel",
"perpendicular",
"distance",
"distanceX",
"distanceY",
"angle",
"radius",
"diameter",
"equal",
"tangent",
"coincident",
"symmetric",
"pointOnObject",
"snellsLaw",
"internalAlignment",
"weight",
"block"
],
"completed": "completed",
"verticalCompleted": "completed",
"verticalEnd": {
"x": 0,
"y": 5
},
"angleCompleted": "completed",
"angleEnd": {
"x": 3.5355339059327666,
"y": 3.535533905932768
},
"circleRadiusCompleted": "completed",
"circleRadius": {
"center": {
"x": 2,
"y": 3
},
"radius": 4
},
"circleDiameterCompleted": "completed",
"circleDiameter": {
"center": {
"x": 2,
"y": 3
},
"radius": 4
},
"equalLinesCompleted": "completed",
"equalLinesSecond": {
"start": {
"x": 0,
"y": 2
},
"end": {
"x": 2.8550078532679066,
"y": 4.801594217187551
}
},
"equalCirclesCompleted": "completed",
"equalCirclesSecond": {
"center": {
"x": 8,
"y": 9
},
"radius": 4
},
"tangentCirclesCompleted": "completed",
"tangentCirclesSecond": {
"center": {
"x": 10,
"y": 3
},
"radius": 4.000000000000001
},
"pointSymmetryCompleted": "completed",
"pointSymmetrySecond": {
"x": 7.000000000002508,
"y": 9.99999999999955
},
"pointOnLineCompleted": "completed",
"pointOnLinePoint": {
"x": 2,
"y": 0
},
"parallelCompleted": "completed",
"parallelEnd": {
"x": 5,
"y": 2
},
"perpendicularCompleted": "completed",
"perpendicularEnd": {
"x": 0,
"y": 7
},
"coincidentCompleted": "completed",
"coincidentStart": {
"x": 4,
"y": 0
},
"cancelled": "cancelled",
"recovered": "completed",
"stale": "stale",
"recoveredEnd": {
"x": 5,
"y": 0
}
}
}

View File

@@ -0,0 +1,87 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"series": {
"count": 2,
"boundSource": "Spreadsheet",
"points": 3,
"updatedValue": 16,
"legend": true
},
"axes": {
"x": "Revision",
"y": "Length (mm)",
"xRange": [
0,
2
],
"yRange": [
0,
20
]
},
"logAxis": {
"xScale": "log",
"yScale": "log",
"svgHasLogMapping": true,
"rejectedNonPositive": true
},
"svg": {
"bytes": 1075,
"sha256": "29c4de596904c4048fdaf524b099eb0cbc1ba49c10a77d65d5d882d23638ceff",
"deterministic": true,
"paths": 2,
"accessible": true
},
"png": {
"bytes": 19408,
"sha256": "281e93a2acd75a0dd902cdcd52bb088094a05237ac15296462ca06936a956443",
"deterministic": true,
"width": 640,
"height": 360,
"validSignature": true
},
"csv": {
"bytes": 156,
"rows": 7,
"sha256": "5879d47bdda947b5432ef38a03a6e8299cdb4e90cfea0370e398833a9c01244a"
},
"resources": [
{
"mediaType": "image/svg+xml",
"hash": "29c4de596904c4048fdaf524b099eb0cbc1ba49c10a77d65d5d882d23638ceff",
"byteLength": 1075,
"roundTrip": true,
"released": true
},
{
"mediaType": "text/csv",
"hash": "5879d47bdda947b5432ef38a03a6e8299cdb4e90cfea0370e398833a9c01244a",
"byteLength": 156,
"roundTrip": true,
"released": true
},
{
"mediaType": "image/png",
"hash": "281e93a2acd75a0dd902cdcd52bb088094a05237ac15296462ca06936a956443",
"byteLength": 19408,
"roundTrip": true,
"released": true
}
],
"opfs": {
"markerSuite": "PLOT-ALL",
"markerSeries": 2,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,64 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"closure": {
"complete": true,
"artifacts": 4,
"missingKinds": 0,
"missingDependencies": 0,
"cycles": 0,
"documentVersion": 8,
"reopenedComplete": true,
"artifactVersions": [
2,
2,
2,
2
]
},
"workflow": {
"created": {
"spreadsheetCells": 2,
"draftObjects": 1,
"techdrawViews": 1,
"plotSeries": 1
},
"edited": {
"spreadsheetValue": 6,
"draftStartX": 1,
"techdrawDimension": 5,
"plotValue": 6
},
"exports": {
"spreadsheetCsvBytes": 31,
"draftJsonBytes": 384,
"techdrawSvgBytes": 509,
"techdrawPdfBytes": 849,
"techdrawPdfValid": true,
"plotSvgBytes": 774,
"plotCsvBytes": 52
}
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 8568,
"hash": "81ab5272815a42162a7f977bae74a0cefc2d1e23195865ac810eceb81bd71c30",
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "DOC-CLOSURE",
"artifacts": 4,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,122 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"fixtures": {
"closed": {
"status": "closed",
"ringCount": 1,
"selfIntersections": 0
},
"open": {
"status": "open",
"ringCount": 1,
"selfIntersections": 0
},
"multiRing": {
"status": "multi-ring",
"ringCount": 2,
"selfIntersections": 0
},
"selfIntersecting": {
"status": "self-intersecting",
"ringCount": 1,
"selfIntersections": 1
},
"invalidNesting": {
"status": "invalid-nesting",
"ringCount": 2,
"selfIntersections": 0
},
"nonPlanar": {
"status": "non-planar",
"ringCount": 1,
"selfIntersections": 0
},
"degenerate": {
"status": "degenerate",
"ringCount": 1,
"selfIntersections": 0
}
},
"validationErrors": {
"closed": null,
"multiRing": null,
"open": "Profile ring 0 is open.",
"selfIntersecting": "Profile contains self-intersecting edges.",
"invalidNesting": "Profile holes must be contained directly inside the outer ring.",
"nonPlanar": "Profile ring 0 is not coplanar with the outer ring.",
"degenerate": "Profile ring 0 is collinear."
},
"partDesignProfiles": {
"closed": {
"code": null,
"regionCount": 1
},
"multiRing": {
"code": null,
"outerPoints": 4,
"holeCount": 1,
"regionCount": 1
},
"open": {
"code": "PROFILE_OPEN"
},
"selfIntersecting": {
"code": null,
"regionCount": 2,
"regionPoints": [
3,
3
]
},
"invalidNesting": {
"code": null,
"regionCount": 2,
"regionPoints": [
4,
4
]
}
},
"partDesignGeometry": {
"closed": {
"volume": 360,
"solids": 1,
"shapeType": "solid",
"structuralValid": false,
"structuralErrors": 20,
"structuralWarnings": 0
},
"multiRing": {
"volume": 320,
"solids": 1,
"shapeType": "solid",
"structuralValid": false,
"structuralErrors": 40,
"structuralWarnings": 0
},
"selfIntersecting": {
"volume": 80,
"solids": 2,
"shapeType": "compound",
"structuralValid": true,
"structuralErrors": 0,
"structuralWarnings": 0
},
"invalidNesting": {
"volume": 370,
"solids": 2,
"shapeType": "compound",
"structuralValid": true,
"structuralErrors": 0,
"structuralWarnings": 0
}
},
"opfs": {
"markerSuite": "SK-11",
"markerCases": 12,
"markerRemoved": true
}
}

View File

@@ -0,0 +1,42 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"locales": {
"supported": 3,
"snapshots": 3,
"longLabel": true,
"decimalSamples": [
"12.346 mm",
"12.346 mm",
"12,346 mm"
]
},
"accessibility": {
"checked": 4,
"missingNames": 0,
"duplicates": 0,
"unnamedFocusable": 0,
"pass": true
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 813,
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "QA-08",
"localeCount": 3,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,43 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"geometry": {
"sourceShape": "shape-msi9vj60-1",
"valid": true,
"volume": 7.999999999999998
},
"trajectory": {
"joints": 3,
"waypoints": 2,
"poses": 5,
"status": "generated",
"violations": 0,
"maxReach": 6,
"homeX": 6,
"collisions": 1,
"controllerBytes": 1120,
"csvBytes": 174
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 551,
"hash": "8f750b2eaaf68e4c3523a0c97145931ad6d6d83e854985d2b4069bb10fe8de26",
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "ROBOT-ALL",
"poses": 5,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,42 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"macro": {
"commands": 2,
"replay": "replayed",
"executed": 2,
"bytes": 210
},
"security": {
"disallowedRejected": true,
"quotaRejected": true,
"noDynamicExecution": true,
"deniedCapabilities": [
"file",
"network",
"time",
"resource"
]
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 210,
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "SCRIPT-ALL",
"commands": 2,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,120 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"formats": {
"descriptors": 8,
"records": 8,
"nativeExports": 3,
"proxyImports": 8,
"bytes": 665,
"categories": [
"2d",
"bim",
"data",
"mesh"
],
"matrix": [
{
"format": "DXF",
"category": "2d",
"byteLength": 36,
"imported": true,
"rejectedInvalid": true,
"byteExactRoundTrip": true,
"deterministic": true,
"proxy": true
},
{
"format": "SVG",
"category": "2d",
"byteLength": 217,
"imported": true,
"rejectedInvalid": true,
"byteExactRoundTrip": true,
"deterministic": true,
"proxy": true
},
{
"format": "OBJ",
"category": "mesh",
"byteLength": 72,
"imported": true,
"rejectedInvalid": true,
"byteExactRoundTrip": true,
"deterministic": true,
"proxy": true
},
{
"format": "PLY",
"category": "mesh",
"byteLength": 49,
"imported": true,
"rejectedInvalid": true,
"byteExactRoundTrip": true,
"deterministic": true,
"proxy": true
},
{
"format": "STL",
"category": "mesh",
"byteLength": 59,
"imported": true,
"rejectedInvalid": true,
"byteExactRoundTrip": true,
"deterministic": true,
"proxy": true
},
{
"format": "PDF",
"category": "2d",
"byteLength": 48,
"imported": true,
"rejectedInvalid": true,
"byteExactRoundTrip": true,
"deterministic": true,
"proxy": true
},
{
"format": "IFC",
"category": "bim",
"byteLength": 136,
"imported": true,
"rejectedInvalid": true,
"byteExactRoundTrip": true,
"deterministic": true,
"proxy": true
},
{
"format": "CSV",
"category": "data",
"byteLength": 48,
"imported": true,
"rejectedInvalid": true,
"byteExactRoundTrip": true,
"deterministic": true,
"proxy": true
}
]
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 1884,
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "FC-09",
"records": 8,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,33 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"checks": {
"path": 5,
"archiveEntries": 3,
"xmlBytes": 79,
"permissionChecks": 3,
"rejectedCases": 4,
"pass": true
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 180,
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "QA-07",
"checks": 4,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,65 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"edit": {
"stableId": true,
"degree": 1,
"poleCount": 3,
"middlePole": {
"x": 2,
"y": 3
},
"weights": [
1,
0.5,
1
],
"knots": [
0,
0,
0.5,
1,
1
],
"periodic": true,
"sourceUnchanged": true
},
"validationErrors": {
"invalidWeight": "spline weights must be positive finite values matching control points.",
"invalidKnots": "spline knots must be non-decreasing and have controlPointCount + degree + 1 entries.",
"invalidDegree": "spline requires at least degree + 1 control points."
},
"roundTrip": {
"archiveBytes": 1493,
"geometryEqual": true,
"constraintsEqual": true,
"constraintTypes": [
"weight",
"internalAlignment",
"weight"
],
"weights": [
1,
1.5,
1.25,
1
],
"knots": [
0,
0,
0,
0,
1,
1,
1,
1
]
},
"opfs": {
"markerSuite": "SK-10",
"markerFields": 8,
"markerRemoved": true
}
}

View File

@@ -0,0 +1,37 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"fixtures": {
"reference": {
"status": "under-constrained",
"degreesOfFreedom": 3,
"diagnostic": true,
"unchangedEnd": true
},
"redundant": {
"status": "under-constrained",
"diagnostic": true
},
"conflicting": {
"status": "conflicting",
"diagnostic": true,
"notConverged": true
},
"coincident": {
"status": "under-constrained",
"residual": 0,
"sharedPoint": true
},
"block": {
"status": "solved",
"degreesOfFreedom": 0,
"unchanged": true
}
},
"opfs": {
"markerSuite": "SK-06/SK-07",
"markerRemoved": true
}
}

View File

@@ -0,0 +1,115 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"operations": {
"drag": {
"start": {
"x": 0,
"y": 2
},
"end": {
"x": 8,
"y": 2
},
"sourceUnchanged": true
},
"split": {
"ids": [
"line",
"line-2"
],
"endpoints": [
[
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
}
],
[
{
"x": 4,
"y": 0
},
{
"x": 10,
"y": 0
}
]
],
"constraintTypes": [
"coincident"
]
},
"extend": {
"end": {
"x": 15,
"y": 0
},
"sourceUnchanged": true
},
"trim": {
"end": {
"x": 7,
"y": 0
},
"constraintTypes": [
"pointOnObject"
],
"sourceUnchanged": true
},
"construction": {
"enabled": true,
"sourceUnchanged": true
},
"autoConstraint": {
"suggestionReasons": [
"coincident",
"horizontal"
],
"appliedIds": [
"auto-coincident-line-a.end-line-b.start",
"auto-horizontal-line-a"
],
"sourceUnchanged": true
},
"replay": {
"applied": 2,
"undone": 1,
"redone": 1,
"finalEnd": {
"x": 6,
"y": 0
}
}
},
"interactions": {
"nativeEvents": {
"pointer": 3,
"keyboard": 3
},
"start": {
"x": 0,
"y": 2
},
"end": {
"x": 8,
"y": 2
},
"tool": "select",
"pointerActive": false,
"applied": 1,
"undone": 1,
"redone": 1
},
"opfs": {
"markerSuite": "SK-09",
"markerOperations": 9,
"markerRemoved": true
}
}

View File

@@ -0,0 +1,37 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"stress": {
"seed": 539363331,
"models": 500,
"solves": 1000,
"durationMs": 15.394999980926514,
"averageSolveMs": 0.015394999980926513,
"maxIterations": 64,
"maxResidual": 4.577566798522237e-16,
"deterministicMismatches": 0,
"unexpectedResults": 0,
"digest": "edac8aed",
"categories": {
"constraints": 100,
"conflict": 100,
"redundant": 100,
"reference": 100,
"drag": 100
},
"statuses": {
"solved": 0,
"under-constrained": 400,
"conflicting": 100,
"invalid": 0
}
},
"opfs": {
"markerSuite": "SK-12",
"markerModels": 500,
"markerSolves": 1000,
"markerRemoved": true
}
}

View File

@@ -0,0 +1,87 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"cells": {
"width": 6,
"length": 12,
"updatedLength": 16,
"dimension": "length"
},
"aliases": [
"Length",
"Width"
],
"dependencies": [
"A2->A1:Width",
"B1->A1:A1"
],
"cycle": {
"detected": true,
"cells": [
"C1",
"D1"
]
},
"binding": {
"alias": "Length",
"objectId": "pad",
"propertyName": "Length",
"appliedValue": 16,
"undoValue": 12,
"redoValue": 16
},
"expression": {
"value": 13,
"dimension": "length",
"references": [
"Spreadsheet.Length"
]
},
"layout": {
"styledCells": 4,
"namedRange": "A1:A3",
"mergedRange": "A1:C3",
"shiftedFormulaAddress": "A3"
},
"csv": {
"rows": 2,
"columns": 4,
"bytes": 46
},
"largeSheet": {
"cells": 10000,
"rows": 100,
"columns": 100,
"evaluationErrors": 0,
"csvBytes": 175112,
"durationMs": 53.85000002384186,
"budgetMs": 5000
},
"persistence": {
"mode": "sqlite-opfs",
"savedVersion": 20,
"reopenedVersion": 20,
"reopenedValue": 16
},
"resource": {
"hash": "7bd33d02ab448a6cfe803608d27d4d394213ee4cc2998eeaaa31176e4216a161",
"byteLength": 939,
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "SS-ALL",
"markerCells": 9,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,36 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"model": {
"patches": 5,
"poles": 20,
"trimmed": 1,
"sewn": 1,
"continuity": "C0",
"fillKind": "bezier",
"offsetDistance": 1.5,
"topoRefs": 4,
"objBytes": 641
},
"persistence": {
"mode": "sqlite-opfs",
"byteLength": 846,
"roundTrip": true,
"released": true
},
"opfs": {
"markerSuite": "SURF-CORE",
"patches": 5,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,70 @@
{
"schemaVersion": 1,
"status": "pass",
"browserId": "chrome",
"crossOriginIsolated": true,
"page": {
"views": 2,
"sections": 1,
"dimensions": 1,
"annotations": 1,
"tolerances": 1,
"updatedDimension": 6,
"unresolvedRefs": [
"Vertex3"
],
"unresolvedTolerances": [
"flatness"
]
},
"svg": {
"bytes": 636,
"sha256": "0762dbd1f6d4587e6f59b3596f493aceaf8da5e7fb47b0f08e89e13ba27bcfc9",
"deterministic": true,
"lines": 2,
"accessible": true
},
"pdf": {
"bytes": 872,
"sha256": "fb66bbb3b98ca60a1d75d396124cc1f27d1a89080a82eaf23ae0525fc9709059",
"deterministic": true,
"validHeader": true,
"validXref": true
},
"resources": [
{
"mediaType": "image/svg+xml",
"hash": "0762dbd1f6d4587e6f59b3596f493aceaf8da5e7fb47b0f08e89e13ba27bcfc9",
"byteLength": 636,
"roundTrip": true,
"released": true
},
{
"mediaType": "application/pdf",
"hash": "fb66bbb3b98ca60a1d75d396124cc1f27d1a89080a82eaf23ae0525fc9709059",
"byteLength": 872,
"roundTrip": true,
"released": true
},
{
"mediaType": "application/vnd.bitbybit.techdraw+json",
"hash": "2c0493a55f851c4db55af3d87c002e8584dbb65b038a0a56e8adcdf063d5f3da",
"byteLength": 1934,
"roundTrip": true,
"released": true
}
],
"opfs": {
"markerSuite": "TD-ALL",
"markerViews": 2,
"markerRemoved": true
},
"afterRelease": {
"shapeCount": 0,
"kernelReferenceCount": 0
},
"browser": {
"product": "Chrome/150.0.7871.128",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36"
}
}

View File

@@ -0,0 +1,34 @@
{
"schemaVersion": 1,
"browserId": "chrome",
"crossOriginIsolated": true,
"status": "pass",
"capabilities": {
"provider": "Bitbybit OCCT",
"version": "1.1.1",
"status": "ready",
"worker": true,
"wasm": true,
"shapeCount": 0,
"kernelReferenceCount": 0,
"releasedShapeCount": 0,
"peakShapeCount": 0,
"peakKernelReferenceCount": 0
},
"topology": {
"faces": 6,
"edges": 12,
"vertices": 8,
"analyticFaces": 6,
"analyticEdges": 12,
"adjacencyKeys": [
6,
6,
12,
12,
8
],
"transientIndexFree": true,
"opfsTopologyRoundTrip": true
}
}

View File

@@ -2,39 +2,39 @@
"schemaVersion": 1,
"freecadBaseline": "freecad-1.1.1",
"workbenches": {
"Part Design": { "status": "facade-partial", "level": "experimental", "commands": ["create-body", "create-sketch", "pad", "pocket", "revolution", "fillet", "chamfer", "mirrored", "multi-transform", "linear-pattern", "polar-pattern"] },
"Part Design": { "status": "facade-partial", "level": "experimental", "commands": ["create-body", "create-sketch", "shape-binder", "datum", "pad", "pocket", "revolution", "fillet", "chamfer", "mirrored", "multi-transform", "linear-pattern", "polar-pattern"] },
"Part": { "status": "facade-partial", "level": "experimental", "commands": ["primitive", "union", "cut", "intersection", "check-shape"] },
"Sketcher": { "status": "facade-model", "level": "experimental", "commands": ["new-sketch", "line", "arc", "circle", "rectangle", "constrain-horizontal", "constrain-vertical", "solve-sketch"] },
"Draft": { "status": "ui-prototype", "level": "read-only", "commands": ["working-plane", "snap-settings", "draft-line", "draft-wire", "move", "rotate"] },
"TechDraw": { "status": "ui-prototype", "level": "read-only", "commands": ["new-page", "view-part", "section-view", "dimension", "annotation"] },
"Spreadsheet": { "status": "ui-prototype", "level": "read-only", "commands": ["new-sheet", "set-alias", "expression", "bind-property"] },
"Assembly": { "status": "ui-prototype", "level": "read-only", "commands": ["insert-component", "coincident", "concentric", "distance", "interference"] },
"BIM": { "status": "ui-manifest", "level": "unsupported", "commands": ["wall", "structure", "window", "ifc-export"] },
"CAM": { "status": "ui-manifest", "level": "unsupported", "commands": ["new-job", "stock", "profile-path", "simulate", "post-process"] },
"FEM": { "status": "ui-manifest", "level": "unsupported", "commands": ["new-analysis", "material", "mesh", "solve", "results"] },
"Mesh": { "status": "ui-prototype", "level": "read-only", "commands": ["mesh-import", "analyze-mesh", "repair-mesh", "fill-holes", "mesh-export"] },
"Surface": { "status": "ui-manifest", "level": "unsupported", "commands": ["bspline", "bezier", "fill-surface", "loft-surface", "trim-surface"] },
"Inspection": { "status": "ui-manifest", "level": "unsupported", "commands": ["measure-distance", "measure-angle", "measure-area", "section", "check-dependencies"] },
"AddonManager": { "status": "scope-only", "level": "unsupported", "commands": ["addon-list", "addon-install", "addon-update", "addon-remove"] },
"Draft": { "status": "domain-contract", "level": "experimental", "commands": ["working-plane", "snap-settings", "draft-line", "draft-wire", "draft-circle", "move", "rotate", "scale", "offset", "array", "clone", "layer"] },
"TechDraw": { "status": "domain-contract", "level": "experimental", "commands": ["new-page", "view-part", "section-view", "dimension", "annotation", "svg-export"] },
"Spreadsheet": { "status": "domain-contract", "level": "experimental", "commands": ["new-sheet", "set-alias", "expression", "bind-property", "csv-export"] },
"Assembly": { "status": "domain-contract", "level": "experimental", "commands": ["insert-component", "ground-component", "connector", "coincident", "concentric", "distance", "angle", "solve-assembly", "bom", "collision-check", "explode-view", "variant"] },
"BIM": { "status": "domain-contract", "level": "experimental", "commands": ["wall", "structure", "window", "level", "space", "material", "quantity-schedule", "ifc-export"] },
"CAM": { "status": "domain-contract", "level": "experimental", "commands": ["new-job", "stock", "tool", "profile-path", "simulate", "gcode-export"] },
"FEM": { "status": "domain-contract", "level": "experimental", "commands": ["new-analysis", "material", "mesh", "fix-node", "load", "solve-reference-bar", "results-csv"] },
"Mesh": { "status": "domain-contract", "level": "experimental", "commands": ["mesh-import", "weld-vertices", "analyze-mesh", "remove-degenerate", "repair-triangle", "mesh-transform", "obj-export"] },
"Surface": { "status": "domain-contract", "level": "experimental", "commands": ["bspline", "bezier", "fill-surface", "loft-surface", "trim-surface", "sew-surface", "surface-continuity"] },
"Inspection": { "status": "domain-contract", "level": "experimental", "commands": ["measure-distance", "measure-angle", "measure-area", "measure-volume", "check-dependencies", "csv-report"] },
"AddonManager": { "status": "domain-contract", "level": "experimental", "commands": ["addon-list", "addon-install", "addon-update", "addon-remove", "addon-rollback", "addon-permissions"] },
"Cloud": { "status": "scope-only", "level": "unsupported", "commands": ["cloud-login", "cloud-open", "cloud-save", "cloud-share"] },
"Fem": { "status": "scope-only", "level": "unsupported", "commands": ["new-analysis", "material", "mesh", "solve", "results"] },
"Help": { "status": "scope-only", "level": "unsupported", "commands": ["help-contents", "help-search", "help-about"] },
"Idf": { "status": "scope-only", "level": "unsupported", "commands": ["idf-import", "idf-export"] },
"Import": { "status": "scope-only", "level": "unsupported", "commands": ["import-model", "import-batch", "import-options"] },
"JtReader": { "status": "scope-only", "level": "unsupported", "commands": ["jt-import", "jt-assembly", "jt-export"] },
"Material": { "status": "scope-only", "level": "unsupported", "commands": ["material-card", "material-library", "material-assign"] },
"Idf": { "status": "data-adapter-registry", "level": "read-only", "commands": ["idf-import", "idf-export"] },
"Import": { "status": "domain-contract", "level": "experimental", "commands": ["import-model", "import-batch", "import-options"] },
"JtReader": { "status": "data-adapter-registry", "level": "read-only", "commands": ["jt-import", "jt-assembly", "jt-export"] },
"Material": { "status": "domain-contract", "level": "experimental", "commands": ["material-card", "material-library", "material-assign"] },
"Measure": { "status": "scope-only", "level": "unsupported", "commands": ["measure-distance", "measure-angle", "measure-area", "measure-volume"] },
"MeshPart": { "status": "scope-only", "level": "unsupported", "commands": ["mesh-to-shape", "shape-to-mesh", "mesh-section"] },
"OpenSCAD": { "status": "scope-only", "level": "unsupported", "commands": ["openscad-import", "openscad-export", "openscad-preview"] },
"Plot": { "status": "scope-only", "level": "unsupported", "commands": ["plot-create", "plot-style", "plot-export"] },
"Points": { "status": "scope-only", "level": "unsupported", "commands": ["points-import", "points-filter", "points-export"] },
"ReverseEngineering": { "status": "scope-only", "level": "unsupported", "commands": ["fit-curve", "fit-surface", "reverse-engineer"] },
"Robot": { "status": "scope-only", "level": "unsupported", "commands": ["robot-model", "robot-trajectory", "robot-simulate", "robot-export"] },
"OpenSCAD": { "status": "data-adapter-registry", "level": "read-only", "commands": ["openscad-import", "openscad-export", "openscad-preview"] },
"Plot": { "status": "domain-contract", "level": "experimental", "commands": ["plot-create", "plot-style", "plot-bind", "plot-svg-export", "plot-csv-export"] },
"Points": { "status": "data-adapter-registry", "level": "read-only", "commands": ["points-import", "points-filter", "points-export"] },
"ReverseEngineering": { "status": "data-adapter-registry", "level": "read-only", "commands": ["fit-curve", "fit-surface", "reverse-engineer"] },
"Robot": { "status": "domain-contract", "level": "experimental", "commands": ["robot-model", "joint-limits", "waypoint", "robot-trajectory", "robot-export"] },
"Show": { "status": "scope-only", "level": "unsupported", "commands": ["show-object", "show-share", "show-presentation"] },
"Start": { "status": "scope-only", "level": "unsupported", "commands": ["start-page", "recent-projects", "templates"] },
"Web": { "status": "scope-only", "level": "unsupported", "commands": ["web-export", "web-view", "web-share"] },
"Sandbox": { "status": "scope-only", "level": "unsupported", "commands": [] },
"TemplatePyMod": { "status": "scope-only", "level": "unsupported", "commands": [] },
"TemplatePyMod": { "status": "domain-contract", "level": "experimental", "commands": ["macro-record", "macro-replay", "facade-command"] },
"Test": { "status": "scope-only", "level": "unsupported", "commands": [] },
"Tux": { "status": "scope-only", "level": "unsupported", "commands": [] }
},
@@ -65,23 +65,24 @@
"occtPackage": "packages/dev/occt",
"workerPackage": "packages/dev/occt-worker",
"sourceForm": "generated-wasm-and-typescript-only",
"wasmArtifact": { "path": "node_modules/@bitbybit-dev/occt/bitbybit-dev-occt/bitbybit-dev-occt.a4a6ec2a.wasm", "sha256": "1b6a8fc7b83d222854f73b66af8d0e45ad4fdee025904b447e885d4e18ae8656", "status": "compiled-artifact-verified" },
"missingBuildInputs": ["OCCT C++ source checkout", "Embind generation rules", "Emscripten link/export manifest"],
"evidence": "./npmw run check:bitbybit-history"
},
"nativeOcctHistory": {
"status": "built-provider-not-default-runtime",
"status": "built-provider-browser-verified-default-worker",
"sourceCheckout": "OCCT_SOURCE_DIR",
"sourceCommit": "bb75017e915f6509a4bfa8b551f853352754c2da",
"occtVersion": "8.0.0",
"toolchain": "Emscripten 3.1.69 + CMake 3.31.6 + Ninja 1.12.1",
"library": ["TKBO", "TKDESTEP", "TKXSBase", "TKDE"],
"bindings": ["BRepAlgoAPI_Fuse", "BRepAlgoAPI_Cut", "BRepAlgoAPI_Common", "Generated", "Modified", "IsDeleted", "TopExp_Explorer", "STEPControl_Reader", "STEPControl_Writer", "shapeToStep", "booleanHistoryFromStep"],
"library": ["TKBO", "TKBool", "TKFillet", "TKOffset", "TKDESTEP", "TKXSBase", "TKDE"],
"bindings": ["BRepPrimAPI_MakeBox", "BRepPrimAPI_MakeCylinder", "BRepPrimAPI_MakeSphere", "BRepPrimAPI_MakeCone", "BRepPrimAPI_MakePrism", "BRepPrimAPI_MakeRevol", "BRepBuilderAPI_Transform", "BRepFilletAPI_MakeFillet", "BRepFilletAPI_MakeChamfer", "BRepOffsetAPI_DraftAngle", "BRepOffsetAPI_MakePipe", "BRepOffsetAPI_MakeThickSolid", "BRepAlgoAPI_Fuse", "BRepAlgoAPI_Cut", "BRepAlgoAPI_Common", "Generated", "Modified", "IsDeleted", "BRepCheck_Analyzer", "BRepGProp", "BRepBndLib", "TopExp_Explorer", "STEPControl_Reader", "STEPControl_Writer", "shapeToStep", "shapeSummary", "booleanProbe", "booleanResult", "booleanHistoryFromStep", "prismHistoryFromStep", "pocketHistoryFromStep", "loftHistoryFromStep", "pipeHistoryFromStep", "revolutionHistoryFromStep", "grooveHistoryFromStep", "filletHistoryFromStep", "chamferHistoryFromStep", "holeHistoryFromStep", "draftHistoryFromStep", "thicknessHistoryFromStep", "linearPatternHistoryFromStep", "polarPatternHistoryFromStep", "mirroredHistoryFromStep", "multiTransformHistoryFromStep", "makeRectangleFace", "makeRectangleFacePlaced", "makeLineWire"],
"buildOptimization": "OCCT dependencies -O0 with Emscripten -fexceptions; Embind wrapper -O2 with -fexceptions",
"artifact": {
"javascript": "native/occt-history/dist/bitbybit-occt-history.js",
"wasm": "native/occt-history/dist/bitbybit-occt-history.wasm",
"javascriptSha256": "e2feca5a8bab431e3351e6af3972beef4f9ce47fe02de2d0ac7ba9de91882311",
"wasmSha256": "6fac28102132ddeb8e7f1f254c76643d595cc60a26b2adf80fe3d6407b18b675"
"javascriptSha256": "78f1cdd17a6a7b61ff8435c0ff8c912a43c4517e6ef49f3f741521662a903557",
"wasmSha256": "b6cb6307399b188cdf1377e9294b4af8e36b21783693101db8f985e41cff5fbe"
},
"protocol": "native result and history records stay inside the provider; cross-WASM handles are forbidden; STEP text is the explicit transport boundary",
"historyProtocol": {
@@ -91,26 +92,45 @@
"transport": "step-text",
"cancellation": "AbortSignal",
"timeout": "coordinator-configured",
"staleGuard": "documentId + documentVersion + operationId"
"staleGuard": "documentId + documentVersion + operationId",
"namingEvidence": {
"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": ["browser FreeCAD private token callback ABI", "browser builder naming evidence transport", "non-unique isomorphic source"]
}
},
"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",
"status": "worker-provider-configurable-not-default-runtime"
"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",
"operations": ["worker-initialize", "worker-cancel", "worker-stale-isolation", "worker-crash-recovery-contract", "ownership-ledger-metrics", "browser-memory-budget-gate", "upstream-abi-golden-drift-gate", "artifact-dist-public-hash"]
},
"buildCommand": "./npmw run build:occt-history",
"testCommand": "./npmw run test:occt-history"
},
"facadeCapabilities": {
"geometry": { "level": "experimental", "provider": "BitBybit OCCT 1.1.1", "operations": ["box", "cylinder", "sphere", "cone", "placement", "object-placement-recompute", "placement-validation", "mirror-plane", "mirrored-whole-shape", "multi-transform-whole-shape", "union", "cut", "intersection", "part-primitive-recompute", "part-boolean-recompute", "shape-check", "pad", "pocket", "pocket-through-all", "revolution", "fillet", "chamfer", "linear-pattern-whole-shape", "polar-pattern-whole-shape", "hole-basic-origin-normal", "feature-shape-cache", "face-edge-vertex-topology", "step-export", "stl-export"] },
"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", "native-topology-history-adapter", "undo-redo"] },
"geometry": { "level": "experimental", "provider": "BitBybit OCCT 1.1.1", "operations": ["box", "cylinder", "sphere", "cone", "placement", "object-placement-recompute", "placement-validation", "mirror-plane", "mirrored-whole-shape", "multi-transform-whole-shape", "union", "cut", "intersection", "part-primitive-recompute", "part-boolean-recompute", "shape-check", "pad", "pocket", "pocket-through-all", "revolution", "loft", "pipe", "fillet", "chamfer", "linear-pattern-whole-shape", "polar-pattern-whole-shape", "hole-basic-origin-normal", "feature-shape-cache", "face-edge-vertex-topology", "native-cross-feature-history-routing", "step-export", "stl-export"], "featureLevels": { "pad": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it"] }, "pocket": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it"] }, "revolution": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it"] }, "groove": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it", "OCCT/FreeCAD private token generation"] }, "boolean": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it", "isomorphic source ambiguity"] }, "fillet": { "level": "experimental", "exactBlockedBy": ["complete cross-feature native stage history"] }, "chamfer": { "level": "experimental", "exactBlockedBy": ["complete cross-feature native stage history"] }, "multi-transform": { "level": "experimental", "exactBlockedBy": ["feature-list native history", "private naming tokens"] } } },
"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", "adjacency-fingerprint-disambiguation", "toporef-candidate-replacement-transaction", "signature-topology-history-fallback", "native-topology-history-adapter", "native-cross-feature-history-routing", "runtime-mapped-name-ref-evidence", "string-hasher-evidence-validation", "element-map2-multi-stage-name-mapping", "isomorphic-candidate-persistence", "element-map-name-contract", "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", "document-property-projection", "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"] }
"sketcher": { "level": "experimental", "provider": "typescript-basic; FreeCAD 1.1.1 planegcs WASM core installed", "operations": ["point-line-circle-arc-model", "ellipse-bspline-periodic-model", "construction-geometry", "geometry-validation", "stable-geometry-signature", "stable-external-geometry-model", "basic-constraints", "advanced-constraint-proxy", "diameter-symmetric-tangent", "basic-solver", "versioned-solver-protocol", "solver-capability-probe", "cancel-stale-isolation", "replay-contract", "planegcs-native-system-solve", "planegcs-horizontal-distance", "planegcs-vertical-distance", "planegcs-distance-x", "planegcs-distance-y", "planegcs-angle", "planegcs-circle-radius", "planegcs-circle-diameter", "planegcs-equal-lines", "planegcs-equal-circles", "planegcs-tangent-circles", "planegcs-point-symmetry", "planegcs-point-on-object", "planegcs-point-on-arc", "planegcs-point-on-ellipse", "planegcs-point-on-cubic-bspline", "planegcs-block-freeze", "planegcs-parallel-lines", "planegcs-perpendicular-lines", "planegcs-coincident-lines", "planegcs-snells-law-lines", "planegcs-ellipse-internal-alignment", "planegcs-cubic-bspline-weight", "planegcs-dedicated-worker-smoke", "persistence"] },
"fcstd": { "level": "read-only", "operations": ["zip-preflight", "document-xml-metadata", "document-property-projection", "live-topology-element-map", "proxy-report", "script-isolation"] },
"viewport": { "level": "experimental", "provider": "Three.js WebGL2", "operations": ["mesh-rendering", "multi-object-mesh-registry", "view-orientation", "fit-and-zoom", "subshape-triangle-mapping", "subshape-click-selection", "subshape-hover-preselection", "subshape-hover-highlight", "occt-analytic-picking-topology", "brep-edge-polyline-picking", "edge-pixel-tolerance-picking", "vertex-pixel-tolerance-picking", "diagnostic-selection-flash", "multi-object-selection-set", "modifier-box-selection-gesture", "window-contained-box-selection", "crossing-intersection-box-selection", "multi-object-selection-highlight", "object-visibility-projection", "selection-resource-release"] },
"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-10",
"exact": false,
"featureExactCount": 0,
"plan": "config/freecad-web-exact-parity-plan.json",
"promotionTask": "EX-REL-01",
"taskStatus": { "completed": 2, "inProgress": 36, "pending": 14, "blocked": 0 },
"blockers": ["browser FreeCAD private token callback ABI", "browser builder naming evidence transport", "non-unique isomorphic source"]
},
"rules": [
"UI status does not imply geometry or file compatibility.",

View File

@@ -6,5 +6,5 @@
"uiContract": "FreeCAD official desktop UI and Developers Handbook",
"compatibilityLevels": ["exact", "compatible", "read-only", "proxy", "unsupported"],
"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."
"notes": "The official 1.1.1 tag and commit are locked. The local headless oracle verifies 100 primary success, 51 primary failure, and 5/5 supplemental Part-family success/failure fixtures. This baseline evidence does not promote the system exact claim."
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,123 @@
{
"schemaVersion": 1,
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"source": {
"workbench": "src/Mod/CAM/InitGui.py",
"commandInventory": "config/freecad-gui-command-inventory.json",
"desktopOracle": "config/freecad-desktop-oracle.json",
"dynamicOracleStatus": "partial-command-state-only"
},
"status": "in_progress",
"claim": "compatible-browser-subset-not-exact-freecad-cam-parity",
"commandSurface": {
"toolbarGroups": 4,
"menuGroups": 5,
"webCommands": 60,
"freecadCamRuntimeCommands": 56,
"freecadCamSourceOnlyCommands": 5,
"notYetSurfacedCommands": [],
"nonActionableSourceTemplates": ["CAM_%s"],
"freecadCommandIds": [
"CAM_Adaptive", "CAM_Area", "CAM_Area_Workplane", "CAM_Array", "CAM_Comment", "CAM_Compound", "CAM_Custom", "CAM_Deburr", "CAM_DressupArray", "CAM_DressupAxisMap", "CAM_DressupDogbone", "CAM_DressupDragKnife", "CAM_DressupLeadInOut", "CAM_DressupPathBoundary", "CAM_DressupRampEntry", "CAM_DressupTag", "CAM_DressupTools", "CAM_DressupZCorrect", "CAM_Drilling", "CAM_DrillingTools", "CAM_Engrave", "CAM_EngraveTools", "CAM_ExportTemplate", "CAM_Fixture", "CAM_Helix", "CAM_Inspect", "CAM_Job", "CAM_MillFace", "CAM_OpActiveToggle", "CAM_OperationCopy", "CAM_PathShapeTC", "CAM_Pocket3D", "CAM_Pocket_Shape", "CAM_Post", "CAM_Probe", "CAM_Profile", "CAM_PropertyBag", "CAM_Sanity", "CAM_SelectLoop", "CAM_SetStartPoint", "CAM_Shape", "CAM_SimpleCopy", "CAM_SimTools", "CAM_Simulator", "CAM_SimulatorGL", "CAM_Slot", "CAM_Stop", "CAM_Tapping", "CAM_ThreadMilling", "CAM_ToolBitCreate", "CAM_ToolBitDock", "CAM_ToolBitLibraryOpen", "CAM_ToolBitLoad", "CAM_ToolBitSave", "CAM_ToolBitSaveAs", "CAM_ToolController", "CAM_Vcarve", "CAM_Camotics", "CAM_Copy", "CAM_3dTools"
]
},
"browserDomain": {
"stockModes": 4,
"toolShapes": 7,
"operationKinds": 22,
"dressupKinds": 9,
"postprocessors": 7
},
"coverage": [
{
"id": "CAM-21",
"level": "exact",
"scope": "Locked FreeCAD source command identifiers and CAM command grouping manifest",
"evidence": "check:cam-parity"
},
{
"id": "CAM-22",
"level": "compatible",
"scope": "Sixty actionable CAM commands, four toolbars, five menu groups, Job tree, task panels and viewport toolpath presentation",
"evidence": "check:chrome-app-e2e"
},
{
"id": "CAM-23",
"level": "compatible",
"scope": "Job, four stock modes and SetupSheet browser contract",
"evidence": "check:chrome-cam"
},
{
"id": "CAM-24",
"level": "compatible",
"scope": "Seven ToolBit shapes, versioned JSON assets, tool controllers, feeds, rapids, spindle and coolant",
"evidence": "check:chrome-cam"
},
{
"id": "CAM-25",
"level": "compatible",
"scope": "Twenty-two deterministic browser operation kinds; not native Path algorithms",
"evidence": "test:cam"
},
{
"id": "CAM-26",
"level": "compatible",
"scope": "Nine deterministic path dress-up kinds",
"evidence": "test:cam"
},
{
"id": "CAM-27",
"level": "compatible",
"scope": "Sanity check, deterministic swept-volume material-removal timeline, and path/stock/tool-holder/fixture collision diagnostics",
"evidence": "check:chrome-cam"
},
{
"id": "CAM-28",
"level": "compatible",
"scope": "Seven allowlisted deterministic postprocessors with unsafe post rejection",
"evidence": "check:chrome-cam"
},
{
"id": "CAM-29",
"level": "development",
"scope": "Versioned CAM Job assets, validated import, OPFS snapshot, Undo/Redo, and persistent Comment/PropertyBag/Compound metadata are implemented; FreeCAD native Path::Feature/FeaturePython round-trip and Web Path::PropertyPath resource editing for native Path::Feature plus explicit non-executing FeaturePython opt-in are oracle-verified; FeaturePython operation metadata/recompute and full operation-object semantics remain bounded",
"evidence": "check:chrome-cam"
},
{
"id": "CAM-30",
"level": "compatible",
"scope": "FreeCAD-style task flow and command lifecycle; native Qt Job/Profile Task open/accept/cancel lifecycle is oracle-verified, while full focus, keyboard, validation and all operation panels remain pending",
"evidence": "check:chrome-app-e2e"
},
{
"id": "CAM-31",
"level": "development",
"scope": "OpenCAMLib WASM PathDropCutter, CAMotics source-stage G-code generation, CAMotics 1.3 native Qt/TPL plus CLI sidecars, standalone browser CAMotics sweep WASM, OCCT native BRep removal including continuous-segment sweep, and LinuxCNC XYZBC RTCP post/bridge are verified; full browser CAMotics program/same-input differential, full FreeCAD Path algorithms and complete continuous tool-axis oracle remain open",
"evidence": "check:chrome-camotics-wasm"
},
{
"id": "CAM-32",
"level": "development",
"scope": "LinuxCNC WASM XYZBC machine acceptance is closed for the certified table-rotary-tilting digital case; Qt Task lifecycle, native Path::Feature Web codec, CAMotics native Qt/TPL and CLI sidecars, curved-segment BRep sweep and fail-closed safety matrix are evidenced, while exact dynamic FreeCAD comparison, FeaturePython/full Path semantics, full browser CAMotics differential and production authorization remain closed",
"evidence": "check:chrome-cam-linuxcnc-machine"
}
],
"tasks": {
"completed": 8,
"inProgress": 4,
"pending": 0,
"blocked": 0
},
"unclosedDifferences": [
"Native FreeCAD Path operation algorithms and geometry semantics",
"Complete CAM Qt task-panel validation, focus, keyboard and all operation-dialog state oracle",
"CAMotics full browser program runtime and same-input simulator differential",
"Analytic arbitrary-curved-path native swept-volume material removal and holder/fixture oracle",
"Complete continuous tool-axis/singularity oracle beyond certified XYZBC case",
"FeaturePython operation metadata/recompute and full-operation semantic Path::PropertyPath codec/editable FCStd round-trip",
"Machine-specific production safety authorization and physical actuator/metrology validation"
]
}

File diff suppressed because it is too large Load Diff

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,46 @@
{
"schemaVersion": 1,
"baselineId": "freecad-1.1.1",
"profile": "desktop",
"buildDirectory": ".cache/freecad/build-desktop",
"installDirectory": ".cache/freecad/install-desktop",
"sysrootDirectory": ".cache/freecad/sysroot",
"requiredRuntime": "FreeCAD",
"cmake": {
"buildGui": true,
"developerTests": false,
"pivyProbe": false,
"externalSmesh": false,
"disabledOptionalModules": ["Cloud", "JtReader", "VR", "TemplatePyMod", "Sandbox"]
},
"sourceModules": [
"AddonManager", "Assembly", "BIM", "CAM", "Cloud", "Draft", "Fem", "Help", "Idf", "Import", "Inspection", "JtReader", "Material", "Measure", "Mesh", "MeshPart", "OpenSCAD", "Part", "PartDesign", "Plot", "Points", "ReverseEngineering", "Robot", "Sandbox", "Show", "Sketcher", "Spreadsheet", "Start", "Surface", "TechDraw", "TemplatePyMod", "Test", "Tux", "Web"
],
"evidence": {
"configureCommand": "FREECAD_ORACLE_PROFILE=desktop ./npmw run configure:freecad-native",
"buildCommand": "FREECAD_ORACLE_PROFILE=desktop ./npmw run build:freecad-native",
"probeCommand": "FREECAD_ORACLE_PROFILE=desktop xvfb-run -a ./npmw run probe:freecad-reference",
"checkCommand": "./npmw run check:freecad-desktop-oracle",
"fcstdNativeRoundTripCommand": "./npmw run test:freecad-fcstd-native",
"probeReport": ".cache/freecad/reference-desktop.json"
},
"artifact": {
"path": ".cache/freecad/install-desktop/bin/FreeCAD",
"reportedVersion": "FreeCAD 1.1.1 Revision: 14556 (Git)",
"sizeBytes": 153160,
"sha256": "2c75642f0cdfd8a44ecb46aeb1cd6ef5e5643b313c5e3d617e3766406766ef70"
},
"verification": {
"status": "verified",
"sourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"guiUp": true,
"moduleCount": 34,
"moduleStatusSummary": {
"compiled-importable": 30,
"not-built": 4
},
"disabledModules": ["Cloud", "JtReader", "Sandbox", "TemplatePyMod"],
"probeObjects": ["Part::Box", "Part::Cylinder", "Part::Sphere", "Part::Cone", "Part::Feature", "PartDesign::Feature", "Sketcher::SketchObject"]
},
"status": "desktop-build-probed"
}

View File

@@ -0,0 +1,577 @@
{
"schemaVersion": 1,
"baseline": {
"freecadVersion": "1.1.1",
"commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d"
},
"generatedBy": "scripts/generate-freecad-entrypoint-inventory.mjs",
"sourceInventory": "config/freecad-source-inventory.json",
"formats": [
{
"id": "FCStd",
"category": "project",
"modules": [
"App",
"Gui"
],
"sourceEvidence": [
"src/App/Document.cpp",
"src/Gui/Document.cpp"
],
"webStrategy": "native-parser",
"compatibility": "read-only",
"roundTrip": false,
"status": "inventory-recorded"
},
{
"id": "BREP",
"category": "geometry",
"modules": [
"Part"
],
"sourceEvidence": [
"src/Mod/Part/App/FeaturePartImportBrep.cpp"
],
"webStrategy": "occt-worker",
"compatibility": "experimental",
"roundTrip": true,
"status": "inventory-recorded"
},
{
"id": "STEP",
"category": "geometry",
"modules": [
"Part",
"Import"
],
"sourceEvidence": [
"src/Mod/Part/App/FeaturePartImportStep.cpp",
"src/Mod/Import/App/WriterStep.cpp"
],
"webStrategy": "occt-worker",
"compatibility": "experimental",
"roundTrip": true,
"status": "inventory-recorded"
},
{
"id": "IGES",
"category": "geometry",
"modules": [
"Part",
"Import"
],
"sourceEvidence": [
"src/Mod/Part/App/FeaturePartImportIges.cpp",
"src/Mod/Import/App/WriterIges.cpp"
],
"webStrategy": "occt-worker",
"compatibility": "experimental",
"roundTrip": true,
"status": "inventory-recorded"
},
{
"id": "STL",
"category": "mesh",
"modules": [
"Mesh",
"MeshPart"
],
"sourceEvidence": [
"src/Mod/Mesh/App/Importer.cpp",
"src/Mod/Mesh/App/Exporter.cpp"
],
"webStrategy": "worker-adapter",
"compatibility": "experimental",
"roundTrip": true,
"status": "inventory-recorded"
},
{
"id": "OBJ",
"category": "mesh",
"modules": [
"Mesh"
],
"sourceEvidence": [
"src/Mod/Mesh/App/Importer.cpp",
"src/Mod/Mesh/App/Exporter.cpp"
],
"webStrategy": "worker-adapter",
"compatibility": "experimental",
"roundTrip": true,
"status": "inventory-recorded"
},
{
"id": "PLY",
"category": "mesh",
"modules": [
"Mesh"
],
"sourceEvidence": [
"src/Mod/Mesh/App/Importer.cpp",
"src/Mod/Mesh/App/Exporter.cpp"
],
"webStrategy": "worker-adapter",
"compatibility": "experimental",
"roundTrip": true,
"status": "inventory-recorded"
},
{
"id": "DXF",
"category": "2d",
"modules": [
"Draft",
"Import"
],
"sourceEvidence": [
"src/Mod/Draft/importDXF.py",
"src/Mod/Import/App/dxf/ImpExpDxf.cpp"
],
"webStrategy": "worker-adapter",
"compatibility": "read-only",
"roundTrip": false,
"status": "inventory-recorded"
},
{
"id": "SVG",
"category": "drawing",
"modules": [
"Draft",
"TechDraw"
],
"sourceEvidence": [
"src/Mod/Draft/importSVG.py",
"src/Mod/TechDraw/App/TechDrawExport.cpp"
],
"webStrategy": "sanitized-parser",
"compatibility": "read-only",
"roundTrip": false,
"status": "inventory-recorded"
},
{
"id": "PDF",
"category": "drawing",
"modules": [
"TechDraw"
],
"sourceEvidence": [
"src/Mod/TechDraw/App/TechDrawExport.cpp"
],
"webStrategy": "server-export",
"compatibility": "read-only",
"roundTrip": false,
"status": "inventory-recorded"
},
{
"id": "IFC",
"category": "bim",
"modules": [
"BIM"
],
"sourceEvidence": [
"src/Mod/BIM/importers/importIFC.py"
],
"webStrategy": "sandboxed-adapter",
"compatibility": "unsupported",
"roundTrip": false,
"status": "inventory-recorded"
},
{
"id": "CSV",
"category": "data",
"modules": [
"Spreadsheet"
],
"sourceEvidence": [
"src/Mod/Spreadsheet/App/SheetPyImp.cpp"
],
"webStrategy": "facade-parser",
"compatibility": "experimental",
"roundTrip": true,
"status": "inventory-recorded"
},
{
"id": "GCODE",
"category": "manufacturing",
"modules": [
"CAM"
],
"sourceEvidence": [
"src/Mod/CAM/PathCommands.py"
],
"webStrategy": "sandboxed-adapter",
"compatibility": "unsupported",
"roundTrip": false,
"status": "inventory-recorded"
},
{
"id": "JT",
"category": "geometry",
"modules": [
"JtReader"
],
"sourceEvidence": [
"src/Mod/JtReader/CMakeLists.txt"
],
"webStrategy": "proxy-resource",
"compatibility": "unsupported",
"roundTrip": false,
"status": "inventory-recorded"
},
{
"id": "IDF",
"category": "electronics",
"modules": [
"Idf"
],
"sourceEvidence": [
"src/Mod/Idf/Idf.py"
],
"webStrategy": "proxy-resource",
"compatibility": "unsupported",
"roundTrip": false,
"status": "inventory-recorded"
}
],
"entrypoints": [
{
"id": "python-api",
"category": "scripting",
"modules": [
"App",
"Gui"
],
"sourceEvidence": [
"src/App/ApplicationPy.cpp",
"src/Gui/ApplicationPy.cpp"
],
"webStrategy": "sandboxed-interpreter",
"compatibility": "unsupported",
"execution": false,
"status": "inventory-recorded"
},
{
"id": "macro-fcmacro",
"category": "scripting",
"modules": [
"Gui"
],
"sourceEvidence": [
"src/Gui/CommandMacro.cpp"
],
"webStrategy": "blocked-resource",
"compatibility": "unsupported",
"execution": false,
"status": "inventory-recorded"
},
{
"id": "addon-package",
"category": "extension",
"modules": [
"AddonManager"
],
"sourceEvidence": [
"src/Mod/AddonManager"
],
"webStrategy": "signed-catalog",
"compatibility": "unsupported",
"execution": false,
"status": "inventory-recorded"
},
{
"id": "preferences",
"category": "configuration",
"modules": [
"App",
"Gui"
],
"sourceEvidence": [
"src/Base/Parameter.cpp",
"src/Gui/PreferencePages"
],
"webStrategy": "namespaced-settings",
"compatibility": "experimental",
"execution": false,
"status": "inventory-recorded"
},
{
"id": "clipboard",
"category": "desktop",
"modules": [
"Gui"
],
"sourceEvidence": [
"src/Gui/MainWindow.cpp"
],
"webStrategy": "browser-clipboard-permission",
"compatibility": "unsupported",
"execution": false,
"status": "inventory-recorded"
},
{
"id": "print-job",
"category": "desktop",
"modules": [
"Gui",
"TechDraw"
],
"sourceEvidence": [
"src/Gui/MainWindow.cpp",
"src/Mod/TechDraw/Gui/PagePrinter.cpp"
],
"webStrategy": "server-export",
"compatibility": "unsupported",
"execution": false,
"status": "inventory-recorded"
}
],
"moduleCoverage": [
{
"name": "AddonManager",
"sourcePath": "src/Mod/AddonManager",
"coveredBy": [
"addon-package"
],
"status": "entrypoint-covered"
},
{
"name": "Assembly",
"sourcePath": "src/Mod/Assembly",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "BIM",
"sourcePath": "src/Mod/BIM",
"coveredBy": [
"IFC"
],
"status": "entrypoint-covered"
},
{
"name": "CAM",
"sourcePath": "src/Mod/CAM",
"coveredBy": [
"GCODE"
],
"status": "entrypoint-covered"
},
{
"name": "Cloud",
"sourcePath": "src/Mod/Cloud",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Draft",
"sourcePath": "src/Mod/Draft",
"coveredBy": [
"DXF",
"SVG"
],
"status": "entrypoint-covered"
},
{
"name": "Fem",
"sourcePath": "src/Mod/Fem",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Help",
"sourcePath": "src/Mod/Help",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Idf",
"sourcePath": "src/Mod/Idf",
"coveredBy": [
"IDF"
],
"status": "entrypoint-covered"
},
{
"name": "Import",
"sourcePath": "src/Mod/Import",
"coveredBy": [
"STEP",
"IGES",
"DXF"
],
"status": "entrypoint-covered"
},
{
"name": "Inspection",
"sourcePath": "src/Mod/Inspection",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "JtReader",
"sourcePath": "src/Mod/JtReader",
"coveredBy": [
"JT"
],
"status": "entrypoint-covered"
},
{
"name": "Material",
"sourcePath": "src/Mod/Material",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Measure",
"sourcePath": "src/Mod/Measure",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Mesh",
"sourcePath": "src/Mod/Mesh",
"coveredBy": [
"STL",
"OBJ",
"PLY"
],
"status": "entrypoint-covered"
},
{
"name": "MeshPart",
"sourcePath": "src/Mod/MeshPart",
"coveredBy": [
"STL"
],
"status": "entrypoint-covered"
},
{
"name": "OpenSCAD",
"sourcePath": "src/Mod/OpenSCAD",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Part",
"sourcePath": "src/Mod/Part",
"coveredBy": [
"BREP",
"STEP",
"IGES"
],
"status": "entrypoint-covered"
},
{
"name": "PartDesign",
"sourcePath": "src/Mod/PartDesign",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Plot",
"sourcePath": "src/Mod/Plot",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Points",
"sourcePath": "src/Mod/Points",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "ReverseEngineering",
"sourcePath": "src/Mod/ReverseEngineering",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Robot",
"sourcePath": "src/Mod/Robot",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Sandbox",
"sourcePath": "src/Mod/Sandbox",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Show",
"sourcePath": "src/Mod/Show",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Sketcher",
"sourcePath": "src/Mod/Sketcher",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Spreadsheet",
"sourcePath": "src/Mod/Spreadsheet",
"coveredBy": [
"CSV"
],
"status": "entrypoint-covered"
},
{
"name": "Start",
"sourcePath": "src/Mod/Start",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Surface",
"sourcePath": "src/Mod/Surface",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "TechDraw",
"sourcePath": "src/Mod/TechDraw",
"coveredBy": [
"SVG",
"PDF",
"print-job"
],
"status": "entrypoint-covered"
},
{
"name": "TemplatePyMod",
"sourcePath": "src/Mod/TemplatePyMod",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Test",
"sourcePath": "src/Mod/Test",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Tux",
"sourcePath": "src/Mod/Tux",
"coveredBy": [],
"status": "scope-only"
},
{
"name": "Web",
"sourcePath": "src/Mod/Web",
"coveredBy": [],
"status": "scope-only"
}
],
"policy": {
"unsupportedExecution": [
"Python API",
"FCMacro",
"addon package",
"clipboard",
"print job"
],
"unknownOrUnlistedEntries": "fail-inventory-check",
"untrustedContent": "never-execute"
}
}

View File

@@ -0,0 +1,20 @@
{
"schemaVersion": 1,
"baselineId": "freecad-1.1.1-composite-history-elementmap2",
"requiredCases": 30,
"requiredFreecadVersion": "1.1.1",
"requiredFreecadCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"requirements": {
"wrongBindings": 0,
"unexplainedRelations": 0,
"roundtripNameDrift": 0,
"elementMap2ParseFailures": 0,
"elementMap2SemanticFailures": 0,
"elementMap2TokenWriterFailures": 0,
"stringHasherParseFailures": 0,
"stringHasherSemanticFailures": 0,
"stringHasherEvidenceFailures": 0,
"namingEvidenceMissing": 0,
"namingEvidenceBoundaryViolations": 0
}
}

View File

@@ -0,0 +1,215 @@
{
"schemaVersion": 1,
"baseline": {
"freecadVersion": "1.1.1",
"freecadCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"bitbybitVersion": "1.1.1",
"occtNativeVersion": "8.0.0"
},
"lanes": [
{ "id": "ORACLE", "ownerRole": "FreeCAD reference and inventory", "scope": "Desktop/headless oracle, manifests, golden fixtures" },
{ "id": "KERNEL", "ownerRole": "Geometry kernel and WASM", "scope": "Bitbybit, OCCT bindings, Workers, shape ownership" },
{ "id": "TOPO", "ownerRole": "Topology naming", "scope": "TopoRef, history, signatures, migration and selection" },
{ "id": "SKETCH", "ownerRole": "Sketcher solver", "scope": "planegcs, constraints, sketch editing and diagnostics" },
{ "id": "CORE", "ownerRole": "Parametric document core", "scope": "Document, DAG, Part, PartDesign, Body and attachment" },
{ "id": "IO", "ownerRole": "Persistence and interoperability", "scope": "FCStd, BRep resources, formats and round-trip" },
{ "id": "DOC", "ownerRole": "Production workbenches", "scope": "TechDraw, Spreadsheet, Draft and Plot" },
{ "id": "ENGINEERING", "ownerRole": "Engineering workbenches", "scope": "Assembly, BIM, Mesh and Surface" },
{ "id": "PLATFORM", "ownerRole": "Analysis and platform capabilities", "scope": "FEM, CAM, Robot, Inspection, data, addons and scripts" },
{ "id": "QUALITY", "ownerRole": "Quality and release", "scope": "Browsers, performance, security, migrations and release" }
],
"gates": [
{ "id": "G0", "title": "Reference inventory", "requiredPrograms": ["P01"] },
{ "id": "G1", "title": "Browser geometry kernel", "requiredPrograms": ["P02"] },
{ "id": "G2", "title": "Stable topology", "requiredPrograms": ["P03"] },
{ "id": "G3", "title": "Sketcher parity", "requiredPrograms": ["P04"] },
{ "id": "G4", "title": "Parametric Part and PartDesign", "requiredPrograms": ["P05"] },
{ "id": "G5", "title": "FCStd round-trip", "requiredPrograms": ["P06"] },
{ "id": "G6", "title": "Production workbenches", "requiredPrograms": ["P07"] },
{ "id": "G7", "title": "Engineering workbenches", "requiredPrograms": ["P08"] },
{ "id": "G8", "title": "Analysis and platform", "requiredPrograms": ["P09"] },
{ "id": "G9", "title": "Release", "requiredPrograms": ["P10"] }
],
"programs": [
{
"id": "P01",
"title": "Complete desktop FreeCAD oracle and 34-module inventory",
"ownerLane": "ORACLE",
"dependencies": [],
"gate": "G0",
"tasks": [
{ "id": "ORA-01", "title": "Create full desktop oracle build profile", "status": "completed", "dependencies": [], "deliverables": ["Pinned GUI/workbench CMake profile", "Build manifest and hashes"], "acceptance": ["Clean build reports FreeCAD 1.1.1 at the locked commit", "GUI and workbench modules are probeable"] },
{ "id": "ORA-02", "title": "Extend runtime probe for GUI and module failure classes", "status": "completed", "dependencies": ["ORA-01"], "deliverables": ["GUI-aware probe", "Compiled/import/gui-only status model"], "acceptance": ["Probe distinguishes missing build, import failure and GUI-only", "Report is deterministic JSON"] },
{ "id": "INV-01", "title": "Generate 34-module and workbench inventory", "status": "completed", "dependencies": ["ORA-02"], "deliverables": ["Module/workbench/command manifest", "Source locations"], "acceptance": ["All src/Mod directories are classified", "No unregistered workbench command"] },
{ "id": "INV-02", "title": "Inventory TypeId and Property metadata", "status": "completed", "dependencies": ["ORA-02"], "deliverables": ["TypeId/property/default/status manifest", "Source-traceable static TypeId/property candidate inventory", "Minimal object fixtures"], "acceptance": ["Core objects trace to source and runtime", "Read-only/hidden/output flags are recorded", "Static candidates are reproducible from the locked source checkout and remain explicitly unpromoted until runtime probes confirm them"] },
{ "id": "INV-03", "title": "Inventory GUI commands and selection preconditions", "status": "completed", "dependencies": ["INV-01"], "deliverables": ["Menu/toolbar/context/shortcut map", "Selection and task preconditions"], "acceptance": ["Every GUI command has enabled/disabled oracle cases"] },
{ "id": "INV-04", "title": "Inventory formats, preferences, Python and addon entry points", "status": "completed", "dependencies": ["INV-01"], "deliverables": ["Format and optional-library matrix", "Preference/API/addon inventory"], "acceptance": ["Every entry has web strategy and compatibility level"] },
{ "id": "BASE-03", "title": "Expand oracle fixtures", "status": "completed", "dependencies": ["INV-02", "INV-03"], "deliverables": ["100 success fixtures", "51 failure fixtures"], "acceptance": ["Fixtures cover core objects, units, topology changes and errors"] },
{ "id": "BASE-04", "title": "Build oracle-to-Web semantic comparator", "status": "completed", "dependencies": ["BASE-03"], "deliverables": ["Tree/property/shape/topology comparator", "Diff report schema"], "acceptance": ["Known differences are explicit", "Unknown differences fail the gate"] }
]
},
{
"id": "P02",
"title": "Native OCCT Worker browser execution and Boolean gates",
"ownerLane": "KERNEL",
"dependencies": ["P01"],
"gate": "G1",
"tasks": [
{ "id": "BYB-03", "title": "Reproducible Bitbybit and OCCT source build", "status": "completed", "dependencies": ["ORA-01"], "deliverables": ["Pinned toolchain build", "Patch, ABI, hash and license manifest"], "acceptance": ["Clean rebuild has the declared exports and traceable hashes"] },
{ "id": "BYB-05", "title": "Version and harden Worker protocol", "status": "completed", "dependencies": ["BYB-03"], "deliverables": ["Capabilities handshake", "Cancellation, timeout, crash and stale-result protocol"], "acceptance": ["Malformed messages fail safely", "Restart does not accept stale results"] },
{ "id": "BYB-06", "title": "Define shape ownership and release accounting", "status": "completed", "dependencies": ["BYB-05"], "deliverables": ["Ownership ledger", "Reference counting and disposal metrics", "Browser Worker crash recovery and reinitialization contract"], "acceptance": ["No use-after-release", "Long Boolean sessions remain within memory budget", "A failed Worker is replaced before a retry and pending requests are rejected"] },
{ "id": "BROWSER-OCCT-01", "title": "Instantiate native history WASM in Chrome", "status": "completed", "dependencies": ["BYB-05"], "deliverables": ["Chrome harness", "COOP/COEP, OPFS, and artifact-loading evidence"], "acceptance": ["JS/WASM Worker initializes in Chrome", "Abort and worker crash are recoverable"] },
{ "id": "BYB-07", "title": "Run three-way Boolean golden comparison", "status": "completed", "dependencies": ["BROWSER-OCCT-01", "BASE-04"], "deliverables": ["Fuse/Cut/Common FreeCAD-Bitbybit-native reports", "Tolerance and error taxonomy"], "acceptance": ["Geometry and history differences are explained", "No silent topology mismatch"] },
{ "id": "MEM-OCCT-01", "title": "Enforce Worker memory gate", "status": "completed", "dependencies": ["BYB-06", "BYB-07"], "deliverables": ["1000-operation stress fixture", "Heap/WASM/GPU retention report"], "acceptance": ["Peak and retained memory meet budgets", "All temporary shapes are accounted for"] },
{ "id": "BYB-08", "title": "Automate upstream ABI and golden drift", "status": "completed", "dependencies": ["BYB-07"], "deliverables": ["API/ABI diff job", "Golden drift report"], "acceptance": ["Dependency upgrades cannot silently change capabilities"] }
]
},
{
"id": "P03",
"title": "Stable TopoRef, signatures and mutation replay",
"ownerLane": "TOPO",
"dependencies": ["P02"],
"gate": "G2",
"tasks": [
{ "id": "TSN-03", "title": "Complete native history coverage", "status": "completed", "dependencies": ["BYB-07"], "deliverables": ["Generated/Modified/Deleted for Boolean and features"], "acceptance": ["Every source subshape has an explainable relation"] },
{ "id": "TSN-04", "title": "Implement analytic curve and surface signatures", "status": "completed", "dependencies": ["TSN-03"], "deliverables": ["Curve/surface parameter signatures", "Orientation and tolerance normalization"], "acceptance": ["Signatures do not depend on triangulation precision"] },
{ "id": "TSN-05", "title": "Add adjacency and confidence matching", "status": "completed", "dependencies": ["TSN-04"], "deliverables": ["Adjacency graph", "One-to-one/one-to-many scoring"], "acceptance": ["Rigid transforms and parameter edits retain safe references"] },
{ "id": "TSN-06", "title": "Handle symmetry, split and merge ambiguity", "status": "completed", "dependencies": ["TSN-05"], "deliverables": ["Ambiguity policy", "Candidate and confidence diagnostics"], "acceptance": ["Low confidence never binds silently"] },
{ "id": "TSN-07", "title": "Map Boolean, Pattern and cross-Body history", "status": "completed", "dependencies": ["TSN-03", "TSN-06"], "deliverables": ["Multi-input source mapping", "Pattern instance lineage"], "acceptance": ["Every result relation identifies its source object"] },
{ "id": "TSN-08", "title": "Persist and migrate TopoRef everywhere", "status": "completed", "dependencies": ["TSN-07"], "deliverables": ["LinkSub/external geometry/FCStd migration", "Schema upgrade fixtures"], "acceptance": ["Save/load and version upgrades preserve stable/ambiguous/deleted states"] },
{ "id": "TSN-09", "title": "Connect 3D pick, preselect and candidate repair", "status": "completed", "dependencies": ["TSN-08"], "deliverables": ["Facade selection contract", "Candidate highlight and repair flow"], "acceptance": ["UI never persists transient mesh indexes"] },
{ "id": "TSN-10", "title": "Run parameter mutation and fuzz replay", "status": "completed", "dependencies": ["TSN-07", "TSN-09"], "deliverables": ["100-model/1000-mutation suite", "Wrong-bind audit"], "acceptance": ["No silent wrong binding", "All ambiguity is diagnosable"] }
]
},
{
"id": "P04",
"title": "planegcs WASM and complete Sketcher constraints",
"ownerLane": "SKETCH",
"dependencies": ["P01", "P03"],
"gate": "G3",
"tasks": [
{ "id": "SK-03", "title": "Build planegcs WASM", "status": "completed", "dependencies": ["ORA-01"], "deliverables": ["Minimal source graph", "Emscripten build and hashes"], "acceptance": ["Deterministic solve works in a dedicated Worker"] },
{ "id": "SK-04", "title": "Finalize solver protocol and lifecycle", "status": "completed", "dependencies": ["SK-03"], "deliverables": ["Capabilities and diagnostics", "Cancel/stale/crash recovery"], "acceptance": ["Provider replacement does not change Facade contracts"] },
{ "id": "SK-05", "title": "Complete sketch geometry model", "status": "completed", "dependencies": ["SK-04"], "deliverables": ["Ellipse, B-spline, periodic and construction geometry"], "acceptance": ["Geometry round-trips with stable IDs"] },
{ "id": "SK-06", "title": "Implement complete geometric constraints", "status": "completed", "dependencies": ["SK-04", "SK-05"], "deliverables": ["Coincident through block constraint set"], "acceptance": ["Each constraint has FreeCAD success and failure fixtures"] },
{ "id": "SK-07", "title": "Implement dimensional/reference constraints and diagnoses", "status": "completed", "dependencies": ["SK-06"], "deliverables": ["Driving/reference dimensions", "DOF/redundant/conflicting classification"], "acceptance": ["Solver classifications match FreeCAD fixtures"] },
{ "id": "SK-08", "title": "Implement support and external geometry", "status": "completed", "dependencies": ["TSN-09", "SK-06"], "deliverables": ["Plane/face support", "Projection and CarbonCopy"], "acceptance": ["Upstream topology migration updates sketch references safely"] },
{ "id": "SK-09", "title": "Complete interactive editor", "status": "completed", "dependencies": ["SK-07", "SK-08"], "deliverables": ["Trim/extend/split/drag/autoconstraint", "Keyboard and pointer replay"], "acceptance": ["Editing and task lifecycle match oracle behavior"] },
{ "id": "SK-10", "title": "Complete B-spline editing", "status": "completed", "dependencies": ["SK-05", "SK-09"], "deliverables": ["Poles/knots/weights/degree/periodic editing"], "acceptance": ["B-spline constraints and round-trip fixtures pass"] },
{ "id": "SK-11", "title": "Validate feature profiles", "status": "completed", "dependencies": ["SK-08", "SK-10"], "deliverables": ["Open/closed/multi-ring/self-intersection classifier"], "acceptance": ["PartDesign consumes profiles with FreeCAD-compatible errors"] },
{ "id": "SK-12", "title": "Run Sketcher golden and stress suite", "status": "completed", "dependencies": ["SK-07", "SK-09", "SK-11"], "deliverables": ["500-model suite", "Solve time and determinism report"], "acceptance": ["Success, conflict, redundancy and drag cases pass budgets"] }
]
},
{
"id": "P05",
"title": "Part and PartDesign parametric closure",
"ownerLane": "CORE",
"dependencies": ["P03", "P04"],
"gate": "G4",
"tasks": [
{ "id": "CORE-09", "title": "Complete Body, Origin and Tip rules", "status": "completed", "dependencies": ["TSN-08"], "deliverables": ["Feature ordering and Tip redirection", "Single-solid enforcement"], "acceptance": ["Suppression, deletion and reorder match FreeCAD"] },
{ "id": "CORE-10", "title": "Implement Support and MapMode", "status": "completed", "dependencies": ["TSN-09", "CORE-09"], "deliverables": ["Support schema", "Attachment engine modes"], "acceptance": ["Face/plane support survives topology migration"] },
{ "id": "CORE-11", "title": "Implement AttachmentOffset and local coordinates", "status": "completed", "dependencies": ["CORE-10"], "deliverables": ["Placement composition", "Local coordinate-chain tests"], "acceptance": ["Result placements match FreeCAD within tolerance"] },
{ "id": "PART-ALL", "title": "Complete Part objects and operations", "status": "completed", "dependencies": ["TSN-07", "CORE-11"], "deliverables": ["Primitive, Boolean, builder, modification and check operations"], "acceptance": ["Part command fixtures and STEP/IGES/BREP gates pass"] },
{ "id": "PD-BASE", "title": "Complete Pad, Pocket, Revolution and Groove modes", "status": "completed", "dependencies": ["SK-11", "CORE-11"], "deliverables": ["Lengths, to-face, through-all, taper and midplane modes"], "acceptance": ["Parameter edits recompute with native history"] },
{ "id": "PD-LOFT", "title": "Implement additive/subtractive loft and pipe", "status": "completed", "dependencies": ["PD-BASE"], "deliverables": ["Section/path/transition features"], "acceptance": ["Failure recovery retains the last valid shape"] },
{ "id": "PD-DRESSUP", "title": "Complete dress-up features", "status": "completed", "dependencies": ["TSN-09", "PD-BASE"], "deliverables": ["Fillet/chamfer/draft/thickness with stable selections"], "acceptance": ["Edge/face changes migrate or report ambiguity"] },
{ "id": "PD-TRANSFORM", "title": "Complete transforms and Hole", "status": "completed", "dependencies": ["CORE-10", "PD-DRESSUP"], "deliverables": ["Feature-list transforms", "Full Hole standards and placement"], "acceptance": ["Single-solid, axis/plane and thread semantics are tested"] },
{ "id": "PD-CLOSURE", "title": "Run full parametric lifecycle", "status": "completed", "dependencies": ["PART-ALL", "PD-LOFT", "PD-TRANSFORM"], "deliverables": ["Create/edit/recompute/undo/save/load suite"], "acceptance": ["No stale shapes or broken Tip/Support references"] }
]
},
{
"id": "P06",
"title": "FCStd bidirectional round-trip",
"ownerLane": "IO",
"dependencies": ["P03", "P05"],
"gate": "G5",
"tasks": [
{ "id": "FC-04", "title": "Map Document.xml and GuiDocument.xml", "status": "completed", "dependencies": ["INV-02"], "deliverables": ["Object/property/extension mapper", "View state mapper"], "acceptance": ["Known metadata round-trips without semantic loss"] },
{ "id": "FC-05", "title": "Read and write BRep/Shape resources", "status": "completed", "dependencies": ["PART-ALL", "FC-04"], "deliverables": ["Shape resource resolver", "Topology/precision/color report"], "acceptance": ["Shape counts and mass properties match oracle"] },
{ "id": "FC-06", "title": "Serialize expressions, links, TopoRef and Sketcher", "status": "completed", "dependencies": ["TSN-08", "SK-12", "FC-04"], "deliverables": ["Typed property codecs", "Reference migration report"], "acceptance": ["FreeCAD can recompute supported objects after save"] },
{ "id": "FC-07", "title": "Preserve unknown XML and resources", "status": "completed", "dependencies": ["FC-04"], "deliverables": ["Opaque extension store", "Script isolation metadata"], "acceptance": ["Unknown/proxy bytes survive read-write unchanged"] },
{ "id": "FC-08", "title": "Complete STEP, IGES and BREP exchange", "status": "completed", "dependencies": ["FC-05"], "deliverables": ["Import/export adapters", "Units/colors/tolerance report"], "acceptance": ["100-model format golden suite passes"] },
{ "id": "FC-09", "title": "Complete secondary format adapters", "status": "completed", "dependencies": ["FC-08"], "deliverables": ["Mesh/2D/BIM/data format matrix"], "acceptance": ["Each format has success, failure and round-trip evidence"] },
{ "id": "FC-10", "title": "Run FreeCAD-Web-FreeCAD round-trip", "status": "completed", "dependencies": ["FC-05", "FC-06", "FC-07"], "deliverables": ["Core editable-object reports", "Proxy byte-preservation reports"], "acceptance": ["No silent loss", "All differences are classified"] },
{ "id": "FC-11", "title": "Harden large and corrupt file handling", "status": "completed", "dependencies": ["FC-10"], "deliverables": ["Streaming/limit/cancel/recovery tests"], "acceptance": ["Files within limits do not crash", "Over-limit files fail explicitly"] }
]
},
{
"id": "P07",
"title": "TechDraw, Spreadsheet, Draft and Plot",
"ownerLane": "DOC",
"dependencies": ["P05", "P06"],
"gate": "G6",
"tasks": [
{ "id": "TD-ALL", "title": "Complete TechDraw", "status": "completed", "dependencies": ["TSN-09", "FC-06"], "deliverables": ["Pages/views/sections/dimensions/annotations", "SVG/PDF output"], "acceptance": ["Projection, scale and TopoRef update fixtures pass"] },
{ "id": "SS-ALL", "title": "Complete Spreadsheet", "status": "completed", "dependencies": ["FC-06"], "deliverables": ["Cells/formulas/aliases/styles/bindings", "CSV and large-sheet support"], "acceptance": ["DAG cycles and object bindings match FreeCAD"] },
{ "id": "DRAFT-BASE", "title": "Complete Draft geometry and working plane", "status": "completed", "dependencies": ["CORE-11", "SK-12"], "deliverables": ["Working plane/snap/grid", "Parametric 2D objects"], "acceptance": ["Creation and edit fixtures match oracle"] },
{ "id": "DRAFT-OPS", "title": "Complete Draft operations and layers", "status": "completed", "dependencies": ["DRAFT-BASE"], "deliverables": ["Move/rotate/scale/offset/trim/array/clone", "Layer behavior"], "acceptance": ["Dependencies and round-trip remain parametric"] },
{ "id": "PLOT-ALL", "title": "Complete Plot", "status": "completed", "dependencies": ["SS-ALL"], "deliverables": ["Series/axes/legend/styles/bindings", "Image/SVG/CSV output"], "acceptance": ["Bound plots update deterministically"] },
{ "id": "DOC-CLOSURE", "title": "Run production-document workflow", "status": "completed", "dependencies": ["TD-ALL", "SS-ALL", "DRAFT-OPS", "PLOT-ALL"], "deliverables": ["Cross-workbench document fixtures"], "acceptance": ["Create/edit/save/load/export succeeds across all four workbenches"] }
]
},
{
"id": "P08",
"title": "Assembly, BIM, Mesh and Surface",
"ownerLane": "ENGINEERING",
"dependencies": ["P05", "P06"],
"gate": "G7",
"tasks": [
{ "id": "ASM-CORE", "title": "Implement Assembly model and solver", "status": "completed", "dependencies": ["CORE-09", "FC-06"], "deliverables": ["Components/links/LCS/joints", "Solver Worker and diagnostics"], "acceptance": ["Fixed, distance, angle and motion fixtures pass"] },
{ "id": "ASM-TOOLS", "title": "Complete Assembly tools", "status": "completed", "dependencies": ["ASM-CORE"], "deliverables": ["Collision/exploded view/BOM/variants"], "acceptance": ["Large assembly and FCStd gates pass"] },
{ "id": "BIM-CORE", "title": "Implement BIM object model", "status": "completed", "dependencies": ["DRAFT-OPS", "SS-ALL"], "deliverables": ["Site/building/level/space and elements", "Materials and property sets"], "acceptance": ["Parametric edits and quantity schedules pass"] },
{ "id": "BIM-IFC", "title": "Implement IFC interoperability", "status": "completed", "dependencies": ["BIM-CORE", "FC-09"], "deliverables": ["IFC2x3/IFC4 import/export", "Classification and proxy report"], "acceptance": ["Geometry, hierarchy and properties round-trip"] },
{ "id": "MESH-CORE", "title": "Complete Mesh and MeshPart", "status": "completed", "dependencies": ["FC-09", "BYB-06"], "deliverables": ["Import/export/convert/analyze/repair", "Worker and LOD pipeline"], "acceptance": ["Non-manifold/self-intersection/hole fixtures pass"] },
{ "id": "SURF-CORE", "title": "Complete Surface modeling", "status": "completed", "dependencies": ["TSN-04", "PART-ALL"], "deliverables": ["Bezier/BSpline/fill/offset/trim/join", "Continuity and tolerance diagnostics"], "acceptance": ["Surface geometry and TopoRef fixtures pass"] },
{ "id": "ENG-CLOSURE", "title": "Run engineering-workbench integration", "status": "completed", "dependencies": ["ASM-TOOLS", "BIM-IFC", "MESH-CORE", "SURF-CORE"], "deliverables": ["Large mixed engineering projects"], "acceptance": ["Cross-workbench save/load and performance budgets pass"] }
]
},
{
"id": "P09",
"title": "FEM, CAM, Robot, Inspection, data, addons and scripting",
"ownerLane": "PLATFORM",
"dependencies": ["P06", "P08"],
"gate": "G8",
"tasks": [
{ "id": "FEM-ALL", "title": "Complete FEM workflow", "status": "completed", "dependencies": ["MESH-CORE", "BIM-CORE"], "deliverables": ["Analysis/material/sets/loads/meshing", "Solver strategy and result fields"], "acceptance": ["Reference solves or explicit remote capability pass"] },
{ "id": "CAM-ALL", "title": "Complete CAM workflow", "status": "completed", "dependencies": ["PART-ALL", "MESH-CORE"], "deliverables": ["Job/stock/tools/operations/simulation", "Sandboxed posts and G-code"], "acceptance": ["Collision, simulation and G-code golden tests pass"] },
{ "id": "ROBOT-ALL", "title": "Complete Robot workflow", "status": "completed", "dependencies": ["ASM-CORE", "MESH-CORE"], "deliverables": ["Robot/axes/poses/trajectory/kinematics", "Collision and controller export"], "acceptance": ["Motion and workspace fixtures pass"] },
{ "id": "INSP-ALL", "title": "Complete Inspection and Measure", "status": "completed", "dependencies": ["TSN-09", "SURF-CORE"], "deliverables": ["Measurements/sections/deviation/checks", "TopoRef reports"], "acceptance": ["Units, precision and report export match oracle"] },
{ "id": "DATA-ALL", "title": "Complete data and specialist modules", "status": "completed", "dependencies": ["FC-09", "MESH-CORE", "SURF-CORE"], "deliverables": ["Points/RE/OpenSCAD/IDF/JT/Material/Import"], "acceptance": ["Every source module has a tested adapter or explicit proxy"] },
{ "id": "ADDON-ALL", "title": "Implement addon governance", "status": "completed", "dependencies": ["DATA-ALL"], "deliverables": ["Signed catalog/install/update/remove", "Permissions, isolation and rollback"], "acceptance": ["Untrusted addons cannot bypass Facade or permissions"] },
{ "id": "SCRIPT-ALL", "title": "Implement scripting and macro capability", "status": "completed", "dependencies": ["ADDON-ALL"], "deliverables": ["API compatibility map", "Sandboxed interpreter and macro replay"], "acceptance": ["File/network/time/resource permissions are enforced"] },
{ "id": "PLATFORM-CLOSURE", "title": "Close all long-tail modules", "status": "completed", "dependencies": ["FEM-ALL", "CAM-ALL", "ROBOT-ALL", "INSP-ALL", "SCRIPT-ALL"], "deliverables": ["34-module coverage report"], "acceptance": ["No scope-only or unexplained unsupported entry remains"] }
]
},
{
"id": "P10",
"title": "QA, browsers, performance, security, migrations and release",
"ownerLane": "QUALITY",
"dependencies": ["P01", "P02", "P03", "P04", "P05", "P06", "P07", "P08", "P09"],
"gate": "G9",
"tasks": [
{ "id": "QA-01", "title": "Enforce unit and property coverage", "status": "completed", "dependencies": [], "deliverables": ["Coverage and invariant gates"], "acceptance": ["Core error branches and parsers are covered"] },
{ "id": "QA-02", "title": "Enforce FreeCAD CLI and GUI comparison", "status": "completed", "dependencies": ["BASE-04"], "deliverables": ["Per-command success/failure fixtures"], "acceptance": ["Every compatible command has oracle evidence"] },
{ "id": "QA-03", "title": "Run Chrome E2E and visual baselines", "status": "completed", "dependencies": ["BROWSER-OCCT-01"], "deliverables": ["Chrome matrix", "Desktop/mobile screenshots"], "acceptance": ["Core workflows have no blocking divergence"] },
{ "id": "QA-04", "title": "Run geometry, solver and parser fuzzing", "status": "completed", "dependencies": ["TSN-10", "SK-12"], "deliverables": ["Seeded fuzz suites", "Crash and wrong-bind corpus"], "acceptance": ["Random inputs do not crash or silently corrupt"] },
{ "id": "QA-05", "title": "Enforce performance and memory budgets", "status": "completed", "dependencies": ["MEM-OCCT-01", "ENG-CLOSURE"], "deliverables": ["1000-object/million-triangle/large-table reports"], "acceptance": ["P95 and peak memory meet declared budgets"] },
{ "id": "QA-06", "title": "Run Worker, WASM and OPFS fault injection", "status": "completed", "dependencies": ["FC-11", "QA-03"], "deliverables": ["Crash/quota/power-loss/stale-result matrix"], "acceptance": ["Recovery is deterministic and data loss is reported"] },
{ "id": "QA-07", "title": "Complete security gates", "status": "completed", "dependencies": ["SCRIPT-ALL", "FC-11"], "deliverables": ["File/message/script/addon fuzzing", "CSP and permission report"], "acceptance": ["No critical unmitigated finding"] },
{ "id": "QA-08", "title": "Complete accessibility and internationalization", "status": "completed", "dependencies": ["DOC-CLOSURE"], "deliverables": ["Keyboard/screen-reader/locale/mobile matrix"], "acceptance": ["Core workflows meet target accessibility criteria"] },
{ "id": "REL-01", "title": "Complete deployment and offline gates", "status": "completed", "dependencies": ["QA-03", "QA-06"], "deliverables": ["PWA/cache/COOP/COEP/CSP runbook"], "acceptance": ["Install, upgrade, offline and cache recovery pass"] },
{ "id": "REL-02", "title": "Complete migration and rollback rehearsal", "status": "completed", "dependencies": ["FC-10", "QA-06"], "deliverables": ["Supported-version migration matrix", "Rollback or lossless export"], "acceptance": ["Every supported version has a tested recovery route"] },
{ "id": "REL-03", "title": "Generate SBOM, licenses and signed artifacts", "status": "completed", "dependencies": ["PLATFORM-CLOSURE"], "deliverables": ["SBOM/license/vulnerability report", "Signed release artifacts"], "acceptance": ["No unknown binary or unresolved critical issue"] },
{ "id": "REL-04", "title": "Publish final capability and difference matrix", "status": "completed", "dependencies": ["QA-01", "QA-02", "QA-03", "QA-04", "QA-05", "QA-06", "QA-07", "QA-08", "REL-01", "REL-02", "REL-03"], "deliverables": ["Exact/compatible/proxy/unsupported report", "Release runbook"], "acceptance": ["G0 through G9 pass", "No unexplained unsupported capability"] }
]
}
],
"rules": [
"A task is complete only when every deliverable exists and every acceptance condition has executable evidence.",
"Program dependencies and task dependencies are blocking; UI prototypes do not satisfy them.",
"All Node and npm commands use ./npmw.",
"Capability levels are updated only after the relevant gate passes.",
"Browser-restricted desktop features require an explicit proxy or unsupported decision with data preservation."
]
}

View File

@@ -0,0 +1,930 @@
{
"schemaVersion": 1,
"baselineId": "freecad-1.1.1",
"freecadCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"bitbybitVersion": "1.1.1",
"unknownDifferencesFail": true,
"directions": [
"freecad-web-freecad",
"web-freecad-web"
],
"scenarioCount": 23,
"scenarios": [
{
"id": "proxy-byte-preservation",
"direction": "freecad-web-freecad",
"stages": [
"freecad-source",
"web-inspect",
"web-byte-preserving-write",
"byte-compare",
"freecad-open",
"freecad-resave",
"web-inspect-resaved"
],
"domains": [
"objectTree",
"properties",
"gui",
"resources",
"proxy"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"sourceArchiveBytes": 49349,
"preservedArchiveBytes": 49349,
"sourceSha256": "a8184e071ce36e22f6407dcb5d789946003dc0031dbdaf261130fb15171cf8ab",
"preservedSha256": "a8184e071ce36e22f6407dcb5d789946003dc0031dbdaf261130fb15171cf8ab",
"byteIdentical": true,
"proxyObjectCount": 8,
"blockedObjectCount": 0,
"unknownTypeIds": [
"App::Line",
"App::Origin",
"App::Plane",
"App::Point"
],
"resavedObjectCount": 17,
"resavedProxyObjectCount": 8,
"resavedShapeValid": true
}
},
{
"id": "locked-partdesign-shape",
"direction": "freecad-web-freecad",
"stages": [
"freecad-source",
"web-inspect",
"web-write",
"freecad-open",
"freecad-resave",
"web-inspect-resaved"
],
"domains": [
"shape",
"topology",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"solidCount": 1,
"faceCount": 23,
"volume": 583719.3669394433,
"elementMapPostfixCount": 63,
"elementMapCount": 2,
"stringHasherBytes": 4669
}
},
{
"id": "part-box",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Box",
"solidCount": 1,
"faceCount": 6,
"volume": 23.999999999999996,
"boundingBox": {
"max": [
2,
3,
4
],
"min": [
0,
0,
0
]
},
"propertyCount": 5,
"resavedShapeAvailable": true
}
},
{
"id": "part-cylinder",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Cylinder",
"solidCount": 1,
"faceCount": 5,
"volume": 31.41592653589793,
"boundingBox": {
"max": [
2,
2,
5
],
"min": [
-2,
0,
0
]
},
"propertyCount": 3,
"resavedShapeAvailable": true
}
},
{
"id": "part-sphere",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Sphere",
"solidCount": 1,
"faceCount": 1,
"volume": 113.09733552923255,
"boundingBox": {
"max": [
3,
3,
3
],
"min": [
-3,
-3,
-3
]
},
"propertyCount": 1,
"resavedShapeAvailable": true
}
},
{
"id": "part-ellipsoid",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Ellipsoid",
"solidCount": 1,
"faceCount": 1,
"volume": 133.9826640573845,
"boundingBox": {
"max": [
4,
6.928203230275507,
2
],
"min": [
-7.999999999999998,
-6.9282032302755105,
-2
]
},
"propertyCount": 6,
"properties": {
"Angle1": -90,
"Angle2": 90,
"Angle3": 360,
"Radius1": 2,
"Radius2": 4,
"Radius3": 0
},
"resavedShapeAvailable": true
}
},
{
"id": "part-cone",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Cone",
"solidCount": 1,
"faceCount": 3,
"volume": 175.92918860102841,
"boundingBox": {
"max": [
4,
4,
6.000000000000001
],
"min": [
-4,
-4,
0
]
},
"propertyCount": 4,
"resavedShapeAvailable": true
}
},
{
"id": "part-torus",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Torus",
"solidCount": 1,
"faceCount": 3,
"volume": 592.1762640653616,
"boundingBox": {
"max": [
12.988706403508727,
12.988706403508727,
2
],
"min": [
-12.988706403508727,
-12.988706403508727,
-2
]
},
"propertyCount": 5,
"resavedShapeAvailable": true
}
},
{
"id": "part-prism",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Prism",
"solidCount": 1,
"faceCount": 8,
"volume": 103.92304845413267,
"boundingBox": {
"max": [
3.76326980708465,
1.7320508075688776,
10
],
"min": [
-2,
-2.6069374428281185,
0
]
},
"propertyCount": 5,
"properties": {
"Circumradius": 2,
"FirstAngle": 10,
"Height": 10,
"Polygon": 6,
"SecondAngle": -5
},
"resavedShapeAvailable": true
}
},
{
"id": "part-wedge",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Wedge",
"solidCount": 1,
"faceCount": 6,
"volume": 813.3333333333333,
"boundingBox": {
"max": [
10,
10.000000000000002,
10
],
"min": [
0,
0,
0
]
},
"propertyCount": 10,
"properties": {
"X2max": 8,
"X2min": 0,
"Xmax": 10,
"Xmin": 0,
"Ymax": 10,
"Ymin": 0,
"Z2max": 8,
"Z2min": 0,
"Zmax": 10,
"Zmin": 0
},
"resavedShapeAvailable": true
}
},
{
"id": "part-fuse",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Fuse",
"solidCount": 1,
"faceCount": 9,
"volume": 23.999999999999996,
"boundingBox": {
"max": [
2,
3,
4
],
"min": [
0,
0,
0
]
},
"propertyCount": 3,
"refine": false,
"resavedShapeAvailable": true
}
},
{
"id": "part-cut",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Cut",
"solidCount": 1,
"faceCount": 9,
"volume": 22.999999999999996,
"boundingBox": {
"max": [
2,
3,
4
],
"min": [
0,
0,
0
]
},
"propertyCount": 3,
"refine": false,
"resavedShapeAvailable": true
}
},
{
"id": "part-common",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Common",
"solidCount": 1,
"faceCount": 6,
"volume": 0.9999999999999998,
"boundingBox": {
"max": [
1,
1,
1
],
"min": [
0,
0,
0
]
},
"propertyCount": 3,
"refine": true,
"resavedShapeAvailable": true
}
},
{
"id": "part-cut-through-hole",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Cut",
"solidCount": 1,
"faceCount": 7,
"volume": 3717.256661176918,
"boundingBox": {
"max": [
20,
20,
10
],
"min": [
0,
0,
0
]
},
"propertyCount": 3,
"properties": {
"Base": "Base",
"Refine": false,
"Tool": "HoleTool"
},
"toolPlacement": {
"position": {
"x": 10,
"y": 10,
"z": -1
},
"rotation": {
"axis": {
"x": 0,
"y": 0,
"z": 1
},
"angle": 0
}
},
"refine": false,
"resavedShapeAvailable": true
}
},
{
"id": "part-sphere-trim",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"properties",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"solidCount": 1,
"faceCount": 5,
"volume": 154.26676868605438,
"boundingBox": {
"max": [
5,
5,
3.5355339059327373
],
"min": [
-2.499999999999999,
0,
-3.5355339059327386
]
},
"properties": {
"Angle1": -45,
"Angle2": 45,
"Angle3": 120,
"Radius": 5
},
"resavedShapeAvailable": true
}
},
{
"id": "part-extrusion",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"sketch",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Extrusion",
"solidCount": 1,
"faceCount": 6,
"volume": 30,
"properties": {
"Base": "FeatureProfile",
"DirMode": "Custom",
"LengthFwd": 5,
"LengthRev": 0,
"Reversed": false,
"Solid": true,
"Symmetric": false,
"TaperAngle": 0,
"TaperAngleRev": 0
},
"resavedShapeAvailable": true
}
},
{
"id": "part-revolution",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"sketch",
"shape",
"resources"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"typeId": "Part::Revolution",
"solidCount": 1,
"faceCount": 4,
"volume": 113.09733552923254,
"properties": {
"Angle": 360,
"Solid": true,
"Source": "FeatureProfile",
"Symmetric": false
},
"resavedShapeAvailable": true
}
},
{
"id": "sketch-core-external-attachment",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"objectTree",
"properties",
"sketch",
"topology"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"geometryCount": 10,
"constraintCount": 11,
"externalTypes": [
0
],
"mapMode": "FlatFace",
"roundTripGeometryIds": 10,
"roundTripConstraintIds": 11
}
},
{
"id": "sketch-face-projection",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"sketch",
"topology"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"externalTypes": [
0
],
"externalGeoCount": 6,
"roundTripIds": 4
}
},
{
"id": "sketch-external-modes",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"sketch",
"topology",
"properties"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"externalTypes": [
1,
2,
0
],
"externalGeoCount": 8,
"nativeFlags": [
1,
1,
1,
1,
1,
2
],
"roundTripModes": [
"intersection",
"both",
"both",
"both",
"both",
"projection"
]
}
},
{
"id": "sketch-snells-law",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"sketch",
"properties"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"geometryCount": 3,
"constraintTypes": [
"SnellsLaw"
],
"roundTripConstraints": 1
}
},
{
"id": "sketch-bspline-weight",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"sketch",
"properties"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"geometryCount": 2,
"constraintTypes": [
"InternalAlignment",
"Weight"
],
"roundTripConstraints": 1
}
},
{
"id": "sketch-internal-alignment",
"direction": "web-freecad-web",
"stages": [
"web-model",
"web-write",
"freecad-open",
"freecad-recompute",
"freecad-resave",
"web-inspect"
],
"domains": [
"sketch",
"properties"
],
"freecadVersion": "1.1.1",
"status": "pass",
"differences": [],
"evidence": {
"geometryCount": 7,
"constraintTypes": [
"InternalAlignment",
"InternalAlignment",
"InternalAlignment",
"InternalAlignment",
"InternalAlignment"
],
"roundTripConstraints": 5
}
}
],
"status": "verified"
}

View File

@@ -0,0 +1,65 @@
{
"schemaVersion": 1,
"baselineId": "freecad-1.1.1",
"sourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"parameterMutationPlan": "config/freecad-parameter-mutation-plan.json",
"successManifest": "fixtures/freecad-golden/manifest.json",
"failureManifest": "fixtures/freecad-golden/failures/manifest.json",
"supplementalSuccessManifest": "fixtures/freecad-golden/feature-families/manifest.json",
"supplementalFailureManifest": "fixtures/freecad-golden/feature-families/failures/manifest.json",
"compositeOracle": "config/freecad-composite-history-elementmap-oracle.json",
"fcstdRoundtrip": "config/freecad-fcstd-roundtrip-verification.json",
"browserGolden": "config/chrome-fcstd-golden-verification.json",
"browserPrimitiveEvidence": "config/chrome-part-primitives-verification.json",
"partdesignFailureOracle": "config/freecad-partdesign-failure-oracle.json",
"partdesignRevolutionGrooveOracle": "config/freecad-partdesign-revolution-groove-oracle.json",
"partdesignTransformOracle": "config/freecad-partdesign-transform-oracle.json",
"partBuildersOracle": "config/freecad-part-builders-oracle.json",
"historyEvidenceGlob": "config/chrome-native-*-history-verification.json",
"dimensions": [
"success-fixture",
"failure-fixture",
"native-history",
"composite-stage",
"elementmap2-resource",
"fcstd-roundtrip",
"browser-replay"
],
"families": [
{ "id": "Part::Box", "operationTypes": ["box"], "stageTypeIds": ["Part::Box"], "roundtripIds": ["part-box"], "browserOperations": ["box"] },
{ "id": "Part::Cylinder", "operationTypes": ["cylinder"], "stageTypeIds": ["Part::Cylinder"], "roundtripIds": ["part-cylinder"], "browserOperations": ["cylinder"] },
{ "id": "Part::Sphere", "operationTypes": ["sphere"], "stageTypeIds": [], "roundtripIds": ["part-sphere", "part-sphere-trim"], "browserOperations": ["sphere"] },
{ "id": "Part::Ellipsoid", "operationTypes": ["ellipsoid"], "stageTypeIds": [], "roundtripIds": ["part-ellipsoid"], "browserOperations": ["ellipsoid"] },
{ "id": "Part::Cone", "operationTypes": ["cone"], "stageTypeIds": [], "roundtripIds": ["part-cone"], "browserOperations": ["cone"] },
{ "id": "Part::Torus", "operationTypes": ["torus"], "stageTypeIds": [], "roundtripIds": ["part-torus"], "browserOperations": ["torus"] },
{ "id": "Part::Helix", "operationTypes": ["helix"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": ["helix"] },
{ "id": "Part::Prism", "operationTypes": ["prism"], "stageTypeIds": [], "roundtripIds": ["part-prism"], "browserOperations": ["prism"] },
{ "id": "Part::Wedge", "operationTypes": ["wedge"], "stageTypeIds": [], "roundtripIds": ["part-wedge"], "browserOperations": ["wedge"] },
{ "id": "Part::Fuse", "operationTypes": ["fuse"], "stageTypeIds": ["Part::Fuse"], "roundtripIds": ["part-fuse"], "browserOperations": ["fuse"] },
{ "id": "Part::Cut", "operationTypes": ["cut"], "stageTypeIds": ["Part::Cut"], "roundtripIds": ["part-cut", "part-cut-through-hole"], "browserOperations": ["cut"] },
{ "id": "Part::Common", "operationTypes": ["common"], "stageTypeIds": ["Part::Common"], "roundtripIds": ["part-common"], "browserOperations": ["common"] },
{ "id": "Part::Extrusion", "operationTypes": ["extrusion"], "stageTypeIds": [], "roundtripIds": ["part-extrusion"], "browserOperations": [] },
{ "id": "Part::Revolution", "operationTypes": ["revolution"], "stageTypeIds": [], "roundtripIds": ["part-revolution"], "browserOperations": [] },
{ "id": "Part::Loft", "operationTypes": ["loft"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [] },
{ "id": "Part::Sweep", "operationTypes": ["sweep"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [] },
{ "id": "Part::Fillet", "operationTypes": ["fillet"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [] },
{ "id": "Part::Chamfer", "operationTypes": ["chamfer"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [] },
{ "id": "PartDesign::Pad", "operationTypes": ["pad"], "stageTypeIds": ["PartDesign::Pad"], "roundtripIds": ["locked-partdesign-shape"], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-base-oracle.json", "ids": ["pad-tapered", "pad-midplane"] }] },
{ "id": "PartDesign::Pocket", "operationTypes": ["pocket"], "stageTypeIds": ["PartDesign::Pocket"], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-base-oracle.json", "ids": ["pocket-tapered", "pocket-through-all", "pocket-up-to-face"] }] },
{ "id": "PartDesign::Revolution", "operationTypes": ["partdesign-revolution"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [] },
{ "id": "PartDesign::Groove", "operationTypes": ["groove"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [] },
{ "id": "PartDesign::AdditiveLoft", "operationTypes": ["additive-loft"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-loft-oracle.json", "ids": ["additive-loft"] }] },
{ "id": "PartDesign::SubtractiveLoft", "operationTypes": ["subtractive-loft"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-loft-oracle.json", "ids": ["subtractive-loft"] }] },
{ "id": "PartDesign::AdditivePipe", "operationTypes": ["additive-pipe"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-loft-oracle.json", "ids": ["additive-pipe"] }] },
{ "id": "PartDesign::SubtractivePipe", "operationTypes": ["subtractive-pipe"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-loft-oracle.json", "ids": ["subtractive-pipe"] }] },
{ "id": "PartDesign::Fillet", "operationTypes": ["partdesign-fillet"], "stageTypeIds": ["PartDesign::Fillet"], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-dressup-oracle.json", "ids": ["fillet-selected-edge"] }] },
{ "id": "PartDesign::Chamfer", "operationTypes": ["partdesign-chamfer"], "stageTypeIds": ["PartDesign::Chamfer"], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-dressup-oracle.json", "ids": ["chamfer-selected-edge"] }] },
{ "id": "PartDesign::Draft", "operationTypes": ["draft"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-dressup-oracle.json", "ids": ["draft-selected-face"] }] },
{ "id": "PartDesign::Thickness", "operationTypes": ["thickness"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-dressup-oracle.json", "ids": ["thickness-selected-face"] }] },
{ "id": "PartDesign::Mirrored", "operationTypes": ["mirrored"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-transform-oracle.json", "ids": ["mirrored-feature-list"] }] },
{ "id": "PartDesign::MultiTransform", "operationTypes": ["multi-transform"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-transform-oracle.json", "ids": ["multi-transform-feature-list"] }] },
{ "id": "PartDesign::LinearPattern", "operationTypes": ["linear-pattern"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-transform-oracle.json", "ids": ["linear-feature-list"] }] },
{ "id": "PartDesign::PolarPattern", "operationTypes": ["polar-pattern"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-transform-oracle.json", "ids": ["polar-feature-list"] }] },
{ "id": "PartDesign::Hole", "operationTypes": ["hole"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-transform-oracle.json", "ids": ["iso-m6-tap-drill", "iso-m6-modeled-thread"] }] }
]
}

View File

@@ -0,0 +1,36 @@
{
"schemaVersion": 1,
"baselineId": "freecad-1.1.1",
"sourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"successFixtures": {
"manifest": "fixtures/freecad-golden/manifest.json",
"count": 100,
"replayCommand": "./npmw run test:golden:freecad -- --json",
"lastReplay": "passed"
},
"failureFixtures": {
"manifest": "fixtures/freecad-golden/failures/manifest.json",
"count": 51,
"replayCommand": "./npmw run test:golden:freecad:failures",
"lastReplay": "passed",
"acceptedOutcomes": ["exception", "invalid-shape"]
},
"supplementalFixtures": {
"successManifest": "fixtures/freecad-golden/feature-families/manifest.json",
"successCount": 5,
"failureManifest": "fixtures/freecad-golden/feature-families/failures/manifest.json",
"failureCount": 5,
"replayCommands": [
"./npmw run test:golden:freecad:families -- --json",
"./npmw run test:golden:freecad:family-failures"
],
"lastReplay": "passed"
},
"semanticComparator": {
"module": "scripts/freecad-semantic-comparator.mjs",
"reportSchemaVersion": 1,
"unknownDifferencesFail": true,
"domains": ["identity", "shape", "topology", "objectTree", "properties"]
},
"status": "verified"
}

File diff suppressed because it is too large Load Diff

View File

@@ -30,7 +30,7 @@
},
"verification": {
"goldenManifest": "fixtures/freecad-golden/manifest.json",
"scenarioCount": 5,
"scenarioCount": 100,
"result": "passed"
}
}

View File

@@ -0,0 +1,21 @@
{
"schemaVersion": 1,
"baselineId": "freecad-1.1.1",
"sourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"coveragePlan": "config/freecad-golden-coverage-plan.json",
"dimensions": [
"nominal-parameter-set",
"invalid-boundary",
"parameter-variant",
"edit-recompute-recovery",
"fcstd-roundtrip"
],
"completionRule": "A family is complete only when every dimension has native or browser evidence tied to an explicit parameter snapshot and the edited/recovered Shape is valid.",
"evidenceRules": {
"fixture": "A success/failure fixture proves only the corresponding nominal or invalid boundary state.",
"parameterVariant": "Two or more distinct native/browser parameter snapshots are required; outcome-only records do not count.",
"editRecomputeRecovery": "The report must contain before, edited, recomputed and restored/recovered states from a real runtime transaction.",
"fcstdRoundtrip": "Every family round-trip id listed by the coverage plan must pass with zero differences."
},
"failClosed": true
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,870 @@
{
"baselineId": "freecad-1.1.1-part-builders-oracle",
"failureCases": [
{
"area": 0,
"edges": 0,
"expected": "rejected",
"faces": 0,
"id": "part-extrusion-missing-input",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"shapeNull": true,
"shapeType": "Null",
"shapeValid": false,
"solids": 0,
"state": [
"Touched",
"Invalid"
],
"statusString": "No object linked",
"typeId": "Part::Extrusion",
"vertices": 0,
"volume": 0
},
{
"area": 0,
"edges": 0,
"expected": "rejected",
"faces": 0,
"id": "part-revolution-missing-input",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"shapeNull": true,
"shapeType": "Null",
"shapeValid": false,
"solids": 0,
"state": [
"Touched",
"Invalid"
],
"statusString": "No object linked",
"typeId": "Part::Revolution",
"vertices": 0,
"volume": 0
},
{
"area": 0,
"edges": 0,
"expected": "rejected",
"faces": 0,
"id": "part-loft-missing-input",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"shapeNull": true,
"shapeType": "Null",
"shapeValid": false,
"solids": 0,
"state": [
"Invalid"
],
"statusString": "No sections linked.",
"typeId": "Part::Loft",
"vertices": 0,
"volume": 0
},
{
"area": 0,
"edges": 0,
"expected": "rejected",
"faces": 0,
"id": "part-sweep-missing-input",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"shapeNull": true,
"shapeType": "Null",
"shapeValid": false,
"solids": 0,
"state": [
"Invalid"
],
"statusString": "No sections linked.",
"typeId": "Part::Sweep",
"vertices": 0,
"volume": 0
},
{
"area": 0,
"edges": 0,
"expected": "rejected",
"faces": 0,
"id": "part-fillet-missing-input",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"shapeNull": true,
"shapeType": "Null",
"shapeValid": false,
"solids": 0,
"state": [
"Invalid"
],
"statusString": "No object linked",
"typeId": "Part::Fillet",
"vertices": 0,
"volume": 0
},
{
"area": 0,
"edges": 0,
"expected": "rejected",
"faces": 0,
"id": "part-chamfer-missing-input",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"shapeNull": true,
"shapeType": "Null",
"shapeValid": false,
"solids": 0,
"state": [
"Invalid"
],
"statusString": "No object linked",
"typeId": "Part::Chamfer",
"vertices": 0,
"volume": 0
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"schemaVersion": 1,
"status": "pass",
"successCases": [
{
"area": 62,
"edges": 12,
"expected": "success",
"faces": 6,
"id": "part-extrusion-success",
"mutation": {
"before": {
"parameterSnapshot": [
0,
0,
5
],
"shape": {
"area": 62,
"bounds": {
"max": [
3,
2,
5
],
"min": [
0,
0,
0
]
},
"brepSha256": "9d30d34ebc7b7c4d817dceb14aa8283acaef95ec72b06dcbbb29adbd075c2221",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 30
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": [
0,
0,
7
],
"shape": {
"area": 82,
"bounds": {
"max": [
3,
2,
7
],
"min": [
0,
0,
0
]
},
"brepSha256": "810f0b359958485b84d4404172ded10352418bf1877248604cfbe14262ecc4a5",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 42
}
},
"familyId": "Part::Extrusion",
"featureName": "Extrusion",
"parameterChanged": true,
"propertyPath": "Dir",
"restored": {
"parameterSnapshot": [
0,
0,
5
],
"shape": {
"area": 62,
"bounds": {
"max": [
3,
2,
5
],
"min": [
0,
0,
0
]
},
"brepSha256": "9d30d34ebc7b7c4d817dceb14aa8283acaef95ec72b06dcbbb29adbd075c2221",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 30
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"observed": "success",
"passed": true,
"shapeNull": false,
"shapeType": "Solid",
"shapeValid": true,
"solids": 1,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Part::Extrusion",
"vertices": 8,
"volume": 30
},
{
"area": 150.79644737231007,
"edges": 6,
"expected": "success",
"faces": 4,
"id": "part-revolution-success",
"mutation": {
"before": {
"parameterSnapshot": 360,
"shape": {
"area": 150.79644737231007,
"bounds": {
"max": [
4,
2,
4
],
"min": [
-4,
0,
-4
]
},
"brepSha256": "1006818e02e479865c719ba5a8b6a513e3595dc36cbb618b8ea8f44770a80eee",
"edges": 6,
"faces": 4,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 4,
"volume": 75.398223686155
}
},
"brepStable": false,
"edited": {
"parameterSnapshot": 270,
"shape": {
"area": 121.09733552923257,
"bounds": {
"max": [
4,
2,
4
],
"min": [
-4,
0,
-4
]
},
"brepSha256": "9426f11d00c01396b73f44bc342d021a3779b0ff9d5a81bc78529f80edb589cb",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 56.54866776461628
}
},
"familyId": "Part::Revolution",
"featureName": "Revolution",
"parameterChanged": true,
"propertyPath": "Angle",
"restored": {
"parameterSnapshot": 360,
"shape": {
"area": 150.79644737231007,
"bounds": {
"max": [
4,
2,
4
],
"min": [
-4,
0,
-4
]
},
"brepSha256": "ec773a4c293bac1ffc7dfbb42ab648361eb9926779d8d79d00ba037fb01bbe19",
"edges": 6,
"faces": 4,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 4,
"volume": 75.398223686155
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"observed": "success",
"passed": true,
"shapeNull": false,
"shapeType": "Solid",
"shapeValid": true,
"solids": 1,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Part::Revolution",
"vertices": 4,
"volume": 75.398223686155
},
{
"area": 81.18823416311344,
"edges": 12,
"expected": "success",
"faces": 6,
"id": "part-loft-success",
"mutation": {
"before": {
"parameterSnapshot": false,
"shape": {
"area": 81.18823416311344,
"bounds": {
"max": [
2,
2,
5
],
"min": [
-2,
-2,
0
]
},
"brepSha256": "efec0c6cf3b8907f16c071ffeed11238b8e5a9f8f60e40fad225eb418ff33f7b",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 46.666666666666664
}
},
"brepStable": false,
"edited": {
"parameterSnapshot": true,
"shape": {
"area": 81.18823416311344,
"bounds": {
"max": [
2,
2,
5
],
"min": [
-2,
-2,
0
]
},
"brepSha256": "9542e7469b051c053c1c425ffa5d246194661675e16ff0dcc046bce6b2527df1",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 46.666666666666664
}
},
"familyId": "Part::Loft",
"featureName": "Loft",
"parameterChanged": true,
"propertyPath": "Ruled",
"restored": {
"parameterSnapshot": false,
"shape": {
"area": 81.18823416311344,
"bounds": {
"max": [
2,
2,
5
],
"min": [
-2,
-2,
0
]
},
"brepSha256": "bb0a25834e30e135551532aba7398c66e7de32e79ca07d4b3cd07268ace94ee5",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 46.666666666666664
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"observed": "success",
"passed": true,
"shapeNull": false,
"shapeType": "Solid",
"shapeValid": true,
"solids": 1,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Part::Loft",
"vertices": 8,
"volume": 46.666666666666664
},
{
"area": 56,
"edges": 12,
"expected": "success",
"faces": 6,
"id": "part-sweep-success",
"mutation": {
"before": {
"parameterSnapshot": [
{
"name": "Section",
"typeId": "Part::Feature"
}
],
"shape": {
"area": 56,
"bounds": {
"max": [
1,
1,
6
],
"min": [
-1,
-1,
0
]
},
"brepSha256": "5c1241164480ab824c8e107694158117e7d5854ca62985d1123a33853d6d5e58",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 23.999999999999996
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": [
{
"name": "EditedSection",
"typeId": "Part::Feature"
}
],
"shape": {
"area": 40.5,
"bounds": {
"max": [
0.75,
0.75,
6
],
"min": [
-0.75,
-0.75,
0
]
},
"brepSha256": "5fcac1094e1a5fd89bdc44c7ebe60e3a80060bba5a28852875d55869b3a96ee7",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 13.5
}
},
"familyId": "Part::Sweep",
"featureName": "Sweep",
"parameterChanged": true,
"propertyPath": "Sections",
"restored": {
"parameterSnapshot": [
{
"name": "Section",
"typeId": "Part::Feature"
}
],
"shape": {
"area": 56,
"bounds": {
"max": [
1,
1,
6
],
"min": [
-1,
-1,
0
]
},
"brepSha256": "5c1241164480ab824c8e107694158117e7d5854ca62985d1123a33853d6d5e58",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 23.999999999999996
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"observed": "success",
"passed": true,
"shapeNull": false,
"shapeType": "Solid",
"shapeValid": true,
"solids": 1,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Part::Sweep",
"vertices": 8,
"volume": 23.999999999999996
},
{
"area": 372.99557428756424,
"edges": 15,
"expected": "success",
"faces": 7,
"id": "part-fillet-success",
"mutation": {
"before": {
"parameterSnapshot": [
[
1,
1,
1
]
],
"shape": {
"area": 372.99557428756424,
"bounds": {
"max": [
10,
8,
6
],
"min": [
-2.220446049250313e-16,
-2.220446049250313e-16,
0
]
},
"brepSha256": "53dbc555b86be7f2e989af3dd696ee01a611a4d7eb6b8d4fd1d379d351e8f73d",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 478.7123889803846
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": [
[
1,
0.5,
0.5
]
],
"shape": {
"area": 374.6050880620834,
"bounds": {
"max": [
10,
8,
6
],
"min": [
-1.1102230246251565e-16,
-1.1102230246251565e-16,
0
]
},
"brepSha256": "25428228208a7ddd0b814f828c566d9ce99916c2ab86277d7eadf83dcba05aa7",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 479.6780972450962
}
},
"familyId": "Part::Fillet",
"featureName": "Fillet",
"parameterChanged": true,
"propertyPath": "Edges",
"restored": {
"parameterSnapshot": [
[
1,
1,
1
]
],
"shape": {
"area": 372.99557428756424,
"bounds": {
"max": [
10,
8,
6
],
"min": [
-2.220446049250313e-16,
-2.220446049250313e-16,
0
]
},
"brepSha256": "53dbc555b86be7f2e989af3dd696ee01a611a4d7eb6b8d4fd1d379d351e8f73d",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 478.7123889803846
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"observed": "success",
"passed": true,
"shapeNull": false,
"shapeType": "Compound",
"shapeValid": true,
"solids": 1,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Part::Fillet",
"vertices": 10,
"volume": 478.7123889803846
},
{
"area": 371.4852813742385,
"edges": 15,
"expected": "success",
"faces": 7,
"id": "part-chamfer-success",
"mutation": {
"before": {
"parameterSnapshot": [
[
1,
1,
1
]
],
"shape": {
"area": 371.4852813742385,
"bounds": {
"max": [
10,
8,
6
],
"min": [
-1.6653345369377348e-16,
-1.6653345369377348e-16,
0
]
},
"brepSha256": "53ed2773aca1555789f3cca4fbb6b95e76ca92e40b1f423d53bfe39da21bbca6",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 476.9999999999999
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": [
[
1,
0.5,
0.5
]
],
"shape": {
"area": 373.99264068711926,
"bounds": {
"max": [
10,
8,
6
],
"min": [
-8.326672684688674e-17,
-8.326672684688674e-17,
0
]
},
"brepSha256": "ac5a85fa3d48a6595c1458a80fa22b6618c3c4203c3c5995a92cd2349fa262c5",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 479.25
}
},
"familyId": "Part::Chamfer",
"featureName": "Chamfer",
"parameterChanged": true,
"propertyPath": "Edges",
"restored": {
"parameterSnapshot": [
[
1,
1,
1
]
],
"shape": {
"area": 371.4852813742385,
"bounds": {
"max": [
10,
8,
6
],
"min": [
-1.6653345369377348e-16,
-1.6653345369377348e-16,
0
]
},
"brepSha256": "53ed2773aca1555789f3cca4fbb6b95e76ca92e40b1f423d53bfe39da21bbca6",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 476.9999999999999
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"observed": "success",
"passed": true,
"shapeNull": false,
"shapeType": "Compound",
"shapeValid": true,
"solids": 1,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "Part::Chamfer",
"vertices": 10,
"volume": 476.9999999999999
}
],
"summary": {
"acceptedEmpty": 0,
"failureCases": 6,
"failurePassed": 6,
"rejected": 6,
"successCases": 6,
"successPassed": 6
}
}

View File

@@ -0,0 +1,313 @@
{
"baselineId": "freecad-1.1.1-partdesign-base-oracle",
"cases": [
{
"bounds": {
"max": [
2.43744331762962,
2.43744331762962,
5
],
"min": [
-2.43744331762962,
-2.43744331762962,
0
]
},
"faces": 6,
"id": "pad-tapered",
"mutation": {
"before": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 5
},
"shape": {
"area": 128.85239231084472,
"bounds": {
"max": [
2.43744331762962,
2.43744331762962,
5
],
"min": [
-2.43744331762962,
-2.43744331762962,
0
]
},
"brepSha256": "f5a07a59b273c128018d781af423bf016a2b0d17dc6dd59619460e37ca72de96",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 98.77344374611019
}
},
"brepStable": false,
"edited": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 6
},
"shape": {
"area": 150.51432170708637,
"bounds": {
"max": [
2.524931981155544,
2.524931981155544,
6
],
"min": [
-2.524931981155544,
-2.524931981155544,
0
]
},
"brepSha256": "1987bd297acc648dc0d43f7703d68a0c8005a45056a3274c5f0240b1b46b9679",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 123.40116377418519
}
},
"familyId": "PartDesign::Pad",
"featureName": "Pad",
"parameterChanged": true,
"propertyPath": "Length",
"restored": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 5
},
"shape": {
"area": 128.85239231084472,
"bounds": {
"max": [
2.43744331762962,
2.43744331762962,
5
],
"min": [
-2.43744331762962,
-2.43744331762962,
0
]
},
"brepSha256": "b5c1d71797f05ed2b2c51400de81047759f684a2c14d65d57acdc035aa3512e7",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 98.77344374611019
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"passed": true,
"solids": 1,
"status": "Valid",
"volume": 98.77344374611019
},
{
"bounds": {
"max": [
5,
5,
5
],
"min": [
-5,
-5,
-5
]
},
"faces": 10,
"id": "pocket-tapered",
"mutation": {
"before": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 10
},
"shape": {
"area": 735.999242011454,
"bounds": {
"max": [
5,
5,
5
],
"min": [
-5,
-5,
-5
]
},
"brepSha256": "ae401e5db6c23acc7d0fe23896ac08a0c27d6ed73df32953b1a9b15349f0b7bd",
"edges": 24,
"faces": 10,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 16,
"volume": 810.4374375507407
}
},
"brepStable": false,
"edited": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 8
},
"shape": {
"area": 741.80522810493,
"bounds": {
"max": [
5,
5,
5
],
"min": [
-5,
-5,
-5
]
},
"brepSha256": "20aedff38ad1468a1eb669a71e9ad4ab45f1b211bfc81a41caf50b4cd39a03b3",
"edges": 24,
"faces": 11,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 16,
"volume": 853.2880812300241
}
},
"familyId": "PartDesign::Pocket",
"featureName": "Pocket",
"parameterChanged": true,
"propertyPath": "Length",
"restored": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 10
},
"shape": {
"area": 735.999242011454,
"bounds": {
"max": [
5,
5,
5
],
"min": [
-5,
-5,
-5
]
},
"brepSha256": "56193a107c590c262642369e26467a690c0267174d47e2905f590280bf91d523",
"edges": 24,
"faces": 10,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 16,
"volume": 810.4374375507407
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"passed": true,
"solids": 1,
"status": "Valid",
"volume": 810.4374375507407
},
{
"bounds": {
"max": [
5,
5,
5
],
"min": [
-5,
-5,
-5
]
},
"faces": 10,
"id": "pocket-through-all",
"passed": true,
"solids": 1,
"status": "Valid",
"volume": 960
},
{
"bounds": {
"max": [
5,
5,
5
],
"min": [
-5,
-5,
-5
]
},
"faces": 10,
"id": "pocket-up-to-face",
"passed": true,
"solids": 1,
"status": "Valid",
"targetFace": 5,
"volume": 960
},
{
"bounds": {
"max": [
2,
2,
3
],
"min": [
-2,
-2,
-3
]
},
"faces": 6,
"id": "pad-midplane",
"passed": true,
"solids": 1,
"status": "Valid",
"volume": 95.99999999999999
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"schemaVersion": 1,
"status": "pass",
"summary": {
"cases": 5,
"passed": 5
},
"tolerance": 1e-7
}

View File

@@ -0,0 +1,465 @@
{
"baselineId": "freecad-1.1.1-partdesign-dressup-oracle",
"cases": [
{
"edges": 15,
"faces": 7,
"id": "fillet-selected-edge",
"mutation": {
"before": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 1
},
"shape": {
"area": 595.2787595947437,
"bounds": {
"max": [
10,
10,
10
],
"min": [
-2.220446049250313e-16,
-2.220446049250313e-16,
0
]
},
"brepSha256": "98c5a880b0bea84194e75f61c08114d8e8885fec88ffa3effc6f3da5063d7421",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 997.8539816339743
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 0.5
},
"shape": {
"area": 597.746680715673,
"bounds": {
"max": [
10,
10,
10
],
"min": [
-1.1102230246251565e-16,
-1.1102230246251565e-16,
0
]
},
"brepSha256": "03ec60b398de6e54bb2198d3a81b27abf5968b4479b66a794c18047aeea72946",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 999.4634954084936
}
},
"familyId": "PartDesign::Fillet",
"featureName": "Fillet",
"parameterChanged": true,
"propertyPath": "Radius",
"restored": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 1
},
"shape": {
"area": 595.2787595947437,
"bounds": {
"max": [
10,
10,
10
],
"min": [
-2.220446049250313e-16,
-2.220446049250313e-16,
0
]
},
"brepSha256": "98c5a880b0bea84194e75f61c08114d8e8885fec88ffa3effc6f3da5063d7421",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 997.8539816339743
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"passed": true,
"selection": [
"Edge1"
],
"solids": 1,
"status": "Valid",
"typeId": "PartDesign::Fillet",
"volume": 997.8539816339743
},
{
"edges": 15,
"faces": 7,
"id": "chamfer-selected-edge",
"mutation": {
"before": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 1
},
"shape": {
"area": 593.1421356237308,
"bounds": {
"max": [
10,
10,
10
],
"min": [
-1.6653345369377348e-16,
-1.6653345369377348e-16,
0
]
},
"brepSha256": "d67242a11006664458599a9b2e13b2f9f4857699041bfe30bf33c2c2f774403a",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 994.9999999999998
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 0.5
},
"shape": {
"area": 596.8210678118654,
"bounds": {
"max": [
10,
10,
10
],
"min": [
-8.326672684688674e-17,
-8.326672684688674e-17,
0
]
},
"brepSha256": "51fb428868d98f40f7acbf91f018323d500315c167b8b8195a07f17c5b681258",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 998.75
}
},
"familyId": "PartDesign::Chamfer",
"featureName": "Chamfer",
"parameterChanged": true,
"propertyPath": "Size",
"restored": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 1
},
"shape": {
"area": 593.1421356237308,
"bounds": {
"max": [
10,
10,
10
],
"min": [
-1.6653345369377348e-16,
-1.6653345369377348e-16,
0
]
},
"brepSha256": "d67242a11006664458599a9b2e13b2f9f4857699041bfe30bf33c2c2f774403a",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 994.9999999999998
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"passed": true,
"selection": [
"Edge1"
],
"solids": 1,
"status": "Valid",
"typeId": "PartDesign::Chamfer",
"volume": 994.9999999999998
},
{
"edges": 12,
"faces": 6,
"id": "draft-selected-face",
"mutation": {
"before": {
"parameterSnapshot": {
"unit": "Unit: deg (0,0,0,0,0,0,0,1) [Angle]",
"value": 45
},
"shape": {
"area": 841.4213562373093,
"bounds": {
"max": [
10.000000000000002,
10,
20
],
"min": [
0,
0,
0
]
},
"brepSha256": "fdc7c4775ef559c6309bbb2d1a31065a49e6d70455372f8fda595568fe46dfa4",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 1499.9999999999998
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": {
"unit": "Unit: deg (0,0,0,0,0,0,0,1) [Angle]",
"value": 30
},
"shape": {
"area": 730.9401076758501,
"bounds": {
"max": [
10,
10,
15.773502691896255
],
"min": [
0,
0,
0
]
},
"brepSha256": "be5a1c93837a915d46279a1c5e40fbf46c0f921db4064f97ef568fbae9d3408e",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 1288.6751345948126
}
},
"familyId": "PartDesign::Draft",
"featureName": "Draft",
"parameterChanged": true,
"propertyPath": "Angle",
"restored": {
"parameterSnapshot": {
"unit": "Unit: deg (0,0,0,0,0,0,0,1) [Angle]",
"value": 45
},
"shape": {
"area": 841.4213562373093,
"bounds": {
"max": [
10.000000000000002,
10,
20
],
"min": [
0,
0,
0
]
},
"brepSha256": "fdc7c4775ef559c6309bbb2d1a31065a49e6d70455372f8fda595568fe46dfa4",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 1499.9999999999998
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"passed": true,
"reversed": true,
"selection": [
"Face6"
],
"solids": 1,
"status": "Valid",
"typeId": "PartDesign::Draft",
"volume": 1499.9999999999998
},
{
"edges": 24,
"elementMapSize": 51,
"faces": 11,
"id": "thickness-selected-face",
"mutation": {
"before": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 1
},
"shape": {
"area": 887.9999999999999,
"bounds": {
"max": [
10,
10,
10
],
"min": [
0,
0,
0
]
},
"brepSha256": "747d92b1cf08109f59d9a972e6e14be9f09691263866f7eafbbdcee940390c4e",
"edges": 24,
"faces": 11,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 16,
"volume": 423.99999999999983
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 0.8
},
"shape": {
"area": 909.1199999999998,
"bounds": {
"max": [
10,
10,
10
],
"min": [
0,
0,
0
]
},
"brepSha256": "31e712785de8577559f0ce4584ced599fc69b3cbf9a508ab3eec24f2ab324952",
"edges": 24,
"faces": 11,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 16,
"volume": 350.8479999999998
}
},
"familyId": "PartDesign::Thickness",
"featureName": "Thickness",
"parameterChanged": true,
"propertyPath": "Value",
"restored": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 1
},
"shape": {
"area": 887.9999999999999,
"bounds": {
"max": [
10,
10,
10
],
"min": [
0,
0,
0
]
},
"brepSha256": "747d92b1cf08109f59d9a972e6e14be9f09691263866f7eafbbdcee940390c4e",
"edges": 24,
"faces": 11,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 16,
"volume": 423.99999999999983
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"passed": true,
"reversed": true,
"selection": [
"Face1"
],
"solids": 1,
"status": "Valid",
"typeId": "PartDesign::Thickness",
"volume": 423.99999999999983
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"schemaVersion": 1,
"status": "pass",
"summary": {
"cases": 4,
"passed": 4
},
"tolerance": 1e-7
}

View File

@@ -0,0 +1,267 @@
{
"baselineId": "freecad-1.1.1-partdesign-failure-oracle",
"cases": [
{
"expected": "rejected",
"id": "missing-input-pad",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Touched",
"Invalid"
],
"statusString": "No object linked",
"typeId": "PartDesign::Pad"
},
{
"expected": "rejected",
"id": "missing-input-pocket",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Touched",
"Invalid"
],
"statusString": "No object linked",
"typeId": "PartDesign::Pocket"
},
{
"expected": "rejected",
"id": "missing-input-revolution",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Touched",
"Invalid"
],
"statusString": "No profile linked",
"typeId": "PartDesign::Revolution"
},
{
"expected": "rejected",
"id": "missing-input-groove",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Touched",
"Invalid"
],
"statusString": "No profile linked",
"typeId": "PartDesign::Groove"
},
{
"expected": "rejected",
"id": "missing-input-additiveloft",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Touched",
"Invalid"
],
"statusString": "Failed to get shape of Profile",
"typeId": "PartDesign::AdditiveLoft"
},
{
"expected": "rejected",
"id": "missing-input-subtractiveloft",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Touched",
"Invalid"
],
"statusString": "Failed to get shape of Profile",
"typeId": "PartDesign::SubtractiveLoft"
},
{
"expected": "rejected",
"id": "missing-input-additivepipe",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Touched",
"Invalid"
],
"statusString": "A fatal error occurred when making the pipe",
"typeId": "PartDesign::AdditivePipe"
},
{
"expected": "rejected",
"id": "missing-input-subtractivepipe",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Touched",
"Invalid"
],
"statusString": "A fatal error occurred when making the pipe",
"typeId": "PartDesign::SubtractivePipe"
},
{
"expected": "rejected",
"id": "missing-input-fillet",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Touched",
"Invalid"
],
"statusString": "No Base object linked",
"typeId": "PartDesign::Fillet"
},
{
"expected": "rejected",
"id": "missing-input-chamfer",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Touched",
"Invalid"
],
"statusString": "No Base object linked",
"typeId": "PartDesign::Chamfer"
},
{
"expected": "rejected",
"id": "missing-input-draft",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Touched",
"Invalid"
],
"statusString": "No Base object linked",
"typeId": "PartDesign::Draft"
},
{
"expected": "rejected",
"id": "missing-input-thickness",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Touched",
"Invalid"
],
"statusString": "No Base object linked",
"typeId": "PartDesign::Thickness"
},
{
"expected": "accepted-empty",
"id": "missing-input-mirrored",
"inputClass": "missing-required-input",
"observed": "accepted-empty",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "PartDesign::Mirrored"
},
{
"expected": "accepted-empty",
"id": "missing-input-multitransform",
"inputClass": "missing-required-input",
"observed": "accepted-empty",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "PartDesign::MultiTransform"
},
{
"expected": "accepted-empty",
"id": "missing-input-linearpattern",
"inputClass": "missing-required-input",
"observed": "accepted-empty",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "PartDesign::LinearPattern"
},
{
"expected": "accepted-empty",
"id": "missing-input-polarpattern",
"inputClass": "missing-required-input",
"observed": "accepted-empty",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"typeId": "PartDesign::PolarPattern"
},
{
"expected": "rejected",
"id": "missing-input-hole",
"inputClass": "missing-required-input",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"state": [
"Touched",
"Invalid"
],
"statusString": "Linked shape object is empty",
"typeId": "PartDesign::Hole"
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"schemaVersion": 1,
"status": "pass",
"summary": {
"accepted": 0,
"acceptedEmpty": 4,
"cases": 17,
"passed": 17,
"rejected": 13
}
}

View File

@@ -0,0 +1,478 @@
{
"baselineId": "freecad-1.1.1-partdesign-loft-oracle",
"cases": [
{
"faces": 6,
"id": "additive-loft",
"mutation": {
"before": {
"parameterSnapshot": false,
"shape": {
"area": 7.23606797749979,
"bounds": {
"max": [
1,
1,
2
],
"min": [
0,
0,
0
]
},
"brepSha256": "0ab177609a66575afff2f36237fdf271e5a95e8fb738c91101648533e01c6642",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 1
}
},
"brepStable": false,
"edited": {
"parameterSnapshot": true,
"shape": {
"area": 7.23606797749979,
"bounds": {
"max": [
1,
1,
2
],
"min": [
0,
0,
0
]
},
"brepSha256": "8a243d5c346dcb96da932fea88d54513c36e697b99cd36a90c892100e1f7b337",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 1
}
},
"familyId": "PartDesign::AdditiveLoft",
"featureName": "AdditiveLoft",
"parameterChanged": true,
"propertyPath": "Ruled",
"restored": {
"parameterSnapshot": false,
"shape": {
"area": 7.23606797749979,
"bounds": {
"max": [
1,
1,
2
],
"min": [
0,
0,
0
]
},
"brepSha256": "9cf30242b4b3776be5256d587155eb9781d7cc7534bbb60f125830fde83686c6",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 1
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"passed": true,
"solids": 1,
"status": "Valid",
"typeId": "PartDesign::AdditiveLoft",
"volume": 1
},
{
"faces": 5,
"id": "subtractive-loft",
"mutation": {
"before": {
"parameterSnapshot": [
[
{
"name": "Section",
"typeId": "Sketcher::SketchObject"
},
[
""
]
]
],
"shape": {
"area": 7.236067977499789,
"bounds": {
"max": [
1,
1,
2
],
"min": [
0,
0,
0
]
},
"brepSha256": "c90d78028b450759ca50298c18e98d5cfee774d1e453d6c133f5b748fa01c78a",
"edges": 9,
"faces": 5,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 6,
"volume": 0.9999999999999994
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": [
[
{
"name": "EditedSection",
"typeId": "Sketcher::SketchObject"
},
[
""
]
]
],
"shape": {
"area": 9.348113056667211,
"bounds": {
"max": [
1,
1,
2
],
"min": [
0,
0,
0
]
},
"brepSha256": "21e5dda76ba93b30769b6f0b5d01006f43f92bb1012559f7a6ffdf5b25b8dc44",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 1.2135416666666667
}
},
"familyId": "PartDesign::SubtractiveLoft",
"featureName": "SubtractiveLoft",
"parameterChanged": true,
"propertyPath": "Sections",
"restored": {
"parameterSnapshot": [
[
{
"name": "Section",
"typeId": "Sketcher::SketchObject"
},
[
""
]
]
],
"shape": {
"area": 7.236067977499789,
"bounds": {
"max": [
1,
1,
2
],
"min": [
0,
0,
0
]
},
"brepSha256": "c90d78028b450759ca50298c18e98d5cfee774d1e453d6c133f5b748fa01c78a",
"edges": 9,
"faces": 5,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 6,
"volume": 0.9999999999999994
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"passed": true,
"solids": 1,
"status": "Valid",
"typeId": "PartDesign::SubtractiveLoft",
"volume": 0.9999999999999994
},
{
"faces": 3,
"id": "additive-pipe",
"mutation": {
"before": {
"parameterSnapshot": [
{
"name": "Profile",
"typeId": "Sketcher::SketchObject"
},
[]
],
"shape": {
"area": 12.566370614359169,
"bounds": {
"max": [
1,
1.0000000000000002,
1.0000000000000002
],
"min": [
-1,
-1,
-2.220446049250313e-16
]
},
"brepSha256": "82aa44aafac3cd8d51197e46391c039ae2a26b90e99df2f805e453de776dfcd8",
"edges": 3,
"faces": 3,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 2,
"volume": 3.1415926535897927
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": [
{
"name": "EditedProfile",
"typeId": "Sketcher::SketchObject"
},
[]
],
"shape": {
"area": 8.246680715673207,
"bounds": {
"max": [
0.75,
0.7500000000000002,
1.0000000000000002
],
"min": [
-0.75,
-0.75,
-1.6653345369377348e-16
]
},
"brepSha256": "452964b54d47c78e21e540fbd17b33e1a449fefd3607583204dd840d0761ca1f",
"edges": 3,
"faces": 3,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 2,
"volume": 1.7671458676442584
}
},
"familyId": "PartDesign::AdditivePipe",
"featureName": "AdditivePipe",
"parameterChanged": true,
"propertyPath": "Profile",
"restored": {
"parameterSnapshot": [
{
"name": "Profile",
"typeId": "Sketcher::SketchObject"
},
[]
],
"shape": {
"area": 12.566370614359169,
"bounds": {
"max": [
1,
1.0000000000000002,
1.0000000000000002
],
"min": [
-1,
-1,
-2.220446049250313e-16
]
},
"brepSha256": "82aa44aafac3cd8d51197e46391c039ae2a26b90e99df2f805e453de776dfcd8",
"edges": 3,
"faces": 3,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 2,
"volume": 3.1415926535897927
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"passed": true,
"solids": 1,
"status": "Valid",
"transition": "Transformed",
"typeId": "PartDesign::AdditivePipe",
"volume": 3.1415926535897927
},
{
"faces": 7,
"id": "subtractive-pipe",
"mutation": {
"before": {
"parameterSnapshot": [
{
"name": "Profile",
"typeId": "Sketcher::SketchObject"
},
[]
],
"shape": {
"area": 239.99999999999997,
"bounds": {
"max": [
5,
5,
1.0000000000000002
],
"min": [
-5,
-5,
-2.220446049250313e-16
]
},
"brepSha256": "85644672cbbe548cbc5c063dc5e63feda7f149eb6a9b1446cba89f456945180b",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 96.8584073464102
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": [
{
"name": "EditedProfile",
"typeId": "Sketcher::SketchObject"
},
[]
],
"shape": {
"area": 241.17809724509615,
"bounds": {
"max": [
5,
5,
1.0000000000000002
],
"min": [
-5,
-5,
-1.6653345369377348e-16
]
},
"brepSha256": "1bca636a2f0deffa3ba317f7000dc245a9eaaa3d79bd800d1cbe80b6d3bb6b16",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 98.23285413235574
}
},
"familyId": "PartDesign::SubtractivePipe",
"featureName": "SubtractivePipe",
"parameterChanged": true,
"propertyPath": "Profile",
"restored": {
"parameterSnapshot": [
{
"name": "Profile",
"typeId": "Sketcher::SketchObject"
},
[]
],
"shape": {
"area": 239.99999999999997,
"bounds": {
"max": [
5,
5,
1.0000000000000002
],
"min": [
-5,
-5,
-2.220446049250313e-16
]
},
"brepSha256": "85644672cbbe548cbc5c063dc5e63feda7f149eb6a9b1446cba89f456945180b",
"edges": 15,
"faces": 7,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 96.8584073464102
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"passed": true,
"solids": 1,
"status": "Valid",
"transition": "Transformed",
"typeId": "PartDesign::SubtractivePipe",
"volume": 96.8584073464102
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"schemaVersion": 1,
"status": "pass",
"summary": {
"cases": 4,
"passed": 4
},
"tolerance": 1e-7
}

View File

@@ -0,0 +1,88 @@
{
"baselineId": "freecad-1.1.1-partdesign-profile-oracle",
"cases": [
{
"expected": "accepted",
"id": "closed",
"observed": "accepted",
"passed": true,
"recomputeResult": true,
"shapeNull": false,
"solidCount": 1,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"volume": 360
},
{
"expected": "accepted",
"id": "multi-ring",
"observed": "accepted",
"passed": true,
"recomputeResult": true,
"shapeNull": false,
"solidCount": 1,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"volume": 320
},
{
"expected": "rejected",
"id": "open",
"observed": "rejected",
"passed": true,
"recomputeResult": true,
"shapeNull": true,
"solidCount": 0,
"state": [
"Touched",
"Invalid"
],
"statusString": "Wire is not closed.",
"volume": 0
},
{
"expected": "accepted",
"id": "self-intersecting",
"observed": "accepted",
"passed": true,
"recomputeResult": true,
"shapeNull": false,
"solidCount": 2,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"volume": 80
},
{
"expected": "accepted",
"id": "invalid-nesting",
"observed": "accepted",
"passed": true,
"recomputeResult": true,
"shapeNull": false,
"solidCount": 2,
"state": [
"Up-to-date"
],
"statusString": "Valid",
"volume": 370
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"length": 10,
"schemaVersion": 1,
"status": "pass",
"summary": {
"accepted": 4,
"cases": 5,
"passed": 5,
"rejected": 1
},
"tolerance": 1e-7
}

View File

@@ -0,0 +1,235 @@
{
"baselineId": "freecad-1.1.1-partdesign-revolution-groove-oracle",
"cases": [
{
"faces": 4,
"id": "partdesign-revolution",
"mutation": {
"before": {
"parameterSnapshot": {
"unit": "Unit: deg (0,0,0,0,0,0,0,1) [Angle]",
"value": 360
},
"shape": {
"area": 150.79644737231007,
"bounds": {
"max": [
1,
4,
4
],
"min": [
-1,
-4,
-4
]
},
"brepSha256": "4e10234851bc71948ff0e12cfe337f7cf1f9f177d80991186faccb42bb09f84d",
"edges": 6,
"faces": 4,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 4,
"volume": 75.39822368615502
}
},
"brepStable": false,
"edited": {
"parameterSnapshot": {
"unit": "Unit: deg (0,0,0,0,0,0,0,1) [Angle]",
"value": 270
},
"shape": {
"area": 121.09733552923255,
"bounds": {
"max": [
1,
4,
4
],
"min": [
-1,
-4,
-4
]
},
"brepSha256": "99a870ec07e78b9c0903bee67373a8f4051c5651629db1149aeab3bc3be9d3d7",
"edges": 12,
"faces": 6,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 56.54866776461628
}
},
"familyId": "PartDesign::Revolution",
"featureName": "Revolution",
"parameterChanged": true,
"propertyPath": "Angle",
"restored": {
"parameterSnapshot": {
"unit": "Unit: deg (0,0,0,0,0,0,0,1) [Angle]",
"value": 360
},
"shape": {
"area": 150.79644737231007,
"bounds": {
"max": [
1,
4,
4
],
"min": [
-1,
-4,
-4
]
},
"brepSha256": "1fe389e236a01afd10442aacb43772d81f3910bde25b215d191d62d69eaa8c64",
"edges": 6,
"faces": 4,
"shapeType": "Solid",
"solids": 1,
"valid": true,
"vertices": 4,
"volume": 75.39822368615502
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"operation": "revolution",
"passed": true,
"shapeNull": false,
"shapeValid": true,
"solids": 1,
"status": "Valid",
"typeId": "PartDesign::Revolution",
"volume": 75.39822368615502
},
{
"faces": 10,
"id": "partdesign-groove",
"mutation": {
"before": {
"parameterSnapshot": {
"unit": "Unit: deg (0,0,0,0,0,0,0,1) [Angle]",
"value": 180
},
"shape": {
"area": 610.137166941154,
"bounds": {
"max": [
10,
10,
10
],
"min": [
0,
0,
0
]
},
"brepSha256": "a71b46178c908477d71f6d08b4c922184abcc8426114c3e4315c50fbd8b17b87",
"edges": 24,
"faces": 10,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 16,
"volume": 995.2876110196153
}
},
"brepStable": false,
"edited": {
"parameterSnapshot": {
"unit": "Unit: deg (0,0,0,0,0,0,0,1) [Angle]",
"value": 120
},
"shape": {
"area": 610.137166941154,
"bounds": {
"max": [
10,
10,
10
],
"min": [
0,
0,
0
]
},
"brepSha256": "7d3dfb277849d5bdd4eed46a50b16c88c84830727893b452ec327c016aa93de1",
"edges": 24,
"faces": 10,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 16,
"volume": 995.2876110196153
}
},
"familyId": "PartDesign::Groove",
"featureName": "Groove",
"parameterChanged": true,
"propertyPath": "Angle",
"restored": {
"parameterSnapshot": {
"unit": "Unit: deg (0,0,0,0,0,0,0,1) [Angle]",
"value": 180
},
"shape": {
"area": 610.137166941154,
"bounds": {
"max": [
10,
10,
10
],
"min": [
0,
0,
0
]
},
"brepSha256": "6795afbb4bb89669697e47396335aa79cb12cb2aa14f1cade543a63894d6287f",
"edges": 24,
"faces": 10,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 16,
"volume": 995.2876110196153
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"operation": "groove",
"passed": true,
"shapeNull": false,
"shapeValid": true,
"solids": 1,
"status": "Valid",
"typeId": "PartDesign::Groove",
"volume": 995.2876110196153
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"schemaVersion": 1,
"status": "pass",
"summary": {
"cases": 2,
"passed": 2
}
}

View File

@@ -0,0 +1,879 @@
{
"baselineId": "freecad-1.1.1-partdesign-transform-oracle",
"cases": [
{
"direction": "X_Axis",
"edges": 48,
"faces": 21,
"id": "linear-feature-list",
"length": 12,
"mutation": {
"before": {
"parameterSnapshot": 3,
"shape": {
"area": 568,
"bounds": {
"max": [
20,
10,
4
],
"min": [
0,
0,
0
]
},
"brepSha256": "f5b90a00cb51e89b5d6cf1457a8b877ba0609d9053a31fb478070765f3ffc446",
"edges": 48,
"faces": 21,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 32,
"volume": 423.99999999999994
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": 4,
"shape": {
"area": 584,
"bounds": {
"max": [
20,
10,
4
],
"min": [
0,
0,
0
]
},
"brepSha256": "44b0867df8d01e7725a337741c5fabab336a9928cc4ddcd5674b386e14ddfb99",
"edges": 60,
"faces": 26,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 40,
"volume": 431.99999999999983
}
},
"familyId": "PartDesign::LinearPattern",
"featureName": "LinearPattern",
"parameterChanged": true,
"propertyPath": "Occurrences",
"restored": {
"parameterSnapshot": 3,
"shape": {
"area": 568,
"bounds": {
"max": [
20,
10,
4
],
"min": [
0,
0,
0
]
},
"brepSha256": "f5b90a00cb51e89b5d6cf1457a8b877ba0609d9053a31fb478070765f3ffc446",
"edges": 48,
"faces": 21,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 32,
"volume": 423.99999999999994
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"occurrences": 3,
"originals": [
"Boss"
],
"passed": true,
"solids": 1,
"status": "Valid",
"transformMode": "Features",
"typeId": "PartDesign::LinearPattern",
"volume": 423.99999999999994
},
{
"edges": 28,
"faces": 12,
"id": "mirrored-feature-list",
"mutation": {
"before": {
"parameterSnapshot": true,
"shape": {
"area": 552,
"bounds": {
"max": [
20,
10,
4
],
"min": [
-2,
0,
0
]
},
"brepSha256": "f09f9f5ab8be73c2eb76c3410c969e93044fb6beb01feec52d2d239da62d3c2e",
"edges": 28,
"faces": 12,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 18,
"volume": 416.00000000000006
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": false,
"shape": {
"area": 552,
"bounds": {
"max": [
20,
10,
4
],
"min": [
-2,
0,
0
]
},
"brepSha256": "b978620d2a6f99e90e96dbc7f20b19169bea51ce2f4d22bfc620e55d62ccdeaa",
"edges": 33,
"faces": 15,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 20,
"volume": 415.99999999999983
}
},
"familyId": "PartDesign::Mirrored",
"featureName": "Mirrored",
"parameterChanged": true,
"propertyPath": "Refine",
"restored": {
"parameterSnapshot": true,
"shape": {
"area": 552,
"bounds": {
"max": [
20,
10,
4
],
"min": [
-2,
0,
0
]
},
"brepSha256": "f09f9f5ab8be73c2eb76c3410c969e93044fb6beb01feec52d2d239da62d3c2e",
"edges": 28,
"faces": 12,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 18,
"volume": 416.00000000000006
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"originals": [
"Boss"
],
"passed": true,
"plane": "YZ_Plane",
"solids": 1,
"status": "Valid",
"transformMode": "Features",
"typeId": "PartDesign::Mirrored",
"volume": 416.00000000000006
},
{
"angle": 360,
"axis": "X_Axis",
"edges": 12,
"faces": 6,
"id": "polar-feature-list",
"mutation": {
"before": {
"parameterSnapshot": 4,
"shape": {
"area": 1599.9999999999998,
"bounds": {
"max": [
10,
10,
10.000000000000002
],
"min": [
0,
-10.000000000000002,
-10.000000000000002
]
},
"brepSha256": "4dd67348ece295122be98bed65a93e8362e46d5d9dd5b6a88589a388537b73d7",
"edges": 12,
"faces": 6,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 3999.999999999999
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": 3,
"shape": {
"area": 1799.9999999999998,
"bounds": {
"max": [
10,
10,
10
],
"min": [
0,
-13.660254037844387,
-13.660254037844389
]
},
"brepSha256": "5127ab274986196eb89f32f2c697f83dbac753c05519b484449305370496c8c5",
"edges": 34,
"faces": 18,
"shapeType": "Compound",
"solids": 3,
"valid": true,
"vertices": 20,
"volume": 2999.9999999999995
}
},
"familyId": "PartDesign::PolarPattern",
"featureName": "PolarPattern",
"parameterChanged": true,
"propertyPath": "Occurrences",
"restored": {
"parameterSnapshot": 4,
"shape": {
"area": 1599.9999999999998,
"bounds": {
"max": [
10,
10,
10.000000000000002
],
"min": [
0,
-10.000000000000002,
-10.000000000000002
]
},
"brepSha256": "4dd67348ece295122be98bed65a93e8362e46d5d9dd5b6a88589a388537b73d7",
"edges": 12,
"faces": 6,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 8,
"volume": 3999.999999999999
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"occurrences": 4,
"originals": [
"Box"
],
"passed": true,
"solids": 1,
"status": "Valid",
"transformMode": "Features",
"typeId": "PartDesign::PolarPattern",
"volume": 3999.999999999999
},
{
"edges": 36,
"faces": 14,
"id": "multi-transform-feature-list",
"mutation": {
"before": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 20
},
"shape": {
"area": 6400,
"bounds": {
"max": [
30,
30,
10
],
"min": [
-30,
-30.000000000000004,
0
]
},
"brepSha256": "3e82460ae12922bd68d58ca6c48ad7ba2f034c4157e8f2da8a2bd9683ed83697",
"edges": 36,
"faces": 14,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 24,
"volume": 19999.999999999996
}
},
"brepStable": false,
"edited": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 15
},
"shape": {
"area": 5200,
"bounds": {
"max": [
25,
25,
10
],
"min": [
-25,
-25.000000000000004,
0
]
},
"brepSha256": "c1e5e2ac391062149b8da2328ecb93a5bc71f166e1edea8157a30a51d53375dd",
"edges": 36,
"faces": 14,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 24,
"volume": 15999.999999999998
}
},
"familyId": "PartDesign::MultiTransform",
"featureName": "MultiTransform",
"parameterChanged": true,
"propertyPath": "Transformations[1].Length",
"restored": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 20
},
"shape": {
"area": 6400,
"bounds": {
"max": [
30,
30,
10
],
"min": [
-30,
-30.000000000000004,
0
]
},
"brepSha256": "2a2bfeadec439a2a70d2a49da618de7c63d202f7b70a0adb8ad5d0a161bc7fae",
"edges": 36,
"faces": 14,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 24,
"volume": 19999.999999999996
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"originals": [
"Pad"
],
"passed": true,
"solids": 1,
"status": "Valid",
"transformMode": "Features",
"transformations": [
"PartDesign::Mirrored",
"PartDesign::LinearPattern",
"PartDesign::PolarPattern"
],
"typeId": "PartDesign::MultiTransform",
"volume": 19999.999999999996
},
{
"diameter": 5,
"edges": 15,
"faces": 8,
"id": "iso-m6-tap-drill",
"modeled": false,
"mutation": {
"before": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 5
},
"shape": {
"area": 1725.6637061435915,
"bounds": {
"max": [
20,
20,
10
],
"min": [
0,
0,
0
]
},
"brepSha256": "6157506ee1ceae966d58b98f729adbd4dffb585f1e9e52547e30d442af73efd3",
"edges": 15,
"faces": 8,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 3842.92036732051
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 6.5
},
"shape": {
"area": 1763.362817986669,
"bounds": {
"max": [
20,
20,
10
],
"min": [
0,
0,
0
]
},
"brepSha256": "a8ad05315c3d555a9ad9b764e243b4001b56401e9fab846aeb145ceb0fea42f6",
"edges": 15,
"faces": 8,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 3734.5354207716614
}
},
"familyId": "PartDesign::Hole",
"featureName": "Hole",
"parameterChanged": true,
"propertyPath": "Diameter",
"restored": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 5
},
"shape": {
"area": 1725.6637061435915,
"bounds": {
"max": [
20,
20,
10
],
"min": [
0,
0,
0
]
},
"brepSha256": "6157506ee1ceae966d58b98f729adbd4dffb585f1e9e52547e30d442af73efd3",
"edges": 15,
"faces": 8,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 3842.92036732051
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"passed": true,
"properties": [
"AddSubShape",
"AllowMultiFace",
"BaseFeature",
"BaseProfileType",
"CustomThreadClearance",
"Depth",
"DepthType",
"Diameter",
"DrillForDepth",
"DrillPoint",
"DrillPointAngle",
"ExpressionEngine",
"HoleCutCountersinkAngle",
"HoleCutCustomValues",
"HoleCutDepth",
"HoleCutDiameter",
"HoleCutType",
"Label",
"Label2",
"Midplane",
"ModelThread",
"Placement",
"PreviewShape",
"Profile",
"Refine",
"Reversed",
"Shape",
"ShapeMaterial",
"Suppressed",
"SuppressedShape",
"Tapered",
"TaperedAngle",
"ThreadClass",
"ThreadDepth",
"ThreadDepthType",
"ThreadDiameter",
"ThreadDirection",
"ThreadFit",
"ThreadSize",
"ThreadType",
"Threaded",
"UpToFace",
"UpToFace2",
"UpToShape",
"UpToShape2",
"UseCustomThreadClearance",
"Visibility",
"_Body",
"_ElementMapVersion"
],
"solids": 1,
"status": "Valid",
"threadClass": "4G",
"threadDepth": 6,
"threadDepthType": "Dimension",
"threadDiameter": 6,
"threadDirection": "Right",
"threadFit": "Medium",
"threadPitch": 1,
"threadSize": "M6x1.0",
"threadType": "ISOMetricProfile",
"threaded": true,
"typeId": "PartDesign::Hole",
"volume": 3842.92036732051
},
{
"diameter": 5.026,
"edges": 75,
"faces": 36,
"id": "iso-m6-modeled-thread",
"modeled": true,
"mutation": {
"before": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 5.026
},
"shape": {
"area": 1791.0956620316247,
"bounds": {
"max": [
20,
20,
10.5625
],
"min": [
0,
0,
0
]
},
"brepSha256": "6affadc3a81dcbbe31ed1dc1e3539abd7b2fd3b280773d2f4445076ff5732fce",
"edges": 75,
"faces": 36,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 42,
"volume": 3820.1907618181585
}
},
"brepStable": true,
"edited": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 6.5
},
"shape": {
"area": 1763.362817986669,
"bounds": {
"max": [
20,
20,
10
],
"min": [
0,
0,
0
]
},
"brepSha256": "a8ad05315c3d555a9ad9b764e243b4001b56401e9fab846aeb145ceb0fea42f6",
"edges": 15,
"faces": 8,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 10,
"volume": 3734.5354207716614
}
},
"familyId": "PartDesign::Hole",
"featureName": "Hole",
"parameterChanged": true,
"propertyPath": "Diameter",
"restored": {
"parameterSnapshot": {
"unit": "Unit: mm (1,0,0,0,0,0,0,0) [Length]",
"value": 5.026
},
"shape": {
"area": 1791.0956620316247,
"bounds": {
"max": [
20,
20,
10.5625
],
"min": [
0,
0,
0
]
},
"brepSha256": "6affadc3a81dcbbe31ed1dc1e3539abd7b2fd3b280773d2f4445076ff5732fce",
"edges": 75,
"faces": 36,
"shapeType": "Compound",
"solids": 1,
"valid": true,
"vertices": 42,
"volume": 3820.1907618181585
}
},
"restoredExactly": true,
"restoredGeometrically": true,
"schemaVersion": 1,
"shapeChanged": true,
"status": "pass"
},
"passed": true,
"properties": [
"AddSubShape",
"AllowMultiFace",
"BaseFeature",
"BaseProfileType",
"CustomThreadClearance",
"Depth",
"DepthType",
"Diameter",
"DrillForDepth",
"DrillPoint",
"DrillPointAngle",
"ExpressionEngine",
"HoleCutCountersinkAngle",
"HoleCutCustomValues",
"HoleCutDepth",
"HoleCutDiameter",
"HoleCutType",
"Label",
"Label2",
"Midplane",
"ModelThread",
"Placement",
"PreviewShape",
"Profile",
"Refine",
"Reversed",
"Shape",
"ShapeMaterial",
"Suppressed",
"SuppressedShape",
"Tapered",
"TaperedAngle",
"ThreadClass",
"ThreadDepth",
"ThreadDepthType",
"ThreadDiameter",
"ThreadDirection",
"ThreadFit",
"ThreadSize",
"ThreadType",
"Threaded",
"UpToFace",
"UpToFace2",
"UpToShape",
"UpToShape2",
"UseCustomThreadClearance",
"Visibility",
"_Body",
"_ElementMapVersion"
],
"solids": 1,
"status": "Valid",
"threadClass": "4G",
"threadDepth": 6,
"threadDepthType": "Dimension",
"threadDiameter": 6,
"threadDirection": "Left",
"threadFit": "Medium",
"threadPitch": 1,
"threadSize": "M6x1.0",
"threadType": "ISOMetricProfile",
"threaded": true,
"typeId": "PartDesign::Hole",
"volume": 3820.1907618181585
},
{
"expected": "rejected",
"id": "mirrored-missing-reference",
"inputClass": "valid-original-missing-transform-reference",
"observed": "rejected",
"originals": [
"Boss"
],
"passed": true,
"shapeNull": true,
"staleShapePreserved": false,
"state": [
"Touched",
"Invalid"
],
"status": "No mirror plane reference specified",
"transformations": [],
"typeId": "PartDesign::Mirrored"
},
{
"expected": "rejected",
"id": "multitransform-missing-reference",
"inputClass": "valid-original-missing-transform-reference",
"observed": "rejected",
"originals": [
"Boss"
],
"passed": true,
"shapeNull": false,
"staleShapePreserved": true,
"state": [
"Touched",
"Invalid"
],
"status": "Shape index 999 out of bound 12",
"transformations": [
"PartDesign::LinearPattern"
],
"typeId": "PartDesign::MultiTransform"
},
{
"expected": "rejected",
"id": "linearpattern-missing-reference",
"inputClass": "valid-original-missing-transform-reference",
"observed": "rejected",
"originals": [
"Boss"
],
"passed": true,
"shapeNull": true,
"staleShapePreserved": false,
"state": [
"Touched",
"Invalid"
],
"status": "Shape index 999 out of bound 12",
"transformations": [],
"typeId": "PartDesign::LinearPattern"
},
{
"expected": "rejected",
"id": "polarpattern-missing-reference",
"inputClass": "valid-original-missing-transform-reference",
"observed": "rejected",
"originals": [
"Boss"
],
"passed": true,
"shapeNull": true,
"staleShapePreserved": false,
"state": [
"Touched",
"Invalid"
],
"status": "No axis reference specified",
"transformations": [],
"typeId": "PartDesign::PolarPattern"
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"schemaVersion": 1,
"status": "pass",
"summary": {
"acceptedEmpty": 0,
"cases": 10,
"failureCases": 4,
"failurePassed": 4,
"passed": 10,
"rejected": 4,
"successCases": 6,
"successPassed": 6
},
"tolerance": 1e-7
}

View File

@@ -0,0 +1,594 @@
{
"baselineId": "freecad-1.1.1-sketcher-constraint-oracle",
"classificationCases": [
{
"conflicting": [],
"constraintTypes": [
"Horizontal",
"Distance"
],
"degreesOfFreedom": 3,
"driving": false,
"expected": "reference",
"fullyConstrained": false,
"id": "reference-dimension",
"inputValue": 99,
"malformed": [],
"measuredValue": 77.98445020149762,
"observed": "reference",
"partiallyRedundant": [],
"redundant": [],
"solveStatus": 0
},
{
"conflicting": [],
"constraintTypes": [
"Distance",
"Distance"
],
"degreesOfFreedom": 3,
"expected": "redundant",
"fullyConstrained": false,
"id": "redundant-dimension",
"malformed": [],
"observed": "redundant",
"partiallyRedundant": [],
"redundant": [
2
],
"solveStatus": -2,
"values": [
5,
5
]
},
{
"conflicting": [
1,
2
],
"constraintTypes": [
"Distance",
"Distance"
],
"degreesOfFreedom": 3,
"expected": "conflicting",
"fullyConstrained": false,
"id": "conflicting-dimension",
"malformed": [],
"observed": "conflicting",
"partiallyRedundant": [],
"redundant": [],
"solveStatus": -3,
"values": [
5,
8
]
}
],
"failureCases": [
{
"addResult": null,
"constraintType": "Coincident",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "coincident-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "Horizontal",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "horizontal-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "Vertical",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "vertical-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "Parallel",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "parallel-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "Tangent",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "tangent-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "Distance",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "distance-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "DistanceX",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "distance-x-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "DistanceY",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "distance-y-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "Angle",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "angle-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "Perpendicular",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "perpendicular-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "Radius",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "radius-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "Equal",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "equal-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "PointOnObject",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "point-on-object-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "Symmetric",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "symmetric-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "InternalAlignment",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "internal-alignment-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "SnellsLaw",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "snells-law-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "Block",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "block-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "Diameter",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "diameter-invalid-reference",
"observed": "failure"
},
{
"addResult": null,
"constraintType": "Weight",
"error": "Constraint has invalid indexes",
"errorType": "IndexError",
"expected": "failure",
"id": "weight-invalid-reference",
"observed": "failure"
}
],
"freecadVersion": "1.1.1",
"gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d",
"revision": "14556 (Git)",
"schemaVersion": 1,
"status": "pass",
"successCases": [
{
"conflicting": [],
"constraintType": "Coincident",
"constraintTypes": [
"Coincident"
],
"degreesOfFreedom": 6,
"expected": "success",
"fullyConstrained": false,
"id": "coincident-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "Horizontal",
"constraintTypes": [
"Horizontal"
],
"degreesOfFreedom": 3,
"expected": "success",
"fullyConstrained": false,
"id": "horizontal-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "Vertical",
"constraintTypes": [
"Vertical"
],
"degreesOfFreedom": 3,
"expected": "success",
"fullyConstrained": false,
"id": "vertical-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "Parallel",
"constraintTypes": [
"Parallel"
],
"degreesOfFreedom": 7,
"expected": "success",
"fullyConstrained": false,
"id": "parallel-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "Tangent",
"constraintTypes": [
"Tangent"
],
"degreesOfFreedom": 5,
"expected": "success",
"fullyConstrained": false,
"id": "tangent-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": -2.220446049250313e-16,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "Distance",
"constraintTypes": [
"Distance"
],
"degreesOfFreedom": 3,
"expected": "success",
"fullyConstrained": false,
"id": "distance-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "DistanceX",
"constraintTypes": [
"DistanceX"
],
"degreesOfFreedom": 3,
"expected": "success",
"fullyConstrained": false,
"id": "distance-x-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "DistanceY",
"constraintTypes": [
"DistanceY"
],
"degreesOfFreedom": 3,
"expected": "success",
"fullyConstrained": false,
"id": "distance-y-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "Angle",
"constraintTypes": [
"Angle"
],
"degreesOfFreedom": 3,
"expected": "success",
"fullyConstrained": false,
"id": "angle-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "Perpendicular",
"constraintTypes": [
"Perpendicular"
],
"degreesOfFreedom": 7,
"expected": "success",
"fullyConstrained": false,
"id": "perpendicular-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "Radius",
"constraintTypes": [
"Radius"
],
"degreesOfFreedom": 2,
"expected": "success",
"fullyConstrained": false,
"id": "radius-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "Equal",
"constraintTypes": [
"Equal"
],
"degreesOfFreedom": 7,
"expected": "success",
"fullyConstrained": false,
"id": "equal-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "PointOnObject",
"constraintTypes": [
"PointOnObject"
],
"degreesOfFreedom": 5,
"expected": "success",
"fullyConstrained": false,
"id": "point-on-object-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": -1.1102230246251565e-16,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "Symmetric",
"constraintTypes": [
"Symmetric"
],
"degreesOfFreedom": 4,
"expected": "success",
"fullyConstrained": false,
"id": "symmetric-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 1.1102230246251565e-16,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "InternalAlignment",
"constraintTypes": [
"InternalAlignment",
"InternalAlignment",
"InternalAlignment",
"InternalAlignment"
],
"degreesOfFreedom": 5,
"expected": "success",
"fullyConstrained": false,
"id": "internal-alignment-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "SnellsLaw",
"constraintTypes": [
"Coincident",
"PointOnObject",
"SnellsLaw"
],
"degreesOfFreedom": 8,
"expected": "success",
"fullyConstrained": false,
"id": "snells-law-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "Block",
"constraintTypes": [
"Block"
],
"degreesOfFreedom": 0,
"expected": "success",
"fullyConstrained": true,
"id": "block-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "Diameter",
"constraintTypes": [
"Diameter"
],
"degreesOfFreedom": 2,
"expected": "success",
"fullyConstrained": false,
"id": "diameter-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
},
{
"conflicting": [],
"constraintType": "Weight",
"constraintTypes": [
"InternalAlignment",
"Weight",
"InternalAlignment",
"InternalAlignment",
"InternalAlignment",
"Equal",
"InternalAlignment",
"InternalAlignment"
],
"degreesOfFreedom": 10,
"expected": "success",
"fullyConstrained": false,
"id": "weight-success",
"malformed": [],
"observed": "success",
"partiallyRedundant": [],
"redundant": [],
"residual": 0,
"solveStatus": 0
}
],
"summary": {
"classificationCases": 3,
"classificationPassed": 3,
"constraintTypes": 19,
"failureCases": 19,
"failurePassed": 19,
"successCases": 19,
"successPassed": 19
},
"tolerance": 1e-7
}

Some files were not shown because too many files have changed in this diff Show More