# Native OCCT history provider This provider is compiled from the cached OCCT checkout selected by `OCCT_SOURCE_DIR` and exposes the native Boolean history API through Emscripten Embind. The provider keeps `TopoDS_Shape` handles and history queries in one WASM instance. A handle from `@bitbybit-dev/occt` must never be passed directly to this module because WebAssembly linear memories are independent. Build and verify it with the project wrapper: ```bash ./npmw run build:occt-history ./npmw run test:occt-history ``` The build also publishes the JS/WASM pair to `public/native/occt-history/`, which is the default URL used by `NativeOcctHistoryWorkerProvider`. The generated artifacts remain ignored; a clean checkout must run the build after restoring the pinned OCCT source and Emscripten toolchain. The exported `booleanHistory(object, tool, operation)` function supports `fuse`, `cut`, and `common`. It returns the native result shape, per-input `modified`/`generated`/`deleted` records, and capability flags. The provider also exports `shapeToStep(shape)` and `booleanHistoryFromStep(objectStep, toolStep, operation)`. The latter is the cross-WASM transport: Bitbybit exports STEP text, the native provider reads it with `STEPControl_Reader`, returns the Boolean result again as `resultStep`, and no linear-memory pointer crosses the boundary. The TypeScript boundary mapper is `mapNativeOcctHistoryRecords`; the reusable `createNativeOcctStepHistoryBridge` exports Bitbybit ShapeHandles to STEP and converts provider source names into document object IDs before calling `captureNativeTopologyHistory`. The direct handle API remains for calls that stay inside this single native WASM instance.