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 → output | Supported profile and hard boundary | Exact adopted source / reproducible fixture |
|---|---|---|
| Qualify a convex planar Solid (#1589): complete planar Faces + explicit opposite whole-edge pairs → occupied Solid, graph and exact certificate | 4–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 welding | Qualifier · fixture |
| Extrude an exact affine sketch (#1592): successful constrained XY sketch + ordered original cycle + chart + height → qualified +Z prism and segment lineage | One 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 extrusion | Producer · runnable recipe |
| Split (#1591): qualified Solid + complete authored affine Surface → negative/positive Solid or explicit empty, section and lineage | Finite 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 excess | Source · serial split fixture |
| Intersection (#1594): two qualified convex planar Solids → qualified common volume or empty/lower-dimensional contact | Actual support clipping and exact qualification; demonstrated volume 2176 → edited 1408 mm³. Does not establish union, general subtraction, curved or nonconvex Boolean | Source · fixture |
| Through-slab subtraction (#1595): parent + tool + two selected opposite parallel tool supports → fixed first/second Solid-or-empty roles | Positive 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 atomically | Source · fixture |
| One original edge chamfer (#1597): complete parent + both source-qualified incident uses + distance → retained Solid and removed wedge | Straight 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 chamfer | Source · fixture |
| Editable models v0/v1 (#1596/#1598): authored sketches, literals and recipes → evaluated result; serialized authored text → rebuilt result | v0 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 naming | v0 · v1 adoption · v1 fixture |
| Serial part v2 (#1607): two explicit coordinate-span prisms → slab → actual second-component chamfer | Exactly 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 intermediate | Historical 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 conversions | Density >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 promise | Source · fixture |
| Trimmed display mesh (#1602): complete qualified Solid → bounded CPU triangles with native facet/edge lineage | Uses actual facet trims, not support rectangles. Approximate presentation, never native Solid authority. GPU/Float32 projection and editor consumption are separate gates | Native 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
| Layer | What the evidence establishes | What 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 adoption | Rows 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 checks | Physical 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 integration | The 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 claim | The 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