Metadata-Version: 2.4
Name: forgecertify
Version: 1.0.0
Summary: The open standard for CAD geometry kernel certification — 2,223 tests, signed results, 8 kernel adapters
Author-email: SKYFIRE Systems <certify@skyfiresystems.com>
License: MIT
Project-URL: Homepage, https://forgecertify.org
Project-URL: Repository, https://github.com/skyfire-systems/forgecertify
Project-URL: Issues, https://github.com/skyfire-systems/forgecertify/issues
Keywords: CAD,geometry,kernel,certification,B-rep,NURBS,testing
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pytest>=7.4
Requires-Dist: pytest-timeout>=2.2
Requires-Dist: numpy>=1.24
Requires-Dist: cryptography>=41.0
Provides-Extra: manifold3d
Requires-Dist: manifold3d>=2.4; extra == "manifold3d"
Provides-Extra: ocp
Requires-Dist: pythonocc-core>=7.7; extra == "ocp"
Provides-Extra: cadquery
Requires-Dist: cadquery>=2.4; extra == "cadquery"
Provides-Extra: dev
Requires-Dist: pytest-json-report>=1.5; extra == "dev"
Requires-Dist: black>=24.0; extra == "dev"
Requires-Dist: ruff>=0.4; extra == "dev"
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: twine>=5.0; extra == "dev"
Dynamic: license-file

# 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.

```bash
pip install forgecertify
forgecertify run --kernel forgekernel
```

→ **[forgecertify.org](https://forgecertify.org)**

---

## 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

```bash
# 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

1. **Run** — `forgecertify run` invokes all 2,223 tests via your adapter
2. **Sign** — results are signed with your Ed25519 private key
3. **Submit** — upload the signed JSON at [forgecertify.org/certify](https://forgecertify.org/certify)
4. **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](https://forgecertify.org)
