Skip to main content
Legend: Yes is release-gated public behavior, Partial is usable with an explicitly documented weaker contract, and No is not advertised or not supported. Rows describe the 0.2.0 package; notes that name 0.1.1 record how that earlier release differed.

Modeling

No capability names extrude twist, scaleTop, or divisions. OCCT advertises plain extrude and passes capability preflight, including the mechanical-exact profile; a nonzero twist, a scaleTop other than [1, 1], or nonzero divisions then fails inside the kernel with KERNEL_ERROR, not KERNEL_CAPABILITY_MISSING. The 0.1.1 package tolerated a twist or scaleTop difference up to modelingTolerance (default 1e-7) and built a plain prism for it. OCCT applies a nonuniform scale through a general affine transform; 0.1.1 treated factors that agreed within modelingTolerance as uniform. Such results with curved faces are approximate, so their measured volume and area can differ from the analytic values: a cylinder scaled by [1, 2, 1] measures about 0.9% too large. In 0.1.1, stock OCCT transforms of shapes with complete topology history and a degenerate pole or apex edge, such as a sphere or pointed cone, failed; 0.2.0 transforms them. Shapes with partial history, such as imported shapes and stock Boolean results, skip that per-edge work and already transformed in 0.1.1. 0.2.0 adds kernel-neutral evaluator checks that run before the geometry kernel:
  • a revolve profile must lie on one side of the revolve axis, which it may touch; a crossing profile fails with FEATURE_INVALID (reason profile-crosses-axis)
  • each hole must clear its outer loop and every other hole by more than the sketch tolerance; touching, crossing, outside, or nested holes fail with SKETCH_NO_CLOSED_REGION
  • each straight sweep-path segment must be longer than the right-corner miter setbacks at its ends, and remote segments must clear the outer miter reach; otherwise the sweep fails with FEATURE_INVALID (reason path-clearance). See clearance and conditioning.

Topology

Construction and complete history are separate columns conceptually. A stock OCCT fillet may construct successfully while downstream semantic lineage is partial. Stock OCCT advertises both signature rows only from the bundled runtime that createOcctKernel() loads when neither wasm nor moduleFactory is supplied. An explicit wasm or moduleFactory without the owned facade ABI omits both, even with byte-identical stock files. The mechanical-exact preflight still passes, but a selector that uses a persistent topology reference then fails with KERNEL_CAPABILITY_MISSING.

Product structure and analysis

These evaluator-level features work with either kernel when all underlying geometry features are supported:
  • parameters and dimension-safe expressions
  • materials and density expressions
  • parts and fixed-placement nested assemblies
  • named configurations
  • instance suppression and part-material overrides
  • deterministic BOMs
  • geometric and physical mass properties
  • canonical documents, migration, validation, and hashing
  • design-impact and effective-feature hash reports
The nullable genus contract was added in 0.2.0. The 0.1.1 package typed genus as number and always returned one: OCCT derived a heuristic integer from the whole shape’s Euler characteristic, clamped at zero; Manifold reported its whole-mesh genus, which was negative for disjoint bodies; and assembly aggregates reported 0.
A numeric genus is exact for the backend representation. Unsupported results are explicit null; no backend or assembly path guesses, clamps, or silently converts the value.
Body-result classification was added in 0.2.0 and is not in 0.1.1.
The repository-staged Document v7 evaluator admits a Boolean result only when its kernel classifies it as single-body; explicit body sets remain the only multibody product boundary.

Exchange

The strong deterministic STEP paragraph and verified-import table below describe behavior added in 0.2.0. The exchange table above is unchanged from 0.1.1.
The bundled zero-override stock OCCT runtime additionally advertises single-product deterministic STEP export protocol v1: identical bytes require the same backend shape representation, resolved metadata/options, implementation, and exact runtime artifact. Explicit wasm, moduleFactory, and attested runtimes retain weak raw STEP and omit this envelope until separately qualified. An output that OCCT writes as several STEP products, such as a disjoint union, returns weak native bytes from a plain export("step") and fails with EXPORT_UNSUPPORTED (reason multiple-products) when STEP options are passed. This is narrower than geometric canonicalization and does not make STEP a portable artifact or cache format. Exact aggregate body-set and assembly STEP remains unsupported. The public imported-body workflow admits exactly one committed solid through stock OCCT’s strong document-body import capability: This is a separate opaque one-body document and Evaluator.evaluateImportedBody(...) method. It verifies a caller-supplied SHA-256 and byte-length commitment before parsing, fixes healing to none, and does not publish the broader Document v7 product model. Its JSON is a frozen, minimal Document v7 subset (schema https://invariantcad.dev/schema/document/v7, version 7) that a future public Document v7 will keep accepting. Only the imported-body functions read, write, and evaluate it: parseDocument, validateDocument, and the other general v1–v6 document APIs return IR_INVALID at /, and stringifyDocument, hashDocument, and cloneDocument throw TypeError. Multibody import, assembly import, repair/healing, automatic file/URL I/O, and approximate fallback remain unsupported.

Runtime coverage

Explicitly not in 0.2

  • drawings, dimensions, PMI, and GD&T
  • sheet metal and flat patterns
  • assembly mates, joints, motion, interference, and contact
  • CAM, toolpaths, posts, and stock simulation
  • CAE/meshing/solver workflows
  • general surfacing, NURBS editing, healing, and feature recognition
  • variable fillets/chamfers and advanced shell modes
  • complete transparent cross-run native shape caching
For the exact path-conditioning and topology-protocol boundaries behind this matrix, read the complete guide.