Files
Vernier/.gitea/workflows/ci.yaml
T
NilsBriggenandClaude Fable 5 7fa21a1f2a feat: OCCT facade — primitives, transforms, booleans with full history
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>
2026-08-08 15:37:44 +02:00

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