Detect clashes for one rule. groupA/groupB are GLOBAL element indices;
groupB === null means a self-clash within groupA. Returned records carry
GLOBAL element indices. maxPairs caps candidate pairs (Infinity = no cap).
Optionalsignal: AbortSignalOptionalonProgress: (done: number, total: number) => voidRelease any resources (e.g. a WASM session). Optional.
WASM geometry kernel: ingests element geometry into a Rust
ClashSession(flat arenas) and runs each rule's broad + narrow phase in Rust. Produces the sameNarrowRecords asTsKernel— the orchestrator above is identical, so the two engines are differentially comparable.Any per-element
transformis baked into the world-space arena here, because the Rust kernel consumes world-space geometry directly (no transform path).