Skip to content

Supported CAD shapes and edit chains ​

For new parts, use the modeling quickstart and single modeling API: cad.model(), named dimensions, convex sketches, extrusion, through-slab cut, one component-edge chamfer and withParameters/save/cad.load. Its supported/refused table and resource bounds are the primary authoring contract. The advanced native APIs below expose additional operations separately; they do not expand the modeling graph implicitly.

Historical native and compatibility evidence ​

The source-pinned capability records below preserve the earlier native and versioned-document handoffs. They are advanced compatibility references, not a requirement to select a version before creating a new part. Current modeling API verification and editor #1612 status are separated in the modeling evidence note.

Choose a supported input and output profile before composing operations. This is the compact capability entry point for the current exact-affine convex part family, not a replacement for the full CAD requirements, API reference or other CAD guides. Issue/API counts are not a completion percentage.

Evidence snapshot: 2026-10-12. The adopted source checkpoint is d71cb7dd. The separately executed sketch → cut → edit → reopen recipe deliberately keeps its tested 31b3033f source pin. Neither source exports nor emitted builds establish npm availability.

Choosing an authoring interface? The CAD text versus JSON/API coverage table identifies what Source0–3 can actually express. In particular, text @extrude creates an open Surface; the qualified sketch-to-Solid producer below is a different operation. Mass properties and display meshes are derived results.

Shapes, operations and refusal boundaries ​

All native coordinates are millimetres. Complete original source, native geometry, IDs, lineage and exact qualification remain authoritative; triangles and editor views are derived. Source links below pin the actual implementation or executable fixture, not a moving branch.

Task / input → outputSupported profile and hard boundaryExact adopted source / reproducible fixture
Qualify a convex planar Solid (#1589): complete planar Faces + explicit opposite whole-edge pairs → occupied Solid, graph and exact certificate4–12 facets; 3–8 edges/facet; ≤64 uses, 32 edges/vertices. Closed outward convex hull, exact stored affine lifts and connected incidence. Refuses holes, cavities, nonconvex/curved faces, partial joins and tolerance weldingQualifier · fixture
Extrude an exact affine sketch (#1592): successful constrained XY sketch + ordered original cycle + chart + height → qualified +Z prism and segment lineageOne simple strictly convex cycle of 3–8 lines, positive height ≤10000. Exact sketch success alone is insufficient: chart coverage, coplanarity, native XYZ/UV lift and budgets must also pass. Not arbitrary numerical-sketch extrusionProducer · runnable recipe
Split (#1591): qualified Solid + complete authored affine Surface → negative/positive Solid or explicit empty, section and lineageFinite cutter chart covers the section; each child must qualify unchanged. A retained child can feed another admitted split with distinct operation/prefix/IDs. Sloped parent facets allowed. Refuses nonrepresentable XYZ, nonexact UV, failed chart/conditioning and budget excessSource · serial split fixture
Intersection (#1594): two qualified convex planar Solids → qualified common volume or empty/lower-dimensional contactActual support clipping and exact qualification; demonstrated volume 2176 → edited 1408 mm³. Does not establish union, general subtraction, curved or nonconvex BooleanSource · fixture
Through-slab subtraction (#1595): parent + tool + two selected opposite parallel tool supports → fixed first/second Solid-or-empty rolesPositive support gap and proof that every other tool support covers the entire parent. Two separate outside components, not a fused Solid, cavity or arbitrary cutter. Failed coverage/exact lift refuses atomicallySource · fixture
One original edge chamfer (#1597): complete parent + both source-qualified incident uses + distance → retained Solid and removed wedgeStraight cardinal edge; perpendicular signed-axis adjacent supports; valence-three endpoints and perpendicular ends. Only selected endpoints removed; other vertices strictly beyond cut. Refuses diagonal selected support, touching/nonlocal cut and nonexact binding. Not multi-edge, fillet or arbitrary-angle chamferSource · fixture
Editable models v0/v1 (#1596/#1598): authored sketches, literals and recipes → evaluated result; serialized authored text → rebuilt resultv0 has two sketches, two prisms and slab subtraction. v1 adds optional chamfer on the original parent prism, with subtraction as a sibling. Full prior validation precedes selective candidate work. No implicit v0→v1 migration, derived caches, general feature graph or persistent namingv0 · v1 adoption · v1 fixture
Serial part v2 (#1607): two explicit coordinate-span prisms → slab → actual second-component chamferExactly six fixed roles; complete original-use provenance resolves one cardinal component edge. No first-component switch, arbitrary DAG or automatic v0/v1 migration. Finished Solid is chamfer.split.negative.solid; second subtraction component is intermediateHistorical workflow and complete JSON · v2 provider · accepted verification
Mass properties (#1599): one complete qualified Solid + uniform density → rational volume, centroid, moments, mass and inertia plus bounded binary64 conversionsDensity >0 and ≤1000000 kg/m³; fan budget 1–40. Outputs mm³, mm, kg, kg·m²; no implicit frame change. Refuses invalid parent/budgets. No heterogeneous/curved material, surface area or principal-axis promiseSource · fixture
Trimmed display mesh (#1602): complete qualified Solid → bounded CPU triangles with native facet/edge lineageUses actual facet trims, not support rectangles. Approximate presentation, never native Solid authority. GPU/Float32 projection and editor consumption are separate gatesNative source · retained observations

Which edit chains have evidence? ​

  • Executed manual recipe: pentagonal prism 7168 mm³ → slab remainder 5120 → wider-cut remainder 3328 → v0 serialize/reopen. A separate chamfer on the uncut prism gives 7104 → 7152 mm³ for distance 2 → 1. Immutable consumer receipt
  • Native serial split: block → sloped retained half → another plane split, with complete context and new IDs. The serial-split fixture above proves this bounded composition, not every subsequent cut
  • Native v1 edits: distance-only, tool-width, parent-height and admitted sketch-coordinate updates with full validation and refusal retention. Height 8 → 4 at distance 1 yields parent 3584, retained chamfer 3568 and slab components 1024 + 1536 mm³. Tool edits retain the sibling chamfer; they do not chamfer the cut parts
  • Native serial part v2: the actual second-component workflow now has accepted source/emitted/fresh-process evidence under #1607. At rearX 16/20 and height 8/6, finished second-component volumes are 3064 / 2296 / 3320 / 2488 mm³ with setback 1. Original face/use provenance resolves the edge; generated IDs are outputs
  • Not established: arbitrary component/edge selection, repeated arbitrary feature chains or a general feature DAG. V2 proves its fixed six-role chain, not those wider operations

Known counterexamples, not hidden tolerances ​

At the v1 pin, height 8 → 6 with distance 1 requires wall UV 5/6, which is not exactly binary64-representable in the existing normalized chart. The edit is refused atomically; an ordinary integer height is not sufficient for admission. An isolated rear X edit 16 → 20 also fails existing exact coplanarity/lift checks. Accepted height 4 and half-scale XY fixtures do not erase these failures. The native README retains the correction.

Explicit coordinate-span producer charts #1603 are now adopted, with source/emitted/cold verification. The earlier a5019338 snapshot marked this work UNPROVEN; that historical status is superseded for the explicit producer and v2 profiles only. The accepted height 6/rearX 20 combinations use authored coordinate-span charts and exact-affine admission. A combined rearX 20 / upperX 24 cut still refuses non-binary64 XYZ 80/3; height 10 with a height-8 tool still refuses incomplete coverage. No implicit chart search, snapping or tolerance repair is promised. Validators establish complete self-consistency, not external source authenticity.

Native, adopted, consumer and product evidence ​

LayerWhat the evidence establishesWhat remains separate
Native CPU#1589–#1599 have their bounded executable fixtures and per-issue receipts; v1 accepted native d854ff32 includes source/emitted/fresh-process flows. #1602 measured 26069346, retained at b3e5becf: build/source/emitted/cold pass; independent mesh-volume audit 7168 / 2048 / 3072 mm³#1607 adds source 53 stages/39 refusals, emitted 4, cold 4 and legacy 4/2 refusals, all accepted exit 0; no new engine campaign was run to write this page. One fixture is not arbitrary profile coverage
Exact adoptionRows above pin source adoption. v1 native d854ff32 → adopted 89459cfd; editor #1601 adopted 7baa5679. #1602 native 26069346 / evidence b3e5becf → adopted a5019338#1607 adopted 2d2a3197; #1608 editor v2 adopted faea0acc; #1609 concise v2 aliases adopted d71cb7dd. Adoption is not another runtime test or npm release
Consumer#1600 has the executed pinned source recipe. Editor #1601 source has worker-backed dimensions, controller checks and bounded native codec/build evidence. #1604 adopted trimmed-mesh consumption. #1608 adopted explicit v2 parameter controls, final-component preview/provenance and scoped CPU/controller/build checksPhysical editor interaction, browser/GPU pixels and native Download → fresh picker Open → re-edit remain UNRUN for this increment; code/CPU/controller adoption does not prove those product interactions
Product / current integrationThe existing guide is deployed separately from engine/npm publication. Exact-head CI has inherited CAD lint failures (27 recorded); focused source/build results are not a green whole-product claimThe full CAD product goal #503 is not established by these bounded results

Update this page when a verified feature handoff changes a supported input/output, refusal or evidence stage. Keep original pins and counterexamples; change the runnable recipe's source pin only after executing that recipe at the new pin. Roadmap ownership and future work remain in the existing Issues, not a second manual status registry.

Model a part with the current API · Historical serial-part v2 · Run the historical exact prism recipe · CAD overview · Limits

Local manual snapshot. Availability is stated on each package page.