# NativeCAD 0.25.0 "Glover" — Creo, CATIA, Inventor assembly, JT and Rhino import, extrude end conditions, compressible wind tunnel, a B-rep gate on strict STEP export

**185 tools, one more than 0.24.0 (`cad_turbomachine`).** The command schema moves from 1.65.0 to 1.68.0: `wind_tunnel` `regime` and `compressible` (1.66.0), `extrude` `extent` / `operation` / `of` and `pad` `extent` (1.67.0), and `sketch_end` `constraints` (1.68.0). Every document valid at 1.65.0 validates unchanged and builds the same geometry. Installs on 0.17.2 and later pick this release up through the self-update.

The whole-corpus import census (CADSB-100619) opened 15,287 of 17,120 user-facing files (89.3 %); a later full pass (CADSF-102533) counts 16,962 open and 462 failing. This is a 17k-file corpus, so it does not compare with 0.24.0's 437/654.

* **New and wider importers**: Creo `.prt` parts open as exact solids, rebuilt from PTC's own geometry records. Inventor `.iam` assemblies, JT (exact through its Parasolid segments) and Rhino `.3dm` (exact `ON_Brep`) import. CATIA V5 `.CATPart` / `.CATProduct` open as visualization meshes, viewable but not editable B-rep. SolidWorks parts are checked against their own display lists, and Parasolid charts inside `.sldprt` are read more faithfully (CADSF-102681, CADSF-102685). See the import coverage page for per-format rates.
* **Extrude and pad end conditions** (CADSF-101462): `extent` blind, symmetric, two sides, through all, up to next, up to face and up to body, with offset and exact taper (PLANE and CONICAL_SURFACE walls), and one `operation` selector (new / join / cut / intersect) whose results equal the separate booleans. Sketches keep their constraints and driving dimensions through `sketch_end` (CADSF-101461).
* **`cad_wind_tunnel` gains a compressible regime** (CADSF-101601).
* **A strict STEP export is gated on B-rep validity** (CADSF-102490, CADSF-102493). A mesh-derived face refuses before writing; after writing, a no-heal re-import that fails moves the file aside and refuses `export_brep_invalid`. An independent OCCT oracle cross-checks when it is installed; it now runs on cadquery-ocp 8.x as well as 7.x. `cad_verify {gate}` is the new pre-handoff gate.
* **New tool `cad_turbomachine`** (CADSF-101559): pumps, inducers, compressors and turbopumps over the turbomachinery library. A full `build:true` pump takes minutes and can outlast a client's 60 s request timeout; a fix is ticketed (CADSB-100794).
* **Booleans**: local general booleans chart only the faces that meet, curved trims become B-spline edges, the impeller blade-into-hub union builds (41 faces, was 4,557), tube joints and tube nets, and late fixes for near-flush unions, closed spline-loft sections, sub-resolution intersects, elbow rims and under-removed cuts.
* **Tessellation**: imported-solid volumes are checked against their display meshes, `maxTriangles` is honoured on single-level exports, rotated tori stay watertight at coarse chord, and an opt-in coarse display mesh follows the tolerance.
* **Modelling**: spline lofts align section start points by least twist (CADSB-100752).
* **Assembly checks**: every clashing pair in a clash report carries an `overlapRegion` (where the overlap is), and the fastener and OML checks read flat pins and enclosed volumes correctly.
* Also: a JSON-string `face` on `cad_pad` is parsed again; 48 METAL and foundry DFM rule codes gain remedies.

See `packages/mcp/CHANGELOG.md` under `## 0.25.0`.

## Gates

* **stdio smoke on the shipped `.mcpb`, `.plugin` and Cursor zip** (inside `plugin/build.js`, `build-plugin.js` and `build-cursor.js`): `cadsolver 0.25.0`, tools/list 185 (Cursor surface 26), staged git `e00cf2b86`, 0 fails. `mcp-smoke.js` gives 185 tools on both `dist/server.min.js` and `bin/nativecad-mcp.js`.
* **`dist/server.min.js` is byte-identical in the `.tgz`, `.mcpb` and `.plugin`** (sha256 `3480c9ad38446bbd…`); `npm pack` is 9 files, no `src/`, no `kernel/`.
* **Staged-kernel e2e** (`e2e/scenario-f-blend-smoke`, `e2e/scenario-g-conerim-smoke`): 27 and 20 assertions green. **Named gates**: `package` 329, `cadsf-1148` (private groups withheld) 58, `schema-sync` 596, `tool-list-budget` 32 (403,628 B public, 1,876 B headroom), `cadsb-1475` 225, `cadsf-1662` (server.json drift) 19, `mcp:sync` and `mcp:tools:check` clean, SBOM current (328 components).
* **MCP suite**: see `docs/releases/0.25.0.md` for the run, the files fixed for this release and what was left.

**Downloads:** https://featureboard.ai/nativecad/releases/nativecad-mcp-0.25.0.mcpb, https://featureboard.ai/nativecad/releases/nativecad-mcp-0.25.0.plugin and https://featureboard.ai/nativecad/releases/nativecad-mcp-0.25.0.tgz, plus the Cursor plugin https://featureboard.ai/nativecad/releases/nativecad-cursor.zip and the kernel library https://featureboard.ai/nativecad/releases/nativecad-kernel-0.3.2.tgz (unchanged; `latest.json` lists bytes and sha256).

```
dbd80f6c32ec665799f9d4fbe90b2550201464415999e138c1428b83ee4b2ebb  nativecad-mcp-0.25.0.mcpb
f2fcc1cf3a340b471d9dc4d785e503ae50e56966b88c87c78acf34fe9984749e  nativecad-mcp-0.25.0.plugin
fd0d23db3cf94ff67bea5b7edfe9588b3b9f676e76bfd208fece5782fc26e6ba  nativecad-mcp-0.25.0.tgz
ddbff515ae856b23af40afcfbb1bfab11757de16d50748d4b1c54d46ad8f3056  nativecad-kernel-0.3.2.tgz
```

**Build.** Built on WATERCOOLWAN (Windows) from `e00cf2b86` (master `660d63aee` plus the release-prep commits: version bump, CHANGELOG, SBOM, the release-gate fixes and the version embeds), `SOURCE_DATE_EPOCH` 1792995047 (its commit time). Kernel tree `9e4230ab5404` (1165 files); the `.plugin` is re-wrapped from the `.mcpb` (`build-plugin.js --from-mcpb`) and the `.tgz` is `npm pack` under the same environment. `latest.json` is signed with the host release key (`d2791510af4077e7`) and self-verified.
