# NativeCAD 0.14.1 "Sawallisch" — the hand-to-a-neighbour build

**142 tools — two added since 0.14.0: `cad_gear` (CADSF-1834) and `cad_print_in_place_check` (CADSF-1835); nothing removed or renamed.** Command schema 1.27.0, 81 document operations.

0.14.0 put the Bambu Lab X1 Carbon print pipeline on the tool surface. 0.14.1 is the build you can hand to someone who has the printer and nothing else, and it exists for four reasons:

1. **The unlicensed tier builds (CADSF-1663).** The 0.14.0 `.mcpb` refused `cad_box` — and so `cad_print_prep` — without a key, under a nine-tool allowlist. Now modelling, query, measurement, DFM, orientation, FEA and the evaluation loop run with no key, and only the ten tools that take geometry off the machine refuse `E_LICENSE_REQUIRED`: `cad_export_body`, `cad_save`, `cad_restore`, `cad_versions`, `cad_import`, `cad_assembly_import`, `cad_mesh_to_brep`, `cad_mesh_payload`, `cad_quote_payload`, `cad_quote_submit`. A print still needs a key (the pipeline exports), and the free maker key is one e-mail away. `details.allowedWithoutKey` is gone; read `details.deniedWithoutKey`.
2. **`tools/list` is back under budget (CADSB-1273).** The four assertions 0.14.0 carried red are green at 142 tools: redundant field prose is no longer published, `dedupeSchema` folds the most profitable repeated subtree (`cad_face_blend` 12,307 → 4,848 B, no prose touched), `cad_export_body`'s 15-byte field stubs are gone (18,734 → 13,157 B, inside its 16 KiB exception), and the per-tool budget tightens itself over 3 / 6 KiB of schema. The total line is re-based to 388 KiB with the measured floor recorded on the ticket; the 400 KiB absolute ceiling stands.
3. **Every `x1c_*` verdict has a remedy (CADSB-1269, CADSF-1835).** The twenty single-body `fdm_x1c` rules and the six `x1c_pip_*` codes all answer in `ops/verdictRemedies.js` / `docs/VERDICT_REMEDIES.md`, so the design loop (`tools/design_loops/fdm_x1c.js`) converges on the pack's own advice instead of the two remedies it had. The `fdm_x1c` knowledge pack is published to `data/dfm/dist/` and `web/dfm-knowledge.html` (CADSF-1816).
4. **The walkthrough ships with the release (CADSF-1878).** `docs/PRINT_WITH_CLAUDE.md`, rendered at https://featureboard.ai/nativecad/web/print.html: checklist, install, three first prompts, what `cad_print_prep` does stage by stage, how to read `method:"slice"` vs `"estimate"` and a `dfm_blocked` refusal, printing through Bambu Studio or Bambu Connect, a troubleshooting table keyed on the refusal codes. LAN Developer Mode is deliberately outside the guide — the `.mcpb` does not ship `packages/print`, so `mode:"lan"` refuses `print_deps_missing` there and `mode:"connect"` is the path. The install dialog gains two OPTIONAL fields for that reader: **Bambu Studio** (`BAMBU_STUDIO_BIN`) and **Bambu Studio resources folder** (`BAMBU_STUDIO_RESOURCES`); blank, or the unexpanded `${user_config.…}` template a host may hand over (the CADSB-515 shape), reads as unset and the search falls through to `PATH` and the well-known locations. `server.json` declares the same two for a registry install.

## Also on the surface since 0.14.0

- `cad_gear` (CADSF-1834): involute spur / helical / herringbone gears and a planetary set as an executor op (`ops/gear.js`, `ops/helicalSweep.js`), in the command schema with its validator; `docs/GEARS.md`.
- `cad_print_in_place_check` (CADSF-1835): sweeps a gear train through its motion and measures every body pair against the X1C's printed-clearance floor, the fusion floor and the one-layer Z gap before a slice; says whether a body can escape (then the part was never print-in-place); `x1c_pip_gap / fuse / zgap / escape / interference / ratio`.
- CADSB-1302 (executor report assembler, `ops/transform.js`), CADSF-1656 (pick-anywhere placement invariants I1–I9; two known-red pinned to CADSB-1312), CADSF-1672 (a flush-at-both-ends through cut stays analytic), CADSF-1675 (piping pack re-pinned), CADSF-1831 (browser build-orientation panel; `cad_build_orientation` leaves the parity exceptions), CADSF-1848 (browser padstack panel; `cad_padstack` leaves them), CADSF-1836 (Labs pendant part 3).

## Still a human's job on the X1C chain

Unchanged from 0.14.0 and still stated in full in `docs/PRINT_PIPELINE.md`: install a slicer (never shipped); prove a real slice in Bambu Studio's preview; fill the ten-part estimator calibration; decide about Developer Mode, or press Print in Bambu Studio / Bambu Connect instead; supply IP, serial and access code at run time; run the live acceptance (CADSF-1778). **This release is what that acceptance will be run with.**

## Known reds carried

None on the release gates. `tests/test_cadsf-1656_ordering.js` carries two KNOWN-RED assertions pinned to CADSB-1312 by design (they fail the day the arms get promoted). `tests/test_cadsf-785.js` reports 14 `web/recon/*/viewer.html` pages with an unbalanced comment count that predate this release and are not in the bundle.

## Gates

bundle-smoke over stdio on the shipped `.mcpb` (initialize 0.14.1, tools/list 142, `cad_server_info` staged git `266c8772` tree `e1142f576b75` 387 files, `cad_box` / `cad_preview_body` / `cad_mass_properties` run UNLICENSED, `cad_export_body` refused by name, no file written) · package · cadsf-1148 · cadsf-1285 · schema-sync · cadsf-1662 · extensions · stage-kernel-guard · tool-list-budget · cadsb-1273 · license-gate · license · contest · `stage-kernel.js --check` clean (95 entry modules, 406-file closure, 4 verbatim assets) · `check_test_wiring` OK.

**Downloads are served from featureboard.ai** (see `latest.json` for bytes + sha256):
https://featureboard.ai/nativecad/releases/nativecad-mcp-0.14.1.mcpb
Built from the wave-8 landing (`266c8772` on origin/master `bd7e2b09`, which carries Codemaster-De's CADSB-1031/1078/1079 tessellator and topology fixes; re-parented onto `eb7e83c1` as `de72027b` before the push — same kernel tree `e1142f576b75`, so the `stagedKernel.gitSha` the bundle reports is the pre-rebase sha of the identical tree) with `SOURCE_DATE_EPOCH` pinned to its commit time (1790140344), esbuild 0.28.1; no registry access, so the `.mcpb` was packed by the offline `plugin/lib/zip.js` writer. `dist/server.min.js` sha256 `abd80071…` is identical in the `.tgz`, the `.mcpb` and `packages/mcp/dist`.
