ForgeCertify
The open standard for CAD geometry kernel certification.
Run 2,223 geometry tests against any B-rep kernel and receive a cryptographically signed result you can publish, audit, and reproduce.
pip install forgecertify
forgecertify run --kernel forgekernel
What it tests
| Suite | Tests | Coverage |
|---|---|---|
| Boolean operations | 412 | Union, intersection, subtraction across degenerate and near-tangent geometry |
| B-rep topology | 387 | Vertex/edge/face/shell integrity, winding order, orientation |
| NURBS surfaces | 298 | Degree, knot vectors, G0/G1/G2 continuity, trimmed NURBS |
| Healing & repair | 241 | Gap filling, duplicate face removal, self-intersection repair |
| Topological naming | 196 | Persistent face/edge identity across edits — all 19 known failure modes |
| Import/export fidelity | 318 | STEP AP203/214/242, IGES 5.3, DXF, native .SFC round-trips |
| Direct modelling | 174 | Push/pull, move edge, offset, taper, history-free ops |
| Tolerance model | 197 | Chord height, angular tolerance, floating-point edge cases |
Total: 2,223 tests · 91 test files · 0 failures on ForgeKernel
Quick start
# Install
pip install forgecertify
# List available kernel adapters
forgecertify kernels
# Run the full suite against ForgeKernel (reference implementation)
forgecertify run --kernel forgekernel --output ./results
# Run against manifold3d (requires: pip install manifold3d)
forgecertify run --kernel manifold3d
# Run against OpenCASCADE (requires: conda install -c conda-forge pythonocc-core)
forgecertify run --kernel ocp
# Run only fast tests
forgecertify run --kernel forgekernel -m "not slow"
# Verify a result file signature
forgecertify verify results/forgecertify-result-forgekernel.json
# Generate a signing keypair for your own results
forgecertify keygen --out-prefix my_kernel
Kernel adapters
ForgeCertify ships with adapters for 8 kernels:
| Kernel | Tier | Install |
|---|---|---|
| ForgeKernel | PRO (reference) | bundled |
| manifold3d | COMMUNITY | pip install manifold3d |
| OCP / OCCT | PRO | conda install -c conda-forge pythonocc-core |
| CadQuery | PRO | pip install cadquery |
| CGAL | COMMUNITY | conda install -c conda-forge cgal |
| FreeCAD | PRO | conda install -c conda-forge freecad |
| Blender | COMMUNITY | pip install bpy |
| Parasolid | PRO (stub) | Siemens licence required |
To certify your own kernel, implement KernelAdapter (see forgecertify/adapters/base.py) and pass --kernel your_module.
How certification works
- Run —
forgecertify runinvokes all 2,223 tests via your adapter - Sign — results are signed with your Ed25519 private key
- Submit — upload the signed JSON at forgecertify.org/certify
- Publish — results are verified and added to the public ledger
Nothing is uploaded automatically. You own your results.
License
MIT © 2026 SKYFIRE Systems · forgecertify.org
Metadata
Release files for forgecertify 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| forgecertify-1.0.0.tar.gz | 351.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| forgecertify-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 778.5 kB
Release files / forgecertify-1.0.0.tar.gz
| Download URL | forgecertify-1.0.0.tar.gz |
|---|---|
| Size | 351.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
83184eac14d4c7bc76d1ed911882fa051aa66108d8359220deb326e4bff0337a
|
|
BLAKE2b-256 checksum How to use checksums |
d076bfed55286ec39fbcf6d1943457fd6cbc9ab75431287bae75a75dc9dc85a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|
Release files / forgecertify-1.0.0-py3-none-any.whl
| Download URL | forgecertify-1.0.0-py3-none-any.whl |
|---|---|
| Size | 427.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
966539ac5bf5d3430e04be27b672548ae1eccdff36fe8d7554da9e9a0e060b4a
|
|
BLAKE2b-256 checksum How to use checksums |
175eca37df45a48f4e6500c40f2a510048ced27ecc9d337d1f27383940897805
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|