vernier-occt-sys becomes real: a cxx bridge to a C++ facade owning the shape registry behind opaque u64 handles. Every entry point catches all exceptions into status codes (an OCCT exception crossing the FFI is UB); arguments are gated on isfinite (infinity builds a plausible zero-volume ghost otherwise — the MISTAKES.md trap); shapes register only after summarization so failures cannot orphan registry entries. make_box/make_cylinder report topology counts and mass properties; translate/rotate and cut/fuse/common report complete per-face history rows (modified, affirmatively deleted, untracked — absence of history is not deletion), the untouched-face case OCCT omits, the result adjacency graph, fuzzy tolerance, and SimplifyResult unification. Planar normals account for indirect (left-handed) plane frames, which invert the axis-vs-orientation convention on mirrored geometry. vernier-kernel wraps it: OcctKernel, pinned SurfaceClass table that fails closed on unknown codes, golden fixtures for box and cylinder at 1e-9 relative with a 1e-9 mm absolute zero floor (integration noise at 1e-17 must not demand cross-build bit-stability), outwardness-proving normal tests, and end-to-end exception-path coverage. The selftest runs a real OCCT operation through the double-run determinism harness. CI installs the Debian OCCT dev packages. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
22 lines
745 B
YAML
22 lines
745 B
YAML
name: ci
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
|
|
jobs:
|
|
check:
|
|
runs-on: ubuntu-latest
|
|
container: rust:1.96
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
# lavapipe: software Vulkan for the headless screenshot tests.
|
|
# OCCT dev packages: headers + toolkits for the vernier-occt-sys facade.
|
|
- run: apt-get update && apt-get install -y --no-install-recommends mesa-vulkan-drivers libocct-foundation-dev libocct-modeling-data-dev libocct-modeling-algorithms-dev
|
|
- run: rustup component add rustfmt clippy
|
|
- run: cargo fmt --check
|
|
- run: cargo clippy --locked --all-targets -- -D warnings
|
|
- run: cargo test --locked --workspace
|
|
- run: cargo run --locked -p vernier-cli -- --selftest
|