# NativeCAD 0.23.2 "Frühbeck de Burgos" — FreeCAD edits, PartDesign export, one pattern call

**182 tools, unchanged from 0.23.1.** The command schema is unchanged (1.64.0). Installs on 0.17.2 and later pick this release up through the self-update.

These fixes come from the cadbench.ai pilot (CADSF-102020), where NativeCAD failed the spur gear (frozen geometry), the two edit items, the lego brick (ran out of turns) and the flange (3 bodies).

* **`cad_edit_guarded` edits `.FCStd` files** (CADSF-102088). `inspect:true` lists the sketches, constraints, geometry and patterns. An edit sets a sketch constraint by index, name or `{type, value}`, sets sketch geometry, or changes a pattern's occurrences, angle or length. Only the changed element is rewritten and the edit is checked by a FreeCAD recompute, with a byte-identical rollback on failure.
* **`.FCStd` export maps to real PartDesign features** (CADSB-100441, CADSB-100451). The reply no longer fails with `E_INTERNAL` (the outputSchema declares `fcstd`). A spur gear exports as a full-profile sketch plus a Pad. Patterns export as `LinearPattern`, `PolarPattern` or `Mirrored`, and a round tube sweep as `AdditivePipe`. Each NativeCAD solid is one PartDesign Body, so the cadbench flange is one Body, not three.
* **Repeated features are one pattern call** (CADSB-100442). The MCP instructions and the plugin's `SKILL.md` send studs, ribs, vents, bolt circles and hole grids to `cad_hole_pattern`, `cad_feature_pattern` or `cad_pattern_copies`. The Harbor benchmark agent also carries an unattended-run contract (CADSF-102089, repo integration, not in the bundle).

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

## Gates

* **bundle-smoke over stdio, on the shipped `.mcpb` and `.plugin`.** `cadsolver 0.23.2`, tools/list 182, staged git a8fe2c42.
* **FreeCAD 1.1.0, on `.FCStd` files exported by the shipped `.mcpb` bundle over stdio** (one `doc.recompute()`, nothing touched by hand):
  * spur gear (module 2, 20 teeth, 10 mm face, 8 mm bore): one valid Body (Pad + Pocket), 10296.692 mm³, equal to NativeCAD's (relative difference 4e-15);
  * 100 x 100 x 10 mm plate with a 6 x Ø8 bolt circle (`cad_hole_pattern`): exactly one Body with Hole + `PolarPattern` (6 occurrences), 96984.071 mm³, equal to NativeCAD's;
  * `cad_edit_guarded` on that file, occurrences 6 -> 8: guard pass, re-opened and recomputed at 95978.761 mm³, a drop of 1005.310 mm³ = two Ø8 x 10 holes.

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

```
7faeda1dd401243d11fa23431eb54d5937109af5da612124e13450208b099603  nativecad-mcp-0.23.2.mcpb
a7ae8063a7dbf8cc65a52322600b78599eccac9e8cae5dfbe04aa50dd3506923  nativecad-mcp-0.23.2.plugin
a479f3a32ec03d5b7835afff0e42e599cd42242ebe6b60f2e9db6d1d724a6253  nativecad-mcp-0.23.2.tgz
ddbff515ae856b23af40afcfbb1bfab11757de16d50748d4b1c54d46ad8f3056  nativecad-kernel-0.3.2.tgz
```

**Build.** Built in the Cowork VM from origin/master `a8fe2c42`, with this release commit's version bump, CHANGELOG and install-line embeds applied, and `SOURCE_DATE_EPOCH` set to 1792346918 (that commit's time). `dist/server.min.js` (sha256 `dcdf8133…`) is identical in the `.tgz`, the `.mcpb` and the `.plugin`.
